ssh localhost 配置免密登陆仍需要密码的解决方法
2019-06-25 本文已影响0人
katsura_911
最近在看spark的书籍,书中第一步搭建单机spark的时候,有一个操作是设置ssh无密码的登陆了。万万没想到,在这一步就卡住了。已经成功配置了免密登陆,但是ssh localhost还是需要输入密码。在阿里云香港服务器挂掉之后,百度了两天才找到解决方法。特此记录。
1.查看ssh日志的方法
ssh -v localhost /*查看简略日志*/
ssh -vvv localhost /*查看详细日志*/
查看日志是分析问题中很重要的一环,因为ssh中会出现各种不同的问题,每种问题的解决方法不一样。
2.开启本地ssh的dsa认证
ssh -vvv localhost 报的错误信息
debug1: Skipping ssh-dss key /home/xxxx/.ssh/id_dsa - not in PubkeyAcceptedKeyTypes
日志显示ssh跳过了dsa的认证方式,最后只能通过密码认证的方式。
通过查询资料发现,ssh 7.0之后就已经默认关闭了dsa认证方式。
ssh -V
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017 /*我的ssh是7.6版本了*/
于是修改ssh的配置文件ssh_config,在验证方式中加入dsa
sudo vim /etc/ssh/ssh_config
PubkeyAcceptedKeyTypes=+ssh-dss /*在ssh配置文件中增加如下语句*/
3.开启服务器的dsa认证
按照教程修改完配置文件后,ssh localhost任然需要输入密码,查看日志如下。·
ssh -vvv localhost
debug1: Offering public key: DSA SHA256:53DPoBDWsyPrCMfQIpCdi1U2z2zVhOgTlkerbysUe2I /home/liuzw/.ssh/id_dsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
可以看出修改过后,ssh时已经提供了DSA秘钥,但是好像校验没有通过,所以最后还是进入了输入密码验证的环节。
通过查阅资料和自己推理,问题可能出在服务端校验不通过,因为服务器端也不支持dsa这种认证方式,那就试着修改一下服务器端的配置文件。
sudo vim /etc/ssh/sshd_config
PubkeyAcceptedKeyTypes=+ssh-dss /*在sshd配置文件中增加如下语句*/
ssh_config 和 sshd_config 分别是ssh客户端和服务器端的配置文件,ssh localhost就是一个本地客户端向本地服务器请求的过程。
4.重启sshd服务
修改sshd文件后,ssh localhost还是需要密码。就在我差点自闭的时候,看到有帖子说要重启一下ssh服务器。
service ssh restart
重启完成后,ssh localhost免密登陆成功。长舒一口气。
后来经过测试,修改ssh配置文件不用重启服务,但是修改sshd配置文件,是要重启才能生效的。
5.弃用dsa认证的理由
据说是因为dsa是不加密的,后面都改用rsa了,遇上同样问题的小伙伴可以自己去查一下。
ok,这次的总结就到这里。话说这梯子断了也太痛苦了,运营商啥时候能把香港的线路通了啊。
``