我在 Windows 机器上使用 Pageant 来管理我的 SSH 密钥。我以前使用过 ssh-agent,但由于 Vagrant 在 vagrant up/provisioning 上不使用 ssh 而是使用 net-ssh,因此我需要在 Pageant 中拥有我的密钥才能在那里使用代理转发。
我大量使用我的 ~/.ssh/config 文件来配置主机快捷方式、它们应该使用的键等等。
pageant 使用的 .ppk 文件与 ssh 客户端不兼容,所以我无法将其放入 IdentityFile 指令中。
当然,我也可以让我的 ssh-agent 运行,但是这会使所有内容重复。
如何将 pageant 与我的 ssh 客户端结合起来?
澄清一下我想做的事情:
- 将我的 SSH 密钥添加到 Pageant
- 配置[电子邮件保护]在 ~/.ssh/config 中为“myhost”
Host myhost
User calo
Hostname myhost.com
IdentityFile ~/.ssh/myhost
- 打开 git bash 并输入
ssh myhost
以连接到我的主机,而不必再次输入我的密码,因为它将从选美比赛中获取。
答案1
这是可以做到的。你需要:
- 创建名为的 Windows 环境变量
GIT_SSH
- 将路径设置为您的
plink.exe
值,对我来说它是:C:\Program Files\PuTTY\plink.exe
- 注销并登录(或重新启动计算机)
- 您应该已经完成了,您可以通过 git bash 命令确认您已经正确设置了变量:
(显示所有环境变量)$ export
答案2
使用https://github.com/benpye/wsl-ssh-pageant解决了这个问题。
添加
IdentityAgent SSH_AUTH_SOCK
到你的 .ssh/config
通过 Windows 设置添加用户环境变量:名称:SSH_AUTH_SOCK 值:\.\pipe\ssh-pageant
开始:wsl-ssh-pageant.exe --winssh ssh-pageant
现在,您可以通过 commandshell 或 powershell 中的 ssh 登录到您的主机。当然,pageant 必须已使用密钥运行。
答案3
我建议使用 Windows 中包含的 OpenSSH 客户端,它受到 Pageant 的支持。
- 使用参数启动 Pageant
--openssh-config
生成一个配置文件以包含在你的 SSH 配置中pageant.exe --openssh-config C:\Users\demouser\pageant.conf --encrypted C:\Users\demouser\.ssh\id_ed25519.ppk
:(--encrypted
使 Pageant 在第一次使用时(而不是启动时)要求输入密码) - 添加
Include
指令在您的%userprofile%\.ssh\config
:Include C:\Users\demouser\pageant.conf
- 更改
PATH
您的变量,%userprofile%\.bashrc
以便 Git Bash 使用 Windows 中包含的 OpenSSH 客户端:export PATH="/C/Windows/System32/OpenSSH/:$PATH"
现在,当您输入ssh somehost
Git Bash 时,Pageant 会询问您一次密码,并且在运行时会记住它。
答案4
我不确定这是否能解决您的使用案例,但在使用 Mercurial 时,使用 PuTTY 会话对我来说是有效的。
之前:我有一个可以正常工作的 Pageant 和一个可以正常工作的 ssh 密钥,我使用以下命令从 myhost 进行克隆
hg clone ssh://calo@myhost//home/hg/repo
后:
hg clone ssh://host_hg//home/hg/repo
为了实现这一点,我在 PuTTY 中创建了一个名为的已保存会话,host_hg
其中我将“自动登录用户名”设置为calo
。您可以通过右键单击工具栏中的 Pageant 图标并选择“新会话”来创建新会话。输入主机名和已保存会话名称。您会在左侧树中的“连接->数据”下找到字段“自动登录用户名”。不要忘记保存会话。
我猜测相当于IdentityFile
在 Connection->SSH->Auth 下找到的“用于身份验证的私钥文件”。