我有一个包含两个子树的存储库。 repo和子树repos位于私有synology git服务器上。通过ssh(putty / plink)完成通信。 我主要使用sourcetree(V1.8.3.0,在Windows 7专业版SP1 64位上使用嵌入式git V2.6.1),它工作正常。但是,我无法通过sourcetree接口添加/推/拉子树。
例如,(手动添加子树后),尝试拉出子树会出现以下错误。
git -c diff.mnemonicprefix=false -c core.quotepath=false subtree pull -P function --squash USER@IP:subtree-repo master
fatal: protocol error: bad line length character: USE
Access denied
Access denied
Access denied
Access denied
FATAL ERROR: Server sent disconnect message
type 2 (protocol error):
"Too many authentication failures for USER"
...
Completed with errors, see above.
将完全相同的命令复制并粘贴到sourcetree的git终端,询问我在IP上的密码,然后才能正常工作。
Others已经提出了身份验证问题,但我发现这不太可能,因为我可以使用子树回购就好(自己)。我也看了here,但无法找到任何提示。
有什么想法吗?
更新 2016-03-31:在Windows 8.1(64位),Sourcetree V1.8.3.0,嵌入式git V2.7.4
下确认了相同的行为更新 2016-04-01:出于好奇,我添加了对
的调用ssh -v USER@IP
到git-subtree脚本。这导致了一堆输出,其中重要的部分是(我相信)
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/LOCALUSER/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /c/Users/LOCALUSER/.ssh/id_dsa
debug1: Trying private key: /c/Users/LOCALUSER/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/LOCALUSER/.ssh/id_ed25519
debug1: Next authentication method: password
debug1: read_passphrase: can't open /dev/tty: No such device or address
所以我相信,正在发生的事情是:ssh正在尝试与服务器建立无密码连接,由于synology显然通过authorized_keys禁用了密码少的ssh-login,因此失败了。然后它回退到基于密码的身份验证,这也失败了,因为它无法打开终端。