美文网首页
linux实现ssh 远程主机免密码登录

linux实现ssh 远程主机免密码登录

作者: SunnyMore | 来源:发表于2018-04-02 21:38 被阅读18次

    (一)问题:

    假如我们现在有两台机器:ServerMaster和ServerSlave,现在想要让ServerMaster不用输入密码就能够访问ServerSlave。

    (二)方法和原理:

    我们使用ssh-keygen在ServerMaster上生成private和public密钥,将生成的public密钥拷贝到远程机器ServerSlave上后,就可以使用ssh命令无需密码登录到另外一台机器ServerSlave上。

    在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法【默认是DSA算法】,该工具做linux系统的远程管理是非常安全的。

    (三)实验步骤:

    1.登录ServerMaster

    2.使用ssh-keygen -t dsa命令,将会生成公钥和私钥文件id_dsa和id_dsa.pub【如果一直回车下去,最后这两个文件应该在/home/$USER/.ssh下面】

    3.将 .pub文件复制到ServerSlave机器的 .ssh 目录下,并保存为authorized_keys

    可以使用:

    ssh-cop-id命令会将指定的公钥文件复制到远程计算机,eg.

    [iotspark@iotsparkmaster ~]$ cd .ssh
    [iotspark@iotsparkmaster .ssh]$ ll
    total 16
    -rw-r--r--. 1 iotspark iotspark  601 Mar 23 04:37 authorized_keys
    -rw-------. 1 iotspark iotspark  668 Mar 23 04:37 id_dsa
    -rw-------. 1 iotspark iotspark  601 Mar 23 04:37 id_dsa.pub
    -rw-r--r--. 1 iotspark iotspark 1179 Apr  3 04:56 known_hosts
    [iotspark@iotsparkmaster .ssh]$ cd ..
    [iotspark@iotsparkmaster ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub iotspark@172.16.22.52
    /usr/bin/ssh-copy-id: ERROR: No identities found
    [iotspark@iotsparkmaster ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub iotspark@172.16.22.52     
    The authenticity of host '172.16.22.52 (172.16.22.52)' can't be established.
    RSA key fingerprint is 81:48:42:50:3b:63:f9:96:89:f3:8c:b3:82:9c:60:3b.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '172.16.22.52' (RSA) to the list of known hosts.
    iotspark@172.16.22.52's password: 
    Now try logging into the machine, with "ssh 'iotspark@172.16.22.52'", and check in:
    
      .ssh/authorized_keys
    
    to make sure we haven't added extra keys that you weren't expecting.
    
    [iotspark@iotsparkmaster ~]$ ssh iotspark@172.16.22.52
    Last login: Tue Apr  3 00:36:41 2018 from 10.45.20.14
    iotspark@iotsparknode2[/usr/iotspark]$
    

    4.大功告成,从ServerMaster机器登录ServerSlave机器的目标账户,不再需要密码了

    5.设置文件和目录权限【这一步可以省略,但是为了安全起见,加上也是有必要的~】

    设置authorized_keys权限

    chmod 644 authorized_keys
    

    设置.ssh目录权限

    chmod 700 -R .ssh

    6.要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。

    报错:

    The authenticity of host '172.16.22.52 (172.16.22.52)' can't be established.  
    
    1. 如果要实现相互的免密码登录,只需要在对应的主机继续执行步骤2,3即可;

    注意:

    如果我们添加公钥后,还是无法访问,也可能是ServerMaster主机上面的一个文件known_hosts中已经存在ServerSlave的ip信息,删除重新访问即可。

    另外,如果以上方法尝试过后还是不行,可能是因为登录失败次数过多被锁定,这个时候我们就需要去看看我们的系统日志了/var/log/messages,将之前的锁定信息日志删除就可以了。

    然后,权限部分以及生成DSA文件具体可以参考另一篇博客:linux实现ssh localhost免密码登录

    相关文章

      网友评论

          本文标题:linux实现ssh 远程主机免密码登录

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