SSH DSA密钥不再适用于无密码身份验证


25

升级到Fedora 23后,无密码(基于公共密钥)的身份验证在SSH中不再起作用:尝试通过SSH到某个主机时,它会提示我在远程主机上输入密码。我无法使用SSH私钥。Fedora 22一切正常。

我的公共密钥是DSA密钥(~/.ssh/id_dsa.pub)。我正在使用OpenSSH 7.1(openssh-7.1p1-5.fc23.x86_64)。

如何使无密码身份验证再次正常工作?



1
谢谢,@ dave_thompson_085。这不是superuser.com/q/962918/93541的伪装。这个问题在问如何使用ssh -Q。这是在询问如何对SSH故障进行故障排除。我确实在superuser.com/q/962918/93541和其他地方找到了一些材料,可以帮助您确定该解决方案,但是那里的答案描述了如何使用ssh -Q,但没有回答这个问题(例如,它没有解释如何解决此问题)这个问题),所以我认为这不是重复。在Unix和Linux的一个非常相似的; 我希望能早一点看到。再次感谢您的链接!
DW

阿克,你是对的。我把它们都标记为“ OpenSSH 7.0 no DSA”,在前一种情况下还不够接近。抱歉。
dave_thompson_085

Answers:


40

这是升级到OpenSSH 7.0的结果。正如OpenSSH 7.0发行说明所说,“默认情况下,运行时默认禁用对ssh-dss主机和用户密钥的支持”。

解决方案是~/.ssh/config在每台客户端计算机(运行SSH客户端的每台计算机)上添加以下行:

PubkeyAcceptedKeyTypes=+ssh-dss

如果服务器使用的是OpenSSH 7.0或更高版本,则需要将此行添加到/etc/ssh/sshd_config每台服务器计算机上。

或者,您可以生成一个全新的SSH密钥,并将其添加到您要登录的每台服务器上的authored_keys文件中。 我建议您使用RSA,以避免兼容性问题。我不建议使用ECDSA,因为显然gnome-keyring-daemon不会自动选择 ECDSA类型的SSH密钥。


社论评论:为什么OpenSSH人员禁用DSA密钥?我不知道。据我所知,DSA密钥(ssh-dss)的安全性没有问题。在OpenSSH的网页声称,SSH-DSS较弱,但据我所知,1024位SSH-DSS是不超过1024位RSA弱,和1024位RSA密钥未禁用。


1
关于密钥类型的选择在“ 安全性”上讨论了一段时间。DSA密钥的安全性从一开始就值得怀疑,如果您没有好的随机生成器(您无法确定),那么安全性就较差。而且由于现在还有其他可能使用的密钥类型,因此没有理由保留有问题的密钥类型。
2015年

2
@Jakuje,是的,此处此处在“信息安全”中讨论了密钥类型的选择。在写评论之前,我已经阅读了所有这些内容,但我仍然对为什么禁用DSA密钥感到困惑:它们并不比未禁用的相同长度的RSA密钥弱。在这些线程中,没有任何一个表明DSA是“可疑的”,并且正如Thomas Pornin所说的那样,“没有足够的安全性理由假设一个足够大的密钥来偏爱一种类型”。(续)
DW

请参阅此处进行更详细的讨论。
DW

0

我的两分钱

我建议编辑.ssh/config文件以允许这样做似乎不是一个主意。

  1. 通过使用最新工具来创建新密钥。

    然后将新的公钥复制到clipbord中

  2. 使用旧密钥最后一次记录:

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    

    然后通过添加新的pubkey和注销来升级@hostauthorized_keys文件

    cat >>.ssh/authorized_keys
    

    paste,然后Ctrl+D

  3. 使用默认语法使用新密钥登录:

    ssh user@host
    
    1. 然后通过删除旧的pubkey(我的旧pubkey在此文件的行上时使用)来升级@hostauthorized_keys文件。sed -e 1d -i .ssh/authorized_keys1

    2. 如果可以的话,我建议升级您的ssh服务器。

    3. 登出
  4. 测试旧密钥是否不再起作用。

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    ...
    Permission denied...
    

    这不必工作;-)

  5. 您甚至可以重新检查是否一切正常:

    ssh user@host uptime
    

对于我来说,为什么您认为编辑~/.ssh/config不是一个好主意,这并不明显。
DW

因为这是过时和ssh笔者推荐给不使用。参见openssh.com/legacy.html
F. Hauri,

噢,我明白。听起来您关心的不是~/.ssh/config本身的编辑想法,而是允许DSA的想法。感谢您的解释。那讲得通。(我认为我已经在回答评论中提到了为什么我觉得该建议令人费解,但在这里我不会尝试对此进行辩论。)
DW18年

编辑.config使您能够ssh使用算法长时间执行,甚至陷入混乱。通过-o Pubkey...在命令行上使用,您不会原谅要升级的东西
F. Hauri '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.