使用Pageant进行身份验证

选美是一项SSH(SSH)身份验证代理。它将您的私钥保存在已解码的内存中,这样您就可以经常使用它们,而无需键入密码短语。1

广告

获得并启动比赛

比赛包括在WinSCP安装包。您也可以从中单独下载WinSCP下载页.

选美源自PuTTY,也是PuTTY安装包的一部分。使用WinSCP或PuTTY安装包中的Pageant并不重要;它们是相同的。

要启动选美,请转到工具>选美登录对话框.

选美入门

在运行Pageant之前,您需要私钥在里面.ppk码格式。

当您运行Pageant时,它会在系统托盘中放置一个戴着帽子的计算机图标。然后它会一直坐着,什么也不做,直到你将私钥加载到它中。(你可能需要使用Windows'显示隐藏图标箭头以查看Pageant图标。)

广告

如果您用鼠标右键单击Pageant图标,您将看到一个菜单。选择查看关键点从此菜单中选择。将出现“Pageant”主窗口。(您也可以通过双击Pageant图标打开此窗口。)

“Pageant”窗口包含一个列表框。这表明Pageant持有私钥。启动Pageant时,它没有键,因此列表框将为空。添加一个或多个键后,它们将显示在列表框中。

要向Pageant添加密钥,请按添加密钥按钮。比赛将显示一个文件对话框,标记为选择私钥文件。在此对话框中找到您的私钥文件,然后按正常开放.

Pageant现在将加载私钥。如果密钥受密码短语保护,Pageant会要求您键入密码短语。加载密钥后,它将出现在Pageant窗口的列表中。

现在启动WinSCP并打开一个SSH会话到接受您密钥的站点。WinSCP将注意到Pageant正在运行,自动从Pageant检索密钥,并使用它进行身份验证。现在,您可以打开任意数量的WinSCP会话,而无需再次键入密码短语。

可以配置WinSCP不要试图使用Pageant,但默认情况下会尝试。

当您想关闭Pageant时,单击系统托盘中Pageant图标上的右键,然后选择出口从菜单中选择。关闭“Pageant”主窗口不会关闭Pageant。

如果您希望Pageant保持运行,但忘记了它获得的所有密钥,请选择删除所有密钥从“系统托盘”菜单中选择。

选美主窗口

当您左键单击Pageant系统托盘图标,或者右键单击并选择时,将显示Pageant主窗口查看关键点从菜单中选择。您可以使用它来跟踪当前加载到Pageant中的密钥,以及添加新密钥或删除现有密钥。

密钥列表框

Pageant主窗口中的大列表框列出了当前加载到Pageant中的私钥。列表可能如下所示:

Ed25519 SHA256:TddlQk20DVs4LRcAsIfDN9pInKpY06D+h4kSHwWAj4w版本RSA 2048 SHA256:8DFtyHm3kQihgy52nzX96qMcEVOq7/yJmmwQQhBWYFg

广告

对于每个键,列表框将告诉您:

  • 键的类型。目前,这可以是RSA公司,DSA(数字减影),NIST标准(一)ECDSA公司键),版本25519,第448版,或SSH-1号机组(RSA密钥,用于弃用的SSH-1协议,WinSCP不支持)。(如果密钥具有关联的证书,则此处显示证书后缀。)
  • 密钥的大小(以位为单位),用于不同大小的密钥类型。(对于ECDSA NIST密钥,这表示为第256页第384页第521页.)
  • 公钥的指纹。这应该是由PuTTYgen公司,以及远程实用程序(如ssh-密钥当应用于您的授权密钥文件。
    默认情况下,这显示在SHA-256型格式。你可以换到老的MD5公司格式(如下所示aa:bb:cc:…)与指纹类型下拉列表,但请记住,这种格式不太安全,应尽可能避免用于比较。
    如果加载到Pageant中的某些密钥附加了证书,那么Pageant将默认显示基础密钥的指纹。这样,同一密钥的认证和未认证版本将具有相同的指纹,因此您可以看到它们匹配。您可以使用指纹类型下拉列表以请求为认证密钥显示不同的指纹,其中包括证书作为指纹数据的一部分。这样你可以区分两个证书。
  • 键上附加的注释。
  • 国家延迟解密,如果为此密钥启用。

添加密钥按钮

要通过从本地磁盘文件中读取密钥来向Pageant添加密钥,请按添加密钥按钮,或者右键单击系统托盘中的Pageant图标并选择添加密钥从那里。

比赛将显示一个文件对话框,标记为选择私钥文件。在此对话框中找到您的私钥文件,然后按正常开放。如果要一次添加多个密钥,可以使用选择多个文件班次+单击(选择几个相邻的文件)或Ctrl键+单击(选择不相邻的文件)。

Pageant现在将加载私钥。如果密钥受密码短语保护,Pageant会要求您键入密码短语。

这不是向Pageant添加私钥的唯一方法。您还可以使用代理转发从远程系统添加一个;详见第9.4节。

“删除关键点”按钮

如果需要从Pageant中删除某个键,请在列表框中选择该键,然后按删除密钥按钮。Pageant会从内存中取出钥匙。

您可以使用添加密钥按钮,或使用代理转发远程添加的密钥(参见第9.4节);这无关紧要。

Pageant命令行

通过在命令行上指定指令,可以使Pageant在启动时自动执行操作。如果您从Windows启动选美图形用户界面,您可以通过编辑启动它的Windows快捷方式的属性来安排此操作。

如果Pageant已经在运行,则使用以下选项再次调用它会导致使用现有实例而不是新实例执行操作。

使Pageant在启动时自动加载密钥

Pageant可以在启动时自动加载一个或多个私钥,如果您在Pageant命令行中提供这些私钥的话。然后,命令行可能如下所示:

“C:\Program Files(x86)\WinSCP\PuTTY\pageant.exe”d:\main.ppk d:\secondary.ppk

如果密钥是加密存储的,Pageant将在启动时请求密码。

广告

如果Pageant已经在运行,此语法会将密钥加载到现有的Pageant中。

您可以指定--加密的选择延迟解密这些钥匙中的一个。

让选美运行另一个程序

您可以安排Pageant在初始化自己并加载其命令行上指定的任何键后启动另一个程序。该程序(可能是WinSCP、PuTTY或其他程序)将能够使用Pageant加载的键。

您可以通过指定-c(c)选项后跟命令,如下所示:

“C:\程序文件(x86)\WinSCP\PuTTY\pageant.exe”d:\main.ppk-C“C:\Program Files(x86

与Windows OpenSSH集成

Windows自己的OpenSSH端口使用与Pageant相同的机制与其SSH代理(Windows命名管道)进行通信。这意味着如果Windows OpenSSH知道在哪里找到Pageant的命名管道,它可以直接与Pageant对话。

当Pageant启动时,它可以选择写出一个包含OpenSSH配置指令的文件,该指令告诉Windowsssh.exe文件在哪里可以找到佩金特。如果您在Windows SSH配置中包含此文件,那么ssh.exe应自动使用Pageant作为其代理,以便您可以将密钥保存在一个位置,并使两个SSH客户端都可以使用它们。

选项是--打开ssh-config,后面跟着一个文件名。

要从主OpenSSH配置中引用此文件,可以使用包括指令。例如,您可以这样运行Pageant(当然,用您自己的用户名替换):

pageant--打开ssh-config C:\Users\martin\.ssh\pageant.conf

然后在main中添加这样的指令.ssh\config文件文件(假设它位于您刚才放置的同一目录中页面.conf):

包括pageant.conf

注意:此技术仅适用于Windows的OpenSSH端口,该端口位于%SYSTEMROOT%\System32\OpenSSH\ssh.exe如果你已经安装了它。(如果没有,它可以作为Windows可选功能安装,例如通过设置>应用程序和功能>可选功能>添加功能>OpenSSH客户端.)

还有其他版本的OpenSSH for Windows,特别是Windows Git附带的版本。这些可能不适用于相同的配置,因为它们往往依赖于Unix仿真层,如MinGW或MSys,所以它们不会使用Windows本机路径名语法或理解命名管道。以上说明仅适用于Windows自己版本的OpenSSH。

广告

因此,如果您想使用Windows Git和Pageant中的SSH密钥,则必须设置环境变量GIT_SSH公司,指向不同的程序。你可以把它指向C: \Windows\System32\OpenSSH\ssh.exe一旦你完成了这个设置-但它很容易指向Plink!

Unix-domain套接字:与WSL 1集成

Pageant可以监听Unix域套接字的WinSock实现。这些接口可以与原始Windows Subsystem for Linux(现在称为WSL 1)中的Unix域套接字进行互操作。因此,如果您要求Pageant听其中一个,那么您的WSL1进程可以直接与Pageant对话。

要配置此项,请使用选项运行Pageant–unix,后跟路径名。然后,在WSL 1中,设置环境变量SSH_AUTH_SOCK(签名锁)指向该路径名的WSL转换。

例如,您可以运行

选美--unix C:\Users\Simon\.ssh\agent.sock

在WSL 1中,设置环境变量

SSH_AUTH_SOCK=/mnt/c/Users/Simon/.SSH/agent.SOCK

或者,您可以在.ssh/config文件WSL中的文件,该文件表示

身份代理/mnt/c/Users/Simon/.ssh/agent.sock

尽管这样做可能意味着ssh-添加尽管如此,命令也找不到代理ssh标准它自己会的。

安全说明:Unix域套接字通过其包含目录上的文件保护来防止其他用户访问。因此,如果您的Windows机器是多用户的,请确保在其他用户根本无法访问的目录中创建套接字。(事实上,这是一个关于一般原则的好主意。)

兼容性说明:WSL2进程不能通过这种机制与Pageant进行通信,因为WSL2的Unix域套接字由一个单独的Linux内核管理,而不是由WinSock与之通信的同一内核管理。

从可见的密钥列表开始

--关键字列表选项以在主窗口启动时立即显示主窗口。

使用代理转发

代理转发是一种允许SSH服务器上的应用程序与客户端上的代理进行对话的机制。

广告

注意,目前,SSH中的代理转发是否可用取决于您的服务器。Pageant的协议与OpenSSH服务器兼容,但ssh.com服务器使用不同的代理协议,WinSCP尚不支持该协议。

要启用代理转发,请首先启动Pageant。然后设置WinSCP SSH会话,其中允许代理转发已启用。正常打开会话。

如果这样做有效,那么服务器上的应用程序现在应该可以访问Unix域套接字,SSH服务器将其转发回WinSCP,WinSCP将转发给代理。要检查是否确实发生了这种情况,可以在Unix服务器上尝试以下命令:

unixbox:~$echo$SSH_AUTH_SOCK/tmp/ssh-XXNP18Jz/agent.28794号文件unixbox:~$

如果结果行为空,则表示根本没有启用代理转发。

现在如果你跑步ssh标准并使用它连接到另一个接受Pageant中某个密钥的服务器,您应该可以无需密码登录:

unixbox:~$sh-v其他unixbox[...]调试:下一个要尝试的身份验证方法是公钥调试:userauth_pubkey_agent:尝试代理密钥my-putty-key调试:ssh-userauth2成功:方法公钥[...]

如果您也在该SSH连接上启用代理转发(请参阅服务器端SSH客户端的手册以了解如何执行此操作),那么您的身份验证密钥仍将在您连接的下一台机器上可用–距离实际存储它们的位置有两个SSH连接。

此外,如果您在其中一个SSH服务器上有私钥,则可以使用本地ssh-添加命令:

unixbox:~$ssh-add~/.ssh/id\rsa需要/home/fred/.ssh/id_rsa的密码短语输入/home/fred/.ssh/id_rsa的密码短语:添加的标识:/home/fred/.ssh/id_rsa(/home/simon/.ssh/id_rsa)unixbox:~$

然后,它可用于所有可用代理转发的机器(不仅仅是添加它的位置的下游机器)。

加载密钥而不解密

您可以向Pageant添加密钥,而无需对其进行解密。密钥文件将保存在Pageant的内存中,仍然经过加密,当客户端程序首次尝试使用密钥时,Pageant将显示一个对话框,提示输入密码短语,以便对密钥进行解密。

广告

无论密钥是由本地运行的WinSCP或PuTTY实例使用,还是由通过代理转发连接到Pageant的远程客户端使用,其工作方式都是相同的。

要在此加密表单中向Pageant添加密钥,请按添加密钥(加密)按钮,或者右键单击系统托盘中的Pageant图标并选择添加密钥(加密)从那里。Pageant将弹出一个文件对话框,与普通对话框的方式相同添加密钥按钮。但它不会要求密码短语。相反,该键将在主窗口中列出,并带有(加密)之后。

要在加载加密密钥的情况下首先启动Pageant,可以使用--加密的选项。例如:

“C:\Program Files(x86)\WinSCP\PuTTY\pageant.exe”--加密的d:\main.ppk

密钥在第一次使用时被解密后,它将保持解密状态,以便可以再次使用。主窗口将列出带有(可重新加密)可以使用重新加密按钮。

您还可以通过选择“重新加密”所有加密后添加的密钥重新加密所有密钥从“系统托盘”菜单中选择。(请注意,这不会丢弃以前未加密添加的明文密钥!)

注意:当Pageant显示解密已加载密钥的提示时,它无法将键盘焦点放在提示对话框上。据我们所知,这是Windows针对恶意软件的蓄意防御措施。因此,在键入密码之前,请确保在提示窗口中单击,否则密码可能会发送到您不想信任的地方!

安全注意事项

使用Pageant进行公钥身份验证,可以方便地打开多个SSH会话,而无需每次都键入密码短语,还可以提供从不在磁盘上存储解密私钥的安全优势。许多人认为这是安全性和便利性之间的一个很好的折衷。

然而,这是一种妥协。在Pageant中保存解密的私钥比将其存储在易于查找的磁盘文件中要好,但仍不如不将其存储到任何位置安全。这有两个原因:

  • 遗憾的是,Windows无法保护内存块不被写入系统交换文件。因此,如果Pageant长时间持有您的私钥,解密的私钥数据可能会写入系统交换文件,稍后访问您硬盘的攻击者可能能够恢复该数据。(但是,如果您在磁盘文件中存储了未加密的密钥,他们肯定能够恢复它。)
  • 尽管与大多数现代操作系统一样,Windows可以防止程序意外访问彼此的内存空间,但它确实允许程序出于特殊目的(如调试)故意访问彼此的存储空间。这意味着,如果在Pageant运行时允许病毒、特洛伊木马或其他恶意程序进入Windows系统,它可能会访问Pageant进程的内存,提取解密的身份验证密钥,并将其发送回主进程。

同样,代理转发的使用是对其他一键式身份验证方法的安全改进,但并不完美。将密钥保存在Windows机器上的Pageant中比保存在远程服务器机器上(在代理中或只是在磁盘上未加密)具有安全优势,因为如果服务器机器曾经看到你的未加密私钥,那么系统管理员或破解机器的任何人都可以窃取密钥,并假装是你,只要他们愿意。

然而,服务器机器的系统管理员总是可以假装是该机器上的您。因此,如果您将代理转发到服务器计算机,则该计算机的系统管理员可以访问转发的代理连接,并从您的任何私钥请求签名,因此可以以您的身份登录到其他计算机。他们只能在有限的范围内做到这一点——当代理转发消失时,他们就失去了这种能力——但使用Pageant实际上并不能阻止服务器上的系统管理员(或黑客)这样做。

广告

因此,如果您不信任服务器机器的sysadmin,则不应使用代理转发到该机器。(当然,您也不应该在该机器上存储私钥,在其中键入密码,或者以任何方式从该机器登录到其他机器;Pageant在这方面几乎不是唯一的。)

  1. 文本是的副本PuTTY用户手册或者是受到它的启发。后退

上次修改时间:通过马丁