有两台服务器,服务器A(10.10.252.158)和服务器B(10.10.252.178)。
现在想在服务器A上通过SSH连接服务器B,或通过SCP、Rsync向服务器B传输文件。但这三种情况下都需要用户提供服务器B的用户名和密码,有些情况下用户可能需要在服务器A上直接通过SCP或Rsync向服务器B上传输文件,而不方便输入服务器B的用户名或密码(比如在计划任务cron中),这是可以使用认证方式连接服务器B,具体方法如下。
(1)以root用户登录服务器A,在服务器A的终端上输入:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): (回车)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): (回车)
Enter same passphrase again: (回车)
这时在/root 目录下生成一个.ssh的文件夹,进入此文件夹,里面有两个文件:id_rsa id_rsa.pub
(2)以root用户登录服务器B,将id_rsa.pub(公钥)文件拷贝到服务器B的/root/.ssh 目录下(如果没有这个目录则创建之)
scp 10.10.252.158:/root/.ssh/id_rsa.pub /root/.ssh/
(3)在服务器B上,将服务器A传输过来的 id_rsa.pub 重命名为 authorized_keys
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
(4)至此配置已经完成,现在测试一下,试试是否设置成功,在服务器A的终端上输入下面命令:
ssh 10.10.252.178
如果是第一次连接服务器B,则会出现下面的提示
The authenticity of host '10.10.252.178 (10.10.252.178)' can't be established.
RSA key fingerprint is e7:38:bd:4d:b7:c6:f6:b1:e5:7d:9f:3c:0f:a7:43:80.
Are you sure you want to continue connecting (yes/no)?
输入yes或no之后,如果看到类似于如下的提示:
Last login: Tue Nov 6 01:05:08 2012 from 10.10.252.105
则说明登录成功了,可以用ifconfig命令查看一下此时登录的服务器的IP地址。
(5)测试一下rsync
在服务器B的终端上输入下面命令(注意如果这时已经通过服务器B的终端登录到了服务器A,需要先用exit命令退出)
rsync -avc root@10.10.252.178:/root/test/ /root/data
receiving incremental file list
./
1.txt
2.txt
sent 52 bytes received 176 bytes 456.00 bytes/sec
total size is 0 speedup is 0.00
将会看到此时已经不在提示输入密码了。
(6)如果现在想让服务器C也能通过认证方式登录服务B,就要重复服务A上的操作了。
以root用户登录服务器C,在其终端上输入:
ssh-keygen -t rsa
然后一路回车,在服务器C的/root/.ssh/目录下生成服务器的秘钥,将公钥id_rsa.pub拷贝到服务器B上
scp 10.10.252.158:/root/.ssh/id_rsa.pub /root/.ssh/
这时因为服务器B上已经存在authorized_keys文件了,只需要将id_rsa.pub的文件内容追加到authorized_keys文件末尾即可:
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
这样服务器C也就可以通过认证方式连接服务器B了。