git - Visual Studio Code 和 Git 在我的 NAS 上阻止了我的 IP
问题描述
我不知道这是否是 Visual Studio Code 或 Ubuntu 或 Git 或 SSH 或 Synology 的问题。因此,我在这里提出这个问题,在我认为是万事通的网站上。
我有一台 Ubuntu 台式电脑和一台 Synology NAS(操作系统是 DSM)。我已经在 NAS 上安装了 Git 服务器。在 PC 上,我有一个使用 Git 的私人编程爱好项目。我在 NAS 上有一个裸仓库,它充当项目的 Git 远程。遥控器是用命令添加的git remote add origin ssh://gituser@192.168.XXX.XXX:/path/to/remote/repository/name.git
。我在 PC 上创建了一个私钥-公钥,公钥已移至 NAS 到~/.ssh/authorized_keys
gituser 的路径。
在 PC 上,如果我手动cd
进入 Git-project 文件夹并使用git push
,那么远程服务器会询问我的 Synology 密码,我输入它,按 ENTER 并且一切正常。我也可以将遥控器克隆到我电脑上的另一个位置,它可以工作。
但是,如果我启动 Visual Studio Code 并将项目作为文件夹打开,那么由于超过了允许的最大失败登录尝试次数,我很快就会被 Synology NAS 禁止 IP。
所以问题是:这里出了什么问题,我该如何让它工作?
我猜这是因为 VSCode 尝试自动从远程获取可能的更新,但由于 DSM 需要密码而未能这样做。我试图在 NAS 上添加线路PasswordAuthentication no
,/etc/ssh/sshd_config
但这没有做任何事情。
解决方案
首先,尝试使用 SSH URL,例如:
ssh://gituser@192.168.XXX.XXX/path/to/remote/repository/name.git
^^^
no ':' if you are using ssh://
其次,确保您的密钥没有密码(ssh-keygen -P "" ...
)
第三,如果它没有密码,那么它不应该要求远程用户密码:仔细检查 的内容~gituser/.ssh/authorized_keys
,并验证公钥是否已完整复制,一行(而不是多行)
一旦命令行在不询问密码的情况下工作,您就可以使用 VSCode 对其进行测试。
推荐阅读
- swift - 在 UIScrollView 中滚动时如何裁剪 UIImage
- powershell - Jenkins 的 PowerShell 插件中没有输出
- c++ - 使用外部函数而不是包含定义该函数的标头
- excel - 在用户窗体初始化中突然出现不同的错误
- python - 如何在python中将字符串转换为null或Nan?
- c# - 注销时 ASP NET CORE 身份重定向到拒绝访问
- javascript - SVG 图像不显示
- node.js - 如何在返回外部函数之前等待内部函数完成?
- android - 如何从 Android 中的 XML 文件向 Google 地图添加标记
- java - Gson().tojson() 返回 {} 大括号