PS 5.1 中有没有办法重用PuTTY 代理密钥?
现在,细节。
要使用密钥代理,需要有一个持有密钥的代理(左框)和委托管理密钥的客户端应用程序(右框)。例如,客户端应用程序 C1=当然putty
可以使用它自己的代理 A1= pageant
。客户端应用程序 C2=winscp
知道如何直接使用 A1。
某些客户不能直接使用某些代理,但有一些代理可以弥补这一差距。例如,要将 A1 与 C3 一起使用,我需要 Proxy P1= ssh-pageant
,请参见下面的示例。这有助于将多个客户端的密钥集中在单个代理中。现在我的意思是为我的所有客户使用 A1(目前,只缺少 A1-C5 和 A1-C6)。
PS 5.1 中有没有办法重用相同的 PuTTY 代理密钥? (即,使用 A1 和 C5 的代理 Px)
可能有帮助: https ://superuser.com/a/1173570/245595
注意事项:
我没有尝试过,但它似乎
winssh-pageant
是将 A2 与直接理解 A1 的客户端应用程序链接起来的代理。我目前正在尝试在 PS 中使用与
ssh-pageant
msys2 相同的内容(它最终是一个 Windows 程序,并且通常它们确实有效),手动替换eval
msys2 中的功能(到目前为止没有运气,但我认为这是可以修复的) :
> cd <dir where ssh-pageant is>
> .\ssh-pageant -r -a "$env:USERPROFILE\tmp\.ssh-pageant-$env:USERNAME"
SSH_AUTH_SOCK='C:\Users\USER1\tmp\.ssh-pageant-USER1'; export SSH_AUTH_SOCK;
SSH_PAGEANT_PID=714; export SSH_PAGEANT_PID;
echo ssh-pageant pid 714;
> $env:SSH_AUTH_SOCK='C:\Users\USER1\tmp\.ssh-pageant-USER1'
> $env:SSH_PAGEANT_PID=714
> ssh myserver
Enter passphrase for key 'C:\Users\USER1/.ssh/id_rsa':
作为替代解决方法,是否有一种非管理员(我不想干扰它)的方式将密钥加载到单独的代理中,这样当我启动 PS 会话时,它会使用其他密钥,并且允许我保留在 msys2 中使用我重复使用的密钥? 这可能相当于同时使用两个不同的代理......
weasel-pageant
是这样的代理(基于 Cygwin 的ssh-pageant
),用于 WSL(A1-C7)......仍在寻找 PS 的解决方案。ssh-agent-wsl
是其中的一个分支weasel-pageant
,包括支持使用 Microsoft 的 SSH 代理服务(而不是 PuTTY Pageant)持有的密钥(A2-C7 ......我想 WSL 需要一个代理来使用 Win OpenSSH 代理是非常了不起的)。
关于如何使用“代理”代理ssh-pageant
将 PuTTY 选美与 Cygwin bash 链接的示例
实现这一目标的步骤是:
- 当我在 Windows 中启动会话时,便携式 PuTTY 代理 (
pageant
) 将被执行,同时加载一键。为此,在pageant
中添加了一个快捷方式C:\Users\USER1\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
,指向%myputty%\pageant.exe "%mykeys%\key1.ppk"
。
这使得 PuTTY 和 WinSCP 可以使用密钥,例如但是如果我现在进入 PS 会话或 msys2/cygwin 终端,则不会使用密钥,并且会要求我输入密钥的密码。所以如果我现在
$ ssh myserver
Enter passphrase for key 'C:\Users\USER1/.ssh/id_rsa':
- 在 msys2/cygwin 中,我可以使用
ssh-pageant
(“将 OpenSSH 链接到 PuTTY 的 Pageant 的 Cygwin/MSYS 的 SSH 身份验证代理”),这样它就可以重用以前加载的 PuTTY 代理所拥有的任何密钥。
为此,我简单地添加eval $(/usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME")
到我~/.bashrc
的 msys2 中。现在每当我启动一个 msys2 终端时,PuTTY's Pageant -> ssh-pageant的链接 就会建立,并且会创建几个环境变量,我可以ssh
不输入密码
$ env | grep -i ssh
SSH_AUTH_SOCK=/tmp/.ssh-pageant-USER1
SSH_PAGEANT_PID=960
$ ssh myserver
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-40-generic x86_64)
...
- 由此看来, Git bash 似乎也可以实现同样的效果。
相关:
http://rabexc.org/posts/pitfalls-of-ssh-agents
如何检查 ssh-agent 是否已经在 bash 中运行?
https://superuser.com/questions/1293725/gpg-agent-under-windows-as-ssh-agent-for-git-bash