我非常困惑。我试图阻止 tortoisegit 每次拉/推时提示我输入密码(我不介意每次登录 Windows 时都输入一次,但此后我希望它是自动的)。
我的 git 服务器通过官方的 Git Server 软件包在我的 Synology NAS 上运行。我通过以下方式克隆ssh://用户@服务器/foo/bar。
以下是我已做/尝试过的:
- 通过 Puttygen 创建了一对公钥和私钥。
- 启动 Putty 身份验证代理 (pageant) 并将我的私钥添加到其中。
- 创建了一个授权密钥服务器上的文件/根/.ssh/。我已尝试仅使用公钥文件的 Base64 编码部分,以及页眉
---- BEGIN SSH2 PUBLIC KEY ----
和相应的页脚。 - 设置 tortoisegit 以供使用TortoiseGitPLink 工具作为 SSH 客户端(我相信这是默认客户端)。我也尝试过选美比赛,但会导致错误:“无法加载此密钥(无法打开文件)”
系统仍提示我输入密码,而 Putty Agent 似乎没有以任何方式参与该过程(即使经过身份验证也没有密钥)。任何建议都将不胜感激。
答案1
确保您已遵循 ssh 密钥上的 heavyd 指示
Windows Git 和 TortoiseGit 需要在 Windows 中设置 2 个环境变量。
GIT_SSH=C:\Program Files\TortoiseGIT\bin\TortoiseGitPlink.exe
SVN_SSH=C:\Program Files\TortoiseGIT\bin\TortoiseGitPlink.exe
(如果不同,请替换为您的路径)
您还需要确保 PLINK_PROTOCOL 未被覆盖。否则,PLINK_PROTOCOL=ssh
进行这些更改后,请使用以下命令验证访问权限:
打开 Dos 命令窗口,输入命令 plink git@your git depot server name
如果返回 Git 存储库列表,则表示您正在与 Git 通信。
如果返回错误,您可能需要编辑 .ssh/config 和/或 etc/hosts windows 文件
答案2
您不想使用通过“保存公钥”按钮保存的公钥。您应该在 PuTTY Key Generator UI 中将顶部框中的文本复制到您的authorized_keys
文件中:
它应该被准确地复制,并且最终应该成为文件中的一行authorized_keys
。
另外,您是否正在使用ssh://root@server/foo/bar
来克隆您的存储库?如果没有,您需要确保将您的公钥添加到authorized_keys
正确用户的文件中。
答案3
将 Putty 生成的 OpenSSH 格式的 ssh 密钥添加到你的 Linux 账户,并测试是否可以登录 Github 或其他 Linux 服务器
将
id_rsa
和复制id_rsa.pub
到~/.ssh
文件夹。将文件的权限更改id_rsa
为400/600
使用chmod 600 ~/.ssh/id_rsa
https://stackoverflow.com/a/9270753/4752883检查是否正在使用ssh-agent`
ssh-agent
运行(eval $(ssh-agent -s) and start/restart
https://stackoverflow.com/a/17848593/4752883)添加
ssh
私钥至ssh-agent
:(ssh-add ~/id_rsa
https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#adding-your-ssh-key-to-the-ssh-agent)验证公钥是否已附加到您的帐户(https://help.github.com/articles/error-permission-denied-publickey/):。
ssh-add -l -E md5
输出应该是这样的2048 MD5:de:5d… /home/username/.ssh/id_rsa (RSA)
验证您是否可以使用
ssh
登录github
或其他服务器(https://help.github.com/articles/testing-your-ssh-connection/):输出应为ssh -T [email protected]
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
如果显示错误,例如
key_load_public: invalid format
,则表示您正在使用Puttygen
公钥格式。要更改OpenSSH
公钥版本,请按照以下步骤操作:(https://stackoverflow.com/a/44391850/4752883)