我没有成功地让公钥身份验证在我们的任何一个思科系统或ASA5506路由器上工作。尽管我做了最好的研究和努力,但我仍然面临着密码的挑战。
更新:在从FrameHowitzer输入后,我尝试使用Putty进行连接,效果很好。因此,问题似乎与OpenSSH_8.9p1有关。
我们的ASA5505s运行ASA 9.2(4),ASA5506s运行ASA 9.8(2)。所有人都有安全加许可证。
5505的典型配置:
ssh scopy enable
no ssh stricthostkeycheck
ssh timeout 60
ssh version 2
ssh key-exchange group dh-group14-sha1
ssh 10.2.0.0 255.255.255.0 TempMgmt
username scp password OpenSezzaMe privilege 15
aaa authentication ssh console LOCAL
username scp attributes
ssh authentication pkf
---- BEGIN SSH2 PUBLIC KEY ----
AAAAB3NzaC1yc2EAAAADAQABAAAAgQDJf/+4DKo2g64611G5iyK5Qh24ytbCqOlAKlrDp7
AwxpVcrtBUCKu131Sj7B9RCV6QG9Jg4lOGx53zfBxRcE1cJ0p2n26nHwfIRHIhEeS4B8J1
o8DOmAQ8oJWGesadx2Kq4mzEYJ7XrW8lgNTJCe+yJ6MMos6XGVFRqyaaheHUEQ==
---- END SSH2 PUBLIC KEY ----
quit如果我为ssh启用调试并登录:
Device ssh opened successfully.
SSH0: SSH client: IP = '10.2.0.2' interface # = 2
SSH: host key initialised
SSH0: starting SSH control process
SSH0: Exchanging versions - SSH-2.0-Cisco-1.25
SSH0: send SSH message: outdata is NULL
server version string:SSH-2.0-Cisco-1.25
SSH0: receive SSH message: 83 (83)
SSH0: client version is - SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
client version string:SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
SSH2 0: SSH2_MSG_KEXINIT sent
SSH2 0: SSH2_MSG_KEXINIT received
SSH2: kex: client->server aes128-ctr hmac-sha1 none
SSH2: kex: server->client aes128-ctr hmac-sha1 none
SSH2 0: expecting SSH2_MSG_KEXDH_INIT
SSH2 0: SSH2_MSG_KEXDH_INIT received
SSH2 0: signature length 143
SSH2: kex_derive_keys complete
SSH2 0: newkeys: mode 1
SSH2 0: SSH2_MSG_NEWKEYS sent
SSH2 0: waiting for SSH2_MSG_NEWKEYS
SSH2 0: newkeys: mode 0
SSH2 0: SSH2_MSG_NEWKEYS receivedSSH(scp): user authen method is 'use AAA', aaa server group ID = 1
SSH(scp): user authen method is 'use AAA', aaa server group ID = 1
SSH2 0: authentication successful for scp
SSH2 0: channel open request
SSH2 0: pty-req request
SSH2 0: requested tty: xterm-256color, height 26, width 140
SSH2 0: env request
SSH2 0: shell request
SSH2 0: shell message receiveduser authen method is 'use AAA', aaa server group ID = 1在我看来是不对的。我认为不应该使用aaa。但我无法找到定义用户身份验证方法的方法。
我试过:
我们不再与思科签订服务协议,我不会仅仅为了解决这个棘手的问题而重新建立服务协议。
发布于 2022-12-30 23:55:40
从根本上讲,遵循这个指南,它应该能工作。
https://ip-life.net/cisco-asa-ssh-public-key-authentication/
确保您的终端客户端软件被设置为使用SSH密钥作为主要/唯一的身份验证方法,并且它应该这样做。
我模仿了在ASA 5505运行版本9.1.7(32)上的指南,它工作得很好。
我添加了属性配置以将公钥添加到用户名中,并设置客户端使用匹配的私钥和用户名,并将客户端设置为只使用SSH密钥交换,而不是密码或键盘交互,这非常有效。
然后,我删除了ssh和控制台的aaa身份验证行,以便使用本地组。
no aaa authentication ssh console LOCAL工作得很好。
这是我使用“调试ssh 10”获得的调试输出。
Device ssh opened successfully.
SSH1: SSH client: IP = '10.10.80.69' interface # = 3
SSH: host key initialised
SSH1: starting SSH control process
SSH1: Exchanging versions - SSH-2.0-Cisco-1.25
SSH1: send SSH message: outdata is NULL
server version string:SSH-2.0-Cisco-1.25
SSH1: receive SSH message: 83 (83)
SSH1: client version is - SSH-2.0-SecureCRT_8.7.2 (x64 build 2214)
client version string:SSH-2.0-SecureCRT_8.7.2 (x64 build 2214)
SSH2 1: SSH2_MSG_KEXINIT sent
SSH2 1: SSH2_MSG_KEXINIT received
SSH2: kex: client->server aes128-ctr hmac-sha1 none
SSH2: kex: server->client aes128-ctr hmac-sha1 none
SSH2 1: expecting SSH2_MSG_KEXDH_INIT
SSH2 1: SSH2_MSG_KEXDH_INIT received
SSH2 1: signature length 271
SSH2: kex_derive_keys complete
SSH2 1: newkeys: mode 1
SSH2 1: SSH2_MSG_NEWKEYS sent
SSH2 1: waiting for SSH2_MSG_NEWKEYS
SSH2 1: newkeys: mode 0
SSH2 1: SSH2_MSG_NEWKEYS receivedSSH(pix): user authen method is 'no AAA', aaa server group ID = 0
SSH(pix): user authen method is 'no AAA', aaa server group ID = 0
SSH2 0: key lookup succeeded
SSH2 1: Sent SSH2_MSG_USERAUTH_PK_OK to clientSSH(pix): user authen method is 'no AAA', aaa server group ID = 0
public key pkt
[really long key stuff]
SSH2 0: key lookup succeeded
SSH2 0: Signature verification succeeded
SSH2 1: Public key authentication succeeded for user (pix)
SSH2 1: authentication successful for pix
SSH2 1: channel open request
SSH2 1: pty-req request
SSH2 1: requested tty: vt100, height 44, width 127
SSH2 1: auth-agent-req@openssh.com request
SSH2 1: shell request
SSH2 1: shell message received确保您的终端客户端被设置为先尝试key方法,或者只尝试key方法,然后您只需确保键匹配即可。只要ASA上的用户的密钥与客户端上的密钥匹配,那么ASA是否有其他可用的方法就可以工作了。删除AAA配置行将禁用使用本地密码的能力,但是密钥可以工作,因为它是在用户属性中定义的。
发布于 2022-12-31 04:29:42
我测试的rsa 5505/6单元,9.2(4)和9.8(2)版本,要求" SSH -rsa“是公共密钥交换可用的签名算法之一,而不管您使用的SSH客户端软件如何。
在默认情况下,Putty显然是可用的。OpenSSH已经开始反对这些老算法中的许多。
OpenSSH客户端的调试显示:
$ ssh -v asa5505-tmp
OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022
...
debug1: send_pubkey_test: no mutual signature algorithm
debug2: we did not send a packet, disable method
debug1: Next authentication method: password我是觉知,ASA550Xs要求不推荐的密钥交换算法和主机密钥算法仅用于OpenSSH连接。但我忽略了公钥算法。
下面是一个用于ASA的ssh配置示例:
# ~/.ssh/config
Host "asa550*"
# Required for ssh/scp
KexAlgorithms +diffie-hellman-group14-sha1
HostKeyAlgorithms +ssh-rsa
# May be required soon
# Ciphers +aes128-cbc
# Required for public key authentication
PubkeyAcceptedAlgorithms +ssh-rsa
# Specify a default asa user and dedicated key-pair
User scp
IdentityFile ~/.ssh/id_asa由于所有这些密码器/算法由于安全原因而逐渐被废弃,因此谨慎的做法是将它们的使用限制在仍然需要它们的目标上。同样,您应该使用专用标识(密钥对文件)来帮助进一步减少暴露。
https://networkengineering.stackexchange.com/questions/81028
复制相似问题