我不知道这是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上创建了一个私有-公钥,并且该公钥已移至gituser的路径~/.ssh/authorized_keys
到NAS。
在PC上,如果我以手动方式cd
进入Git-project文件夹并使用git push
,则远程服务器会问我我的Synology密码,我输入该密码,然后按Enter,一切正常。我还可以将遥控器克隆到PC上的另一个位置,并且可以使用。
但是,如果我启动Visual Studio Code并以文件夹的形式打开该项目,则由于超出了失败登录尝试次数的最大允许数量,Synology NAS很快将IP禁止。
所以问题是:这里出了什么问题,我该如何解决?
我猜测是因为VSCode试图自动从远程获取可能的更新,但由于DSM需要密码而未能这样做。我试图将PasswordAuthentication no
行添加到NAS上的/etc/ssh/sshd_config
,但这没有任何作用。
答案 0 :(得分:1)
首先,尝试使用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
的内容,并验证公钥已被完整复制,如 one 行(不是多行)
一旦命令行运行而无需询问密码,则可以使用VSCode对其进行测试。
答案 1 :(得分:1)
我确实设法使一切正常。我不确定是什么最终解决了这个问题,但是我做了什么:
我决定将我的管理员帐户用于Git远程连接。
我在sudo chmod 700
和/volume1/homes/adminaccount
和/volume1/homes/adminaccount/.ssh/
上使用了/volume1/homes/adminaccount/.ssh/authorized_keys
。
我编辑了/etc/ssh/sshd_config
,但未修改#PubkeyAuthentication yes
和#AuthorizedKeysFile .ssh/authorized_keys
我编辑了~/.ssh/config
,现在看起来像这样:
# My NAS
Host 192.168.XXX.XXX
Port 12345
Preferredauthentications publickey
IdentityFile ~/.ssh/myrsakey
一切似乎都可行。我可以启动Visual Studio Code,在项目上工作并推送到远程,而不会导致IP被禁止。
感谢@VonC引导我朝正确的方向前进。