Visual Studio 代码和 Git 在我的 NAS 上阻止了我的 IP

Visual Studio Code and Git get my IP blocked on my NAS

我不知道这是 Visual Studio 代码或 Ubuntu 或 Git 或 SSH 或 Synology 的问题。因此,我在这里问这个问题,在我认为是万事通的网站上。

我有一台 Ubuntu 台式电脑和一台 Synology NAS(操作系统是 DSM)。我在NAS上安装了Git服务器。在 PC 上,我有一个使用 Git 的私人编程爱好项目。我在 NAS 上有一个 bare-repo,它充当项目的 Git 远程。遥控器是使用命令 git remote add origin ssh://gituser@192.168.XXX.XXX:/path/to/remote/repository/name.git 添加的。我在 PC 上创建了一个私有 public 密钥,并且 public-密钥已移至 NAS 的 gituser 路径 ~/.ssh/authorized_keys

在 PC 上,如果我手动 cd 进入 Git-project 文件夹并使用 git push,然后远程服务器询问我的 Synology 密码,我输入它,按 ENTER,一切正常。我还可以将遥控器克隆到我 PC 上的另一个位置,它可以正常工作。

但是,如果我启动 Visual Studio 代码并将项目作为文件夹打开,那么由于超过允许的最大失败登录尝试次数,我很快就会被 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 的内容,并验证 public 密钥是否已完整复制, 作为 一个 行(不是多行)

一旦命令行在不询问密码的情况下运行,那么您可以使用 VSCode 进行测试。

我确实设法使一切正常。我不确定是什么最终解决了这个问题,但我做了什么:

在我的 Synology NAS 上

我决定使用我的管理员帐户进行 Git 远程连接。

我在 /volume1/homes/adminaccount/volume1/homes/adminaccount/.ssh//volume1/homes/adminaccount/.ssh/authorized_keys 上使用了 sudo chmod 700

我编辑了 /etc/ssh/sshd_config 并取消了注释 #PubkeyAuthentication yes#AuthorizedKeysFile .ssh/authorized_keys

在我的 Ubuntu 电脑上

我编辑了我的 ~/.ssh/config,现在看起来像这样:

# My NAS
Host 192.168.XXX.XXX
  Port 12345
  Preferredauthentications publickey
  IdentityFile ~/.ssh/myrsakey

结果

似乎一切正常。我可以开始 Visual Studio 代码,处理项目并推送到远程,而不会被禁止我的 IP。

谢谢@VonC 指引我正确的方向。