root用户host1想不输入密码就登录host2


1、root登录到了host1

使用ssh-keygen生成一对rsa公私钥,生成的密钥对会存放在~/.ssh目录下。

$ ssh-keygen -t rsa


2、使用下面的命令在目标主机hostB上的root用户目录下创建~/.ssh目录。如果在root@hostB上已经存在.ssh目录,这一步会被略过。

$ ssh root@hostB mkdir -p .ssh


上述的创建目录并复制的操作也可以通过一个 ssh-copy-id 命令一步完成:ssh-copy-id -i ~/.ssh/id_rsa.pub aliceB@hostB

3、将hostA上root的公钥拷贝到root@hostB上,来实现无密码ssh。

$ cat .ssh/id_rsa.pub | ssh root@hostB 'cat >> .ssh/authorized_keys'



4、可能出现的问题

即使在密钥认证生效后,你可能仍然需要输入SSH密码。如果遇到这种情况,请检查系统日志(如/var/log/secure)以查看是否出现下面的异常。

Authentication refused: bad ownership or modes for file /home/aliceB/.ssh/authorized_keys

在这种情况下,密钥认证的失败是由于~/.ssh/authorized_keys文件的权限或拥有者不正确。一般情况,如果这个文件对除了你之外的所有用户都可读,就会出现这个错误。用下面的方式改变文件的权限以修正错误。

$ chmod 700 ~/.ssh/aut

horized_keys

也是借鉴了华为的一个配置方案。


两台服务器之间建立双机信任。

  1. userslb用户登录备节点host2。

  2. 生成SSH密钥。

    ssh-keygen -t dsa

  3. 修改“.ssh”的执行权限。


    % chmod 700 ~/.ssh


  4. “id_dsa.pub”文件的内容拷贝到“$HOME/.ssh/authorized_keys”文件中。


    % cp $HOME/.ssh/id_dsa.pub $HOME/.ssh/authorized_keys


  5. userslb用户登录主节点host1,执行24

  6. 复制备节点的公钥文件到主节点。


    % scp host2:$HOME/.ssh/id_dsa.pub $HOME/.ssh/id_dsa_op.pub

    说明:

    host2为备节点的主机名,执行命令时需要输入userslb用户的密码。

  7. 在将复制过来的“id_dsa_op.pub”的内容追加到“$HOME/.ssh/authorized_keys”文件中。


    % cat $HOME/.ssh/id_dsa_op.pub >> $HOME/.ssh/authorized_keys

    % rm $HOME/.ssh/id_dsa_op.pub


  8. 检查“$HOME/.ssh/authorized_keys”文件中是否包含备节点用户的公钥。


    % cat $HOME/.ssh/authorized_keys | more

    说明:

    如果“authorized_keys”文件中有“用户名@节点名”,如“userslb@host2”,表示已经包含host2userslb用户的公钥。


  9. 在备节点上执行68,将主节点的公钥追加到备节点的“$HOME/.ssh/authorized_keys”文件中。

  10. 分别在主备节点上将passphrase加入内存中。


    % exec /usr/bin/ssh-agent $SHELL

    % ssh-add

    系统提示:

    Identity added: /home/userslb/.ssh/id_dsa (/home/userslb/.ssh/id_dsa)


  11. 检查信任关系是否已经建立。


    在主节点host1上执行:

    % ssh 10.10.1.10

    % ssh 10.10.1.11

    在备节点host2上执行:

    % ssh 10.10.1.10

    % ssh 10.10.1.11

    说明:


    1. 不需要输入密码即可登录另一节点,表示两节点userslb用户的信任关系建立成功。

    2. 首次进入对端机系统可能提示下面的信息:

      The authenticity of host 'host2 (10.10.1.11)' can't be established.
      RSA key fingerprint is ae:97:5f:3c:9e:7a:79:e8:a0:e3:17:8a:8a:53:4b:d2.
      Are you sure you want to continue connecting (yes/no)?

      输入yes即可。

  12. 异常处理

  13. 如果在执行11时出现如下错误提示:

  14. ssh: connect to host host2 port 22: Connection refused
  15. 表示此节点上的ssh服务未启动,需执行以下命令,启动ssh服务:

  16. # sshd