我有一个旧的 id_dsa ssh 密钥,我想保留它以用于我的测试机器的无密码 ssh,但最近它不再适用于 ssh。 “最近”包括从 SuSE Leap 42.2 -> 42.3 -> 15.0 升级。我的问题是以下内容是否是我这边的错误、错误或有意为之:
b@e:~> openssl version
OpenSSL 1.1.0h-fips 27 Mar 2018
b@e:~> ssh-keygen -tdsa -f id_dsa_test
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_dsa_test.
Your public key has been saved in id_dsa_test.pub.
The key fingerprint is:
SHA256:6FAgJTbbKgccBg06364z2ATph0Zs+8rsmda7njArnk8 b@e
The key's randomart image is:
+---[DSA 1024]----+
|+==.o |
...
|=.%+. |
|=@=Oo |
+----[SHA256]-----+
b@e:~> openssl dsa -text -noout -in id_dsa_test
read DSA key
Private-Key: (1024 bit)
priv:
10:dd:1f:...
aa:af:5b:ad:06
pub:
22:c4:ff:...
52:70:4d:8b:4d:cf:ca:53:2f
Q:
00:82:6f:...
5e:1c:20:03:3d:6b
G:
4d:18:15:...
43:8e:d5:1f:7f:59:f7:e6
到目前为止,一切都很好,但是:
b@e:~> ssh-keygen -Lf id_dsa_test
id_dsa_test:1: invalid key: invalid format
id_dsa_test:2: invalid key: invalid format
id_dsa_test:3: invalid key: invalid format
id_dsa_test:4: invalid key: invalid format
id_dsa_test:5: invalid key: invalid format
id_dsa_test:6: invalid key: invalid format
id_dsa_test:7: invalid key: invalid format
id_dsa_test:8: invalid key: invalid format
id_dsa_test:9: invalid key: invalid format
id_dsa_test:10: invalid key: invalid format
id_dsa_test:11: invalid key: invalid format
id_dsa_test:12: invalid key: invalid format
而且 ssh 总是回退到密码身份验证,无论我使用原始证书还是新创建的证书......
答案1
ssh-keygen选项-L
适用于 OpenSSH 证书,而不是普通密钥。尝试使用ssh-keygen -lf id_dsa_test
它,这应该会产生您期望的输出。
此外,正如您所发现的,对 DSA 的支持已被弃用。因此,目前,您需要明确进行更新以继续支持 DSA,但在某个时候,OpenSSH 计划完全删除对这些密钥类型的支持。
您可能应该更新 ssh_config 文件以使用“PubkeyAcceptedKeyTypes +ssh-dss”,以便将密钥类型添加回默认列表,而不是用仅包含 ssh-dss 的列表替换它。如果将其添加到 /etc/ssh_config 而不是 ~/.ssh/config (在主机块下),则尤其如此。
看https://security.stackexchange.com/questions/112802/why-openssh-deprecated-dsa-keys