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,这次的总结就到这里。话说这梯子断了也太痛苦了,运营商啥时候能把香港的线路通了啊。

``

上一篇下一篇

猜你喜欢

热点阅读