关于配置了密钥对之后ssh连接localhost仍然需要输入密码的问题的解决方法
前提:
设置了root用户密码,并且允许root用户登录
现象:
按照hadoop文档:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
运行之后,使用service sshd restart
重启ssh服务之后,运行ssh localhost
仍然必须输入密码。
原因:
OpenSSH 7 版本后禁用了使用dsa算法生成的密钥对登录。在最近使用golang编译的版本中甚至移除了dsa算法,dsa算法生成的密钥对变得完全不可用。
解决方法:
使用rsa算法生成密钥对,或者允许dsa算法生成的密钥对登录。但后者不对最新版本ssh起作用。
1. 使用rsa算法生成密钥对(推荐)
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ service sshd restart $ ssh localhost
2. 允许dsa算法生成的密钥对登录(在golang编译的最新版本不可用)
编辑/etc/ssh/sshd_config
$ vim /etc/ssh/sshd_config
在最后一行追加:
PubkeyAcceptedKeyTypes +ssh-dss
再使用官方文档上的dsa算法生成密钥对即可
参考:
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 ipangbo.cn
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果