san*_*ica 5 ssh powershell putty pageant
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-pageantmsys2相同的内容(它最终是一个 Windows 程序,而且它们经常工作),手动替换evalmsys2 中的内容(到目前为止没有运气,但我认为这是可以修复的) :
> 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':
Run Code Online (Sandbox Code Playgroud)
作为替代解决方法,是否有一种非管理员(我不想干扰它)方式将密钥加载到单独的代理中,这样当我开始 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 链接的示例
实现这一目标的步骤是:
pageant),同时一键加载。为此,将快捷方式pageant添加到C:\Users\USER1\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,指向%myputty%\pageant.exe "%mykeys%\key1.ppk"。
$ ssh myserver
Enter passphrase for key 'C:\Users\USER1/.ssh/id_rsa':
Run Code Online (Sandbox Code Playgroud)
ssh-pageant(“Cygwin/MSYS 的 SSH 身份验证代理,将 OpenSSH 链接到 PuTTY 的 Pageant”),这样它就可以重用以前加载的 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)
...
Run Code Online (Sandbox Code Playgroud)
相关:
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
ssh-pageant我在 PS 会话中使用相同的 Cygwin 工具(即两者和 Cygwin OpenSSH 客户端)完成了这项工作。
所以我会这样做(假设ssh-pageant已经从 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;
> $env:SSH_AUTH_SOCK='C:\Users\USER1\tmp\.ssh-pageant-USER1'
> .\ssh myserver
Logged in to myserver
Run Code Online (Sandbox Code Playgroud)
我已将其添加到我的profile.ps1(同样,ssh-pageant当我启动 PS 会话时它已经在运行)
$env:MSYS2_DIR=<mydir>
# Assuming a proxy ssh agent is already running
$env:SSH_AUTH_SOCK="$env:MSYS2_DIR\tmp\.ssh-pageant-$env:USERNAME"
# We have to make sure we use Msys2 OpenSSH ssh client, not Windows OpenSSH ssh client
function ssh_msys2 {
& $env:MSYS2_DIR\usr\bin\ssh.exe $args
}
Run Code Online (Sandbox Code Playgroud)
如果 anssh-pageant尚未激活,这应该可以工作(尚未测试;PID 号可能不同):
> 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
Logged in to myserver
Run Code Online (Sandbox Code Playgroud)
仍然需要测试几个点,并自动化操作。
特别是,执行ssh-pageant,检测 PID #(如果返回),并SSH_PAGEANT_PID从 PS 设置环境变量(如果是这种情况)。这比 Msys2 中稍微麻烦一点,因为ssh-pageant它会吐出一些可由 bash 直接执行的东西。
| 归档时间: |
|
| 查看次数: |
1088 次 |
| 最近记录: |