如何使用 Windows/git/tortoisegit/putty/Synology 设置 SSH 身份验证

如何使用 Windows/git/tortoisegit/putty/Synology 设置 SSH 身份验证

我非常困惑。我试图阻止 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文件中:

PuTTY 密钥生成器

它应该被准确地复制,并且最终应该成为文件中的一行authorized_keys

另外,您是否正在使用ssh://root@server/foo/bar来克隆您的存储库?如果没有,您需要确保将您的公钥添加到authorized_keys正确用户的文件中。

答案3

将 Putty 生成的 OpenSSH 格式的 ssh 密钥添加到你的 Linux 账户,并测试是否可以登录 Github 或其他 Linux 服务器

  1. id_rsa和复制id_rsa.pub~/.ssh文件夹。将文件的权限更改id_rsa400/600使用chmod 600 ~/.ssh/id_rsa https://stackoverflow.com/a/9270753/4752883

  2. 检查是否正在使用ssh-agent`ssh-agent运行(eval $(ssh-agent -s) and start/restarthttps://stackoverflow.com/a/17848593/4752883

  3. 添加ssh私钥至ssh-agent:(ssh-add ~/id_rsahttps://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#adding-your-ssh-key-to-the-ssh-agent

  4. 验证公钥是否已附加到您的帐户(https://help.github.com/articles/error-permission-denied-publickey/):。ssh-add -l -E md5输出应该是这样的2048 MD5:de:5d… /home/username/.ssh/id_rsa (RSA)

  5. 验证您是否可以使用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.

  6. 如果显示错误,例如key_load_public: invalid format,则表示您正在使用Puttygen公钥格式。要更改OpenSSH公钥版本,请按照以下步骤操作:(https://stackoverflow.com/a/44391850/4752883

相关内容