PuTTY用户手册(十三)

第9章:使用Pageant进行身份验证

Pageant是SSH身份验证代理。
它将您的私有密钥保存在已经解码的内存中,因此您可以经常使用它们,而不需要键入密码。

9.1开始Pageant

在运行Pageant之前,需要有一个*.ppk格式的私钥。
请参阅第8章了解如何生成和使用。

当您运行Pageant时,它会将戴着帽子的计算机图标放入系统托盘中。
然后,它将保持不动,直到您将私钥加载。

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

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

要向Pageant添加一个键,请按“添加键”按钮。
Pageant将弹出一个文件对话框,名为“选择私钥文件”。
在此对话框中找到您的私钥文件,并按“Open”。

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

现在启动PuTTY并向接受密钥的站点打开SSH会话。
PuTTY将注意到Pageant正在运行,自动从Pageant中检索密钥,并使用它进行身份验证。
您现在可以打开任意多的PuTTY会话,而不必再次键入密码。

(PuTTY可以配置为不尝试使用Pageant,但默认情况下会尝试。
有关详情,请参阅第4.22.3及3.8.3.9条)

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

9.2Pageant主窗口

当您左键单击“Pageant托盘”图标,或者右键单击菜单中选择“查看键”时,将出现Pageant主窗口。
您可以使用它来跟踪当前加载到Pageant中的键,并添加新的键或删除现有的键。

9.2.1密钥列表框

“Pageant”主窗口中的大列表框列出当前加载到“Pageant”中的私钥。
列表可能是这样的:

ssh-rsa 2048 22:d6:69:c9:22:51:ac:cb: 9:15:67:47:f7:65:6d:d7 k1
ssh-dss 2048 e4:6c:69:f3:4f:fc:cf:fc:96:c0:88:34:a7:1e:59:d7 k2

对于每一个键,列表框会告诉你:

  • 键的类型。
    目前,这可以ssh1(RSA密钥使用SSH-1协议),将(RSA密钥使用SSH-2协议),ssh-dss(DSA密钥使用SSH-2协议),ecdsa-sha2 - *(ECDSA密钥使用SSH-2协议),或ssh-ed25519(Ed25519密钥使用SSH-2协议)。
  • 键的大小(以位为单位)。
  • 公钥的指纹。
    这应该与PuTTYgen给出的指纹相同,(希望如此)还应该与远程实用程序(如ssh-keygen)在应用于authorized_keys文件时显示的指纹相同。
  • 附加在键上的注释。
9.2.2"添加键"按钮

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

Pageant将弹出一个文件对话框,名为“选择私钥文件”。
在此对话框中找到您的私钥文件,并按“Open”。
如果您想一次添加多个键,可以使用Shift-click(选择多个相邻文件)或Ctrl-click(选择非相邻文件)选择多个文件。

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

(这不是为Pageant添加私钥的唯一方法。
您还可以使用代理转发从远程系统添加一个;
详情请参阅第9.4节)

9.2.3"删除键"按钮

如果您需要从Pageant中删除一个键,请在列表框中选择该键,并按下“删除键”按钮。
Pageant会把钥匙从记忆中抹去。

您可以将其应用于使用“Add Key”按钮添加的密钥,或者应用于使用代理转发远程添加的密钥(参见9.4节);
没什么区别。

9.3 Pageant命令行

通过在命令行上指定指令,可以使Pageant在启动时自动执行操作。
如果是从Windows GUI启动Pageant,则可以通过编辑从其启动的Windows快捷方式的属性来安排。

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

9.3.1让Pageant在启动时自动加载密钥

启动时,如果在Pageant命令行上提供了一个或多个私钥,则可以自动加载它们。
这时,您的命令行可能如下所示:

C:\PuTTY\pageant.exe d:\main.ppk d:\secondary.ppk

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

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

9.3.2让Pageant运行另一个程序

一旦Pageant初始化了自己并加载了其命令行上指定的任何键,您可以安排它启动另一个程序。
这个程序(可能是一个PuTTY,或者是一个使用Plink的WinCVS,或者其他什么)将能够使用加载的keys Pageant。

通过在命令后面指定-c选项可以做到这一点,如下所示:

C:\PuTTY\pageant.exe d:\main.ppk -c C:\PuTTY\putty.exe

9.4使用代理转发

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

注意,目前,SSH-2中的代理转发仅在SSH服务器为OpenSSH时可用。
ssh.com服务器使用不同的代理协议,PuTTY还不支持这种协议。

要启用代理转发,首先启动Pageant。
然后设置一个启用“允许代理转发”的PuTTY SSH会话(参见4.22.6节)。
像往常一样打开会话。
(或者,您可以使用-A命令行选项;
详情请参阅第3.8.3.10节)

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

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

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

现在,如果您在服务器上运行ssh并使用它连接到另一个服务器,该服务器接受Pageant中的一个键,那么您应该能够在没有密码的情况下登录:

unixbox:~$ ssh -v otherunixbox
[...]
debug: next auth method to try is publickey
debug: userauth_pubkey_agent: trying agent key my-putty-key
debug: ssh-userauth2 successful: method publickey
[...]

如果您还启用了SSH连接上的代理转发(请参阅服务器端SSH客户机的使用手册,了解如何实现这一点),那么您的身份验证密钥在您连接的下一台机器上仍然可用——在实际存储它们的位置之外还有两个SSH连接。

另外,如果在SSH服务器上有私钥,可以使用本地SSH -add命令将其发送回Pageant:

unixbox:~$ ssh-add ~/.ssh/id_rsa
Need passphrase for /home/fred/.ssh/id_rsa
Enter passphrase for /home/fred/.ssh/id_rsa:
Identity added: /home/fred/.ssh/id_rsa (/home/simon/.ssh/id_rsa)
unixbox:~$

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

9.5安全注意事项

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

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

不幸的是,Windows无法保护内存片段不被写入系统交换文件。
因此,如果Pageant长时间持有您的私钥,则可能将解密的私钥数据写入系统交换文件,稍后访问您的硬盘的攻击者可能能够恢复该数据。
(但是,如果您将未加密的密钥存储在磁盘文件中,他们当然能够恢复它。)
尽管像大多数现代操作系统一样,Windows防止程序意外地访问彼此的内存空间,但它确实允许程序出于调试等特殊目的有意地访问彼此的内存空间。
这意味着,如果您在运行Pageant时允许病毒、木马或其他恶意程序进入您的Windows系统,那么它可以访问Pageant进程的内存,提取您解密的身份验证密钥,并将它们发送回其主服务器。
类似地,使用代理转发是对其他一键式身份验证方法的安全改进,但并不完美。
拿着你的钥匙在Pageant在你的窗户框有一个远程服务器机器上的安全优势把他们本身(在一个代理或未加密的磁盘上),因为如果服务器机器曾经看到你的未加密私钥系统管理员或那些裂缝机器可以偷钥匙,假装你只要他们想要的东西。

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

因此,如果您不信任服务器机器的系统管理员,就永远不应该使用代理转发到该机器。
(当然,您也不应该在那台机器上存储私钥、向其中输入密码或以任何方式从其中登录到其他机器)
在这方面,Pageant并非十分完美。

【翻译不易,转载请注明出处 衡与墨https://blog.csdn.net/le_17_4_6】
未完待续

猜你喜欢

转载自blog.csdn.net/le_17_4_6/article/details/86502027