如何在 Windows 下将 ~/.ssh/config 文件与 Pageant 一起使用?

如何在 Windows 下将 ~/.ssh/config 文件与 Pageant 一起使用?

我在 Windows 机器上使用 Pageant 来管理我的 SSH 密钥。我以前使用过 ssh-agent,但由于 Vagrant 在 vagrant up/provisioning 上不使用 ssh 而是使用 net-ssh,因此我需要在 Pageant 中拥有我的密钥才能在那里使用代理转发。

我大量使用我的 ~/.ssh/config 文件来配置主机快捷方式、它们应该使用的键等等。

pageant 使用的 .ppk 文件与 ssh 客户端不兼容,所以我无法将其放入 IdentityFile 指令中。

当然,我也可以让我的 ssh-agent 运行,但是这会使所有内容重复。

如何将 pageant 与我的 ssh 客户端结合起来?

澄清一下我想做的事情:

  1. 将我的 SSH 密钥添加到 Pageant
  2. 配置[电子邮件保护]在 ~/.ssh/config 中为“myhost”
Host myhost
    User calo
    Hostname myhost.com
    IdentityFile ~/.ssh/myhost
  1. 打开 git bash 并输入ssh myhost以连接到我的主机,而不必再次输入我的密码,因为它将从选美比赛中获取。

答案1

这是可以做到的。你需要:

  1. 创建名为的 Windows 环境变量GIT_SSH
  2. 将路径设置为您的plink.exe值,对我来说它是:
    C:\Program Files\PuTTY\plink.exe
    
  3. 注销并登录(或重新启动计算机)
  4. 您应该已经完成​​了,您可以通过 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\configInclude C:\Users\demouser\pageant.conf
  • 更改PATH您的变量,%userprofile%\.bashrc以便 Git Bash 使用 Windows 中包含的 OpenSSH 客户端:export PATH="/C/Windows/System32/OpenSSH/:$PATH"

现在,当您输入ssh somehostGit 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 下找到的“用于身份验证的私钥文件”。

相关内容