如何使用PuTTY转发密钥

如何使用PuTTY转发密钥

我的情况: - 我通过(使用我的私钥和密码)从我的 PC(Windows 7)连接到服务器 A userA- 我想通过命令 ssh: 从 A 连接到服务器 B ssh userB@serverName,但我收到“权限被拒绝”提示。

对于每个服务器,我的密钥都存在于文件夹中ssh\authorized_keys。即使我可以直接从我的电脑连接到服务器 B,并且如果我尝试从服务器 A 连接,我也会出现此错误。

使用 Linux 的人成功使用该命令ssh -A连接到服务器 B。我相信 PuTTY 选项“代理转发”是等效的,但是......不,仍然是同样的错误。

ssh当我尝试从服务器 A 连接到服务器 B 时,日志来自:

OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to serverB port 22.
debug1: Connection established.
debug1: identity file /home/userA/.ssh/identity type -1
debug1: identity file /home/userA/.ssh/id_rsa type -1
debug1: identity file /home/userA/.ssh/id_dsa type -1
debug1: loaded 3 keys
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'serverB' is known and matches the RSA host key.
debug1: Found key in /home/userA/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
*******************************************************************************
*            This equipment is the propertyof            *
*                    UNAUTHORIZED ACCESS WILL BE PROSECUTED                   *
*******************************************************************************
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Next authentication method: publickey
debug1: Trying private key: /home/userA/.ssh/identity
debug1: Trying private key: /home/userA/.ssh/id_rsa
debug1: Trying private key: /home/userA/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

答案1

是的,选项是相同的,但是,它不转发一般来说 -它将连接转发到“SSH 代理”具体来说,“代理”将您的密钥保存在内存中,并进行解密(因此您只需解锁一次),然后客户端要求它签署数据以进行身份​​验证。

在Linux/Unix/BSD/Cygwin上,OpenSSH的代理程序是ssh-agent(尽管在某些情况下它被gpg-agent或gnome-keyring取代,但这并不重要)。

同时,Windows 上的 PuTTY 也 pageant.exe用于同样的目的。(其他程序,例如 WinSCP,也使用 Pageant。)

首先,启动代理并将密钥加载到其中。(双击 .ppk 密钥文件就足够了。)现在,当您 PC 上的 PuTTY 连接到服务器 A 时,它将使用您 PC 上运行的代理中的密钥,而不是 .ppk 文件中的密钥。

  • PC 上的 Pageant(代理)⇆ PC 上的 PuTTY(客户端)⇆ serverA 上的 sshd(服务器)

类似地,当您在服务器 A 上运行时ssh serverB,它会尝试联系在服务器 A 上运行的代理。

  • ??? (代理) ⇆ 服务器 A 上的 ssh (客户端) ⇆ 服务器 B 上的 sshd (服务器)

如果您在启用“代理转发”或-A选项的情况下连接到服务器 A,那么 PuTTY 将中继代理连接,并且ssh服务器 A 将能够使用您 PC 上的代理的密钥。

  • PC 上的 Pageant(代理) ⇆ PC 上的 PuTTY(转发客户端) ⇆ 服务器 A 上的 sshd(转发服务器) ⇆ 服务器 A 上的 ssh(客户端) ⇆ 服务器 B 上的 sshd(服务器)

相关内容