簡體   English   中英

在 PowerShell 中重用正在運行的 PuTTY 代理(選美)

[英]Reuse in PowerShell a running PuTTY agent (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


注意事項

  1. 我沒有嘗試過,但似乎winssh-pageant是一個代理,可以將 A2 與直接理解 A1 的客戶端應用程序鏈接起來。

  2. 我目前正在嘗試在 PS 中使用與 msys2 相同的ssh-pageant (它最終是一個 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':
  1. 作為替代解決方法,是否有非管理員(我不想干擾它)的方式將密鑰加載到單獨的代理中,這樣當我啟動 PS session 時,它會使用其他密鑰,這允許我保留在 msys2 中使用我重復使用的密鑰? 這可能相當於同時使用兩個不同的代理......

  2. weasel-pageant就是這樣一個代理(基於 Cygwin 的ssh-pageant ),用於 WSL(A1-C7)......仍在尋找 PS 的解決方案。

  3. ssh-agent-wslweasel-pageant的一個分支,包括支持使用 Microsoft 的 SSH 代理服務(而不是 PuTTY Pageant)(A2-C7 ......代理人)。


如何使用“代理”代理ssh-pageant將 PuTTY 選美與 Cygwin bash 鏈接的示例

實現這一目標的步驟是:

  1. 當我在 Windows 中啟動我的 session 時,便攜式 PuTTY 代理( pageant )被執行,同時一鍵加載。 為此,將快捷方式pageant添加到C:\Users\USER1\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup ,指向%myputty%\pageant.exe "%mykeys%\key1.ppk"
    這使得 PuTTY 和 WinSCP 可以使用密鑰,例如但是如果我現在輸入 PS session 或 msys2/cygwin 終端,則不會使用密鑰,並且會要求我輸入密鑰的密碼。 所以如果我現在
    $ ssh myserver
    Enter passphrase for key 'C:\Users\USER1/.ssh/id_rsa':
  1. 在 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)
    ...
  1. 由此看來,Git bash似乎也可以實現。

相關

http://rabexc.org/posts/pitfalls-of-ssh-agents

如何檢查 ssh-agent 是否已經在 bash 中運行?

https://superuser.com/questions/1327633/how-to-maintain-ssh-agent-login-session-with-windows-10s-new-openssh-and-powers

https://superuser.com/questions/1293725/gpg-agent-under-windows-as-ssh-agent-for-git-bash

我在 PS session 中使用相同的 Cygwin 工具(即ssh-pageant和 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

我已將此添加到我的profile.ps1中(同樣,當我啟動 PS 會話時ssh-pageant已經運行時,它將起作用)

$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
}

如果ssh-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

仍然需要測試幾個點,並使操作自動化。
特別是,執行ssh-pageant ,如果返回,則檢測 PID #,如果是這種情況,則從 PS 設置環境變量SSH_PAGEANT_PID 這比在 Msys2 中要麻煩一些,因為ssh-pageant會吐出一些可以由 bash 直接執行的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM