我的情况: - 我通过(使用我的私钥和密码)从我的 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(服务器)