OpenSSH 不接受 ECDSA 密钥

OpenSSH 不接受 ECDSA 密钥

我刚刚生成了一个 ECDSA 密钥ssh-keygen

ssh-keygen -t ecdsa -b 521 

然后我将这个密钥复制到我的服务器:

cat .ssh/id_ecdsa.pub | ssh myserver "tee -a .ssh/authorized_keys"

我已经验证我的密钥在文件中。

但是,当我尝试连接时,我的连接被拒绝:

ssh -v -i .ssh/id_ecdsa myserver

日志:

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to myserver [192.168.1.1] port 22.
debug1: Connection established.
debug1: identity file .ssh/id_ecdsa type 3
debug1: Checking blacklist file /usr/share/ssh/blacklist.ECDSA-521
debug1: Checking blacklist file /etc/ssh/blacklist.ECDSA-521
debug1: identity file .ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.1
debug1: match: OpenSSH_6.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr 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: Server host key: RSA 10:27:b8:78:2c:e1:e3:42:8e:e3:66:c4:cc:4e:f1:c0
debug1: Host 'myserver' is known and matches the RSA host key.
debug1: Found key in /home/naftuli/.ssh/known_hosts:73
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering ECDSA public key: .ssh/id_ecdsa
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

在服务器日志中发现:

auth.info sshd[13874]: userauth_pubkey: unsupported public key algorithm: ecdsa-sha2-nistp521 [preauth]

我的客户端和服务器都使用 OpenSSH。服务器的 OpenSSH 版本是 OpenSSH 6.1,我的客户端的 OpenSSH 版本是 OpenSSH 5.9。

如何知道我的服务器支持哪些密钥算法?

答案1

与许多其他嵌入式系统一样,OpenWrt 使用滴熊作为其 ssh 服务器,而不是 Linux 系统上常见的更重量级的 OpenSSH。旧版本的 dropbear 仅支持 RSA 和 DSA 密钥;直到版本 2013.62(几天前刚刚发布)。

它应该很快就会出现在“Barrier Breaker”(主干)中;但你不会在“Attitude Adjustment”中看到它。

答案2

ecdsa得到支持openssh-server 版本 5.7。您正在运行哪个版本的 openssh-server?运行dpkg -l | grep openssh-server | awk '{print $3}' | cut -d: -f2以查找版本。

答案3

如果您的系统Red Hat Enterprise Linux 6.4(或更早)或Fedora 19(或更早),注意 ECDSA 已从那里删除。我不知道为什么会这样(可能是法律原因):https://www.mail-archive.com/[电子邮件保护]/msg00755.html

答案4

把这个留在这里是因为这件事发生在我身上:

第 1 天:设置一台新机器,我先复制了密钥 - 然后就能正常登录了。

第 2 天:我无法使用 ed25519 密钥登录。啊?我添加了一个 RSA 密钥;它起作用了。我生成了一个新的 ed25519 密钥,然后可以用……但是我的旧版本不行。WTF?

测试后发现,我将密钥安装到 root 的 .ssh/authorized_keys 中作为备份……并忘记修复该文件的权限。因此 openssh 将我的密钥列入黑名单,导致我无法登录。修复 /root/.ssh/authorized_keys 上的权限后,我便可以登录作为我的用户

相关内容