当前位置: 首页 > 知识库问答 >
问题:

在PowerShell中重用正在运行的PuTTY代理(pageant)

慕学海
2023-03-14

PS 5.1中有没有重用PuTTY代理密钥的方法

现在,细节。

要使用密钥代理,有一个代理来保存密钥(左框),客户端应用程序来委托密钥的管理(右框)。例如,客户端应用程序C1=putty当然可以使用自己的代理A1=pageant。客户端应用程序C2=winscp知道如何直接使用A1。

某些客户不能直接使用某些代理,但有代理可以弥补这一差距。例如,要将A1与C3一起使用,我需要代理P1=ssh pageant,请参见下面的示例。这有助于将许多客户端的密钥集中在单个代理中。现在我打算对我的所有客户机使用A1(目前,只缺少A1-C5和A1-C6)。

PS 5.1中有没有办法重用相同的PuTTY代理密钥?(即,使用A1和C5的代理Px)

可能有帮助:https://superuser.com/a/1173570/245595

笔记:

>

我目前正尝试在PS中使用msys2中相同的ssh pageant(它最终是一个Windows程序,通常它们都能工作),手动替换msys2中的eval(到目前为止没有运气,但我认为这是可以解决的):

    > 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是WSL(A1-C7)的代理代理(基于Cygwin的ssh pageant)。。。仍在寻找PS的解决方案。

ssh-agent-wslweasel-pageant的一个分支,包括支持使用微软SSH代理服务(而不是PuTTY Pageant)持有的密钥(A2-C7...我想WSL需要一个代理来使用Win OpenSSH代理是值得注意的)。

关于如何使用“代理”代理ssh pageant链接PuTTY pageant和Cygwin bash的示例

实现这一点的步骤是:

  1. 当我在Windows中启动会话时,将执行便携式PuTTY代理(pageant),同时加载一个键。为此,在C:\Users\USER1\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup添加了一个快捷方式“pageant”,指向“myputty%\pageant”。exe“%mykeys%\key1.ppk”<这使得PuTTY和WinSCP可以使用密钥,例如,如果我现在进入PS会话或msys2/cygwin终端,则不会使用密钥,并且会询问密钥的密码。所以如果我现在
    $ ssh myserver
    Enter passphrase for key 'C:\Users\USER1/.ssh/id_rsa':
    $ 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)
    ...

相关:

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

共有1个答案

宓英哲
2023-03-14

我在PS会话中使用相同的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

我已将此添加到我的个人资料中。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选美尚未激活,这应该可以工作(尚未测试;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执行。

 类似资料:
  • 问题内容: 我正在尝试使用Zed A. Shaw的 “ 以 艰难的方式学习Python” 指南来 学习Python的 基础知识。我遇到的问题是我可以运行Python脚本,但只能在名称前面使用。这会瞬间打开CMD,然后关闭。 如果我尝试运行该文件,它将返回该文件不是可操作的程序文件,脚本等。 我已经在Stack Overflow上找到了与此问题相关的多个问题,但是没有一个解决方案对我有用。 我尝试过

  • 问题内容: 我在代理后面,我需要通过安装一些东西。 我最好的是这个 问题是,我之后需要取消设置这些环境变量。 任何想法如何做到少于5层? 问题答案: 您需要使用构建时变量(–build-arg)。 该标志允许您传递在Dockerfile的RUN指令中像常规环境变量一样被访问的构建时变量。而且,这些值不会像ENV值那样保留在中间或最终图像中。 因此,您只有3行: 您只需要定义构建时变量和/或在图像构

  • 问题内容: 我有一种情况,我需要运行 一个 从窗户经常Linux shell命令(用不同的文件名)。我正在使用PuTTY和WinSCP来执行此操作(需要登录名和密码)。该文件通过WinSCP复制到linux机器中的预定义文件夹,然后从PuTTY运行命令。有没有一种方法可以使我通过程序自动执行此操作。理想情况下,我想从Windows右键单击该文件,然后发出命令,该命令会将文件复制到远程计算机,并以文

  • 问题内容: 我正在尝试遵循Zed Shaw的《困难方法学习Python》指南。我需要在Powershell中使用python。我在中安装了Python 2.7.3 。每当我在Powershell中键入python时,都会出现一个错误,指出“ python”一词无法识别为cmdlet,函数,脚本文件或可操作程序的名称。我也输入了以下内容: 提供了建议的解决方案,但是在Powershell中输入pyt

  • 有谁有幸尝试使用vertx bihind作为公司代理?我已经尝试了我脑海中出现的任何可能的方式来向vertx提供代理信息。到目前为止没有任何效果。 设置环境变量http_proxy=http://mycorporate.proxy.com:8080-运气不好 设置环境变量VERTX_OPTS='-Dhttp.proxy主机=mycorporate.proxy.com-Dhttp.proxy端口=8

  • 有一种方法可以在运行时对PhantomJS中的代理进行dinamily更改。下面是代码: 在中,我尝试: {“errormessage”:“找不到变量:幻影”,“request”:{“headers”:{“accept”:“application/json,image/png”,“connection”:“close”,“content-length”:“62”,“content-type”:“a