linux中ssh无密码登陆的实现

来源:互联网 发布:知到智慧树形势政策课 编辑:程序博客网 时间:2024/05/25 18:10

 

假设有三台机器:192.168.1.218和192.168.1.32和192.168.1.246
现在需要在机器192.168.1.218上不需要密码就可以ssh登陆到192.168.1.32和192.168.1.246
为方便起见我们假设用root身份登陆。
步骤:

(一、)解决ssh登陆

     分别在192.168.1.32和192.168.1.246上的/etc/hosts.allow文件中加入一行
      sshd : 192.168.1.218: allow

(二、)解决无需密码输入

(1)在机器192.168.1.218、192.168.1.32、192.168.1.246上都运行ssh-keygen -t rsa默认生成的id_rsa.pub和id_rsa文件放在/root/.ssh/中。
(2)在192.168.1.218上用cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys建立密匙文件authorized_keys,输入ssh localhost查看配置是否成功。
(3)在192.168.1.218上用scp  /root/.ssh/authorized_keys 将密匙文件authorized_keys复制到192.168.1.32中。输入ssh 192.168.1.32查看配置是否成功。
(4)在192.168.1.218上用scp  /root/.ssh/authorized_keys 将将密匙文件authorized_keys复制到192.168.1.246中。输入ssh 192.168.1.246查看配置是否成功。

注:

在ssh登陆的设置过程中可能会出现类似于下面的错误
Address 192.168.1.32 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
这是因为我们在A机器中登陆B机器,A机器需要知道B机器的机器名(B机器名的获取方法:在B机器中运行uname -a 第二个字段即是),这个过程叫做机器名解析。我们可以在A机器的/etc/hosts文件中将B机器的文件名加入,这样在机器名解析的时候就能得到B机器的机器名了。比如:
    192.168.1.32    bj-adws-32
如果还是不起作用,则我们可以在A机器中关闭机器名解析:编辑/etc/ssh/ssh_conf 将GSSAPIAuthentication选项的值设置为no就可以了.

原创粉丝点击