使用公钥 SSH 登录思科交换机 - 协议错误,类型 60

使用公钥 SSH 登录思科交换机 - 协议错误,类型 60

当我尝试使用公钥通过 SSH 从 Debian 系统连接到 Cisco C2960 时遇到了奇怪的问题。

我在 Windows XShell 客户端 (RSA,1024 位) 中生成了密钥。之后,我将这些密钥导出到 PEM 格式的文件并发送到我的远程 Debian。

Cisco 上的配置更新:

username admin privilege 15
ip ssh pubkey-chain 
username admin
key-string
AAAAB3NzaC1yc2EAAAABIwAAAIEAv69fgC6f9Y3hbxd+IwOmMR
1AYWbEbfb7KCf3O14JK32/DNR5VAa8wq/8yPGajjYXHPXJfwzr
BIjXj2lIQ9iVlj9mGga9nzbQulewJwue2JFuYOydN1phjt5UzG
6e7w+EI/4rzWpllQd40wWDDo2/OKM7++DbQoocMYM1Kg4nogU=
end

因此,现在如果我尝试使用来自任何 Windows 客户端(XShell、Putty)的私钥通过 SSH 进行连接 - 一切都正常。

当我尝试从我的 Debian 机器连接时 - 我收到错误“断开连接:协议错误:rcvd 类型 60”。

此键与 HP 开关配合使用效果非常好,所以我不知道该怎么做。

一些诊断信息:

root@debian#ssh -vvv -i key.pem admin@cisco-switch-address:
OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t  3 May 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to cisco-switch-address [10.10.10.10] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: key_load_public: No such file or directory
debug1: identity file key.pem type -1
debug1: key_load_public: No such file or directory
debug1: identity file key.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u3
debug1: Remote protocol version 2.0, remote software version Cisco-1.25
debug1: no match: Cisco-1.25
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "cisco-switch-address" from file "/root/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /root/.ssh/known_hosts:5
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],ssh-rsa
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-he1
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-rsa,[email protected],[email protected],ecdsa-sha2-ns
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],[email protected],arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-e
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],[email protected],arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-e
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],umac-6
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],umac-6
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96
debug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96
debug2: kex_parse_kexinit: none
debug2: kex_parse_kexinit: none
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: setup hmac-sha1
debug1: kex: server->client aes128-cbc hmac-sha1 none
debug2: mac_setup: setup hmac-sha1
debug1: kex: client->server aes128-cbc hmac-sha1 none
debug2: bits set: 1013/2048
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA d3:19:39:d5:df:3a:09:f8:f5:a1:c2:84:c8:da:f6:9a
debug3: load_hostkeys: loading entries for host "cisco-switch-address" from file "/root/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /root/.ssh/known_hosts:5
debug3: load_hostkeys: loaded 1 keys
debug3: load_hostkeys: loading entries for host "10.10.10.10" from file "/root/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /root/.ssh/known_hosts:6
debug3: load_hostkeys: loaded 1 keys
debug1: Host 'cisco-switch-address' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:5
debug2: bits set: 1045/2048
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: key.pem ((nil)), explicit
debug1: Authentications that can continue: publickey,keyboard-interactive,password
debug3: start over, passed a different list publickey,keyboard-interactive,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: key.pem
debug3: sign_and_send_pubkey: RSA a0:93:b7:5e:9a:e8:ed:4c:34:2b:b1:58:b3:34:ce:b2
debug2: we sent a publickey packet, wait for reply
Disconnecting: protocol error: rcvd type 60

答案1

我通过非常奇怪的方式解决了这个问题。我只是将公钥以 .pub 格式放在与私钥相同的目录中 - 现在就可以正常工作了。

例如:

root@debian:~/123# ls -l
total 4
-rw------- 1 root root 891 Aug 16 17:56 newswitch.key
root@debian:~/123# ssh -i newswitch.key admin@<switch-ip-address>
Disconnecting: protocol error: rcvd type 60

添加公钥文件后:

root@debian:~/123# ls -l
total 8
-rw------- 1 root root 891 Aug 16 17:56 newswitch.key
-rw-r--r-- 1 root root 213 Aug 16 17:57 newswitch.key.pub
root@deb-radius:~/123# ssh -i newswitch.key admin@<switch-ip-address>
<switch-name>#exit
Connection to <switch-ip-address> closed by remote host.
Connection to <switch-ip-address> closed.
root@debian:~/123# 

相关内容