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

经常在服务器程序(脚本)里面,或在命令行中,执行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也是一样。

ssh

相关推荐