服务器间访问不用密码的设置

  • Post author:
  • Post category:其他




经常在服务器程序(脚本)里面,或在命令行中,执行ssh,scp命令,会碰到要求密码的情况,很不方便!



如果在两台相互信任,其实步骤挺简单,假设要从主机1上执行,ssh,scp操作。



  • 主机1:host1    用户1:user1



  • 主机2:host2    用户2:user2



一:在

主机1

上执行下列操作:



1./home/user1/.ssh/ 目录下,执行:

ssh-keygen –t id_rsa


$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa):
/home/user1/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
12:a5:55:cc:1e:59:34:61:a2:41:ce:92:5a:a8:9d:ed user1@host1



2.一路默认回车,生成id_rsa.pub文件



3.cat id_rsa.pub >> authorized_keys











二:在

主机2

上执行下列操作:





1.拷贝主机1上的

authorized_keys文件到/home/user2/.ssh/目录下。







ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwvAv1SKPIkO2ucdmuz13RkVvSuZRKg/FGllbje/a2fDG2AYSdSKQSqe3GO/40YzA3BnVwBEY+cOKbTj9gpVWLf7bi1jZBDokeO3TWdQnzLfOObA4+F3EunwruyqekLTkAEpmoM400ndqmV5VGi1uvRl8gFgVes6pGkZAorzPll7vCCX4DC1R9XK8/VmtLm7Z4egR/UkPoiA9t7u/K3tdjn28DhPSEWnV1ggZZ30DxB14Mtw0+ZjP5joTISFXVBVDxbuUiibuS+2TmjVM3i20Ep1LTfzwFwYBbSGbReRIdowGsCaFK9zs6WIY84SRWR/mvIJOZQhbU1N/dQSnHobICQ== user1@host1



2.更改目录访问权限:

chmod 755 ~/.ssh/







三:最后在

主机1

上执行:






1. ssh user2@host2





2. scp user2@host2:/var/log/*.*   .





就不需要输入密码了。












NOTE:






首先ssh-keygen -t rsa命令生成了一个密钥和一个公钥, 而且密钥可以设置自己的密码。可以把密钥理解成一把钥匙, 公钥理解成这把钥匙对应的锁头,把锁头(公钥)放到想要控制的server上, 锁住server, 只有拥有钥匙(密钥)的人, 才能打开锁头, 进入server并控制。而对于拥有这把钥匙的人, 必需得知道钥匙本身的密码,才能使用这把钥匙 (除非这把钥匙没设置密码), 这样就可以防止钥匙被了配了(私钥被人复制)。当然, 这种例子只是方便理解罢了,拥有root密码的人当然是不会被锁住的, 而且不一定只有一把锁(公钥), 但如果任何一把锁, 被人用其对应的钥匙(私钥)打开了, server就可以被那个人控制了。

所以说, 只要你曾经知道server的root密码, 并将有root身份的公钥放到上面, 就可以用这个公钥对应的私钥”打开”server, 再以root的身分登录, 即使现在root密码已经更改!

如果想控制n个机器, 那就需要n对钥匙(密钥和公钥), ssh-keygen命令可以随意更改钥匙对的名字, 最好取容易识别的文件名,比如:

# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key(/root/.ssh/id_rsa):

/root/.ssh/id_rsa_192.168.10.1




……

这样私钥和公钥的名字分别就是:




id_rsa_192.168.10.1













id_rsa_192.168.10.1.pub




然后将 id_rsa_192.168.0.1.pub 文件的内容, 追加到服务器的~/.ssh/authorized_keys文件中,

最后, 在本地用ssh命令的 -i 参数指定本地密钥, 并登录:

# ssh -i /root/.ssh/id_rsa_192.168.10.1 192.168.10.1

如果密钥设置了密码, 就用密钥的密码登录, 没设密码, 就直接登录进去了。scp也是一样。





版权声明:本文为Jerry_1126原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。