美文网首页
ssh localhost 配置免密登陆仍需要密码的解决方法

ssh localhost 配置免密登陆仍需要密码的解决方法

作者: katsura_911 | 来源:发表于2019-06-25 23:09 被阅读0次

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

    ``

    相关文章

      网友评论

          本文标题:ssh localhost 配置免密登陆仍需要密码的解决方法

          本文链接:https://www.haomeiwen.com/subject/abdfcctx.html