场景:先由A和B两台机器,要使用scp命令,在shell中将A主机的文件复制到B主机,且这个shell脚本是crontab定时任务,自动定时执行,所以需要配置免密码从A复制文件到B。
1. A主机中输入命令:ssh-keygen -t rsa
在后面的等待输入全部直接回车,直到命令结束,如下:
[root@cosmoplat-cluster-1 bin]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #这里直接回车,不要输入路径
Enter passphrase (empty for no passphrase): #这里直接回车,不要输入密码
Enter same passphrase again: #这里直接回车,不要输入密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:U/T/AOA2pok3tlfTQqtwz0dQQy2Zm0t1jf62bf8MpBY root@cosmoplat-cluster-1
The key's randomart image is:
+---[RSA 2048]----+
| o .+=.|
| o o .=.=|
| * =. =.|
| . * o *= |
| . S . E.*o |
| o * = B.oo|
| . o = o.+|
| . . . +o|
| .*|
+----[SHA256]-----+
上面会生成一个id_rsa.pub文件到/root/.ssh路径下。这里面保存了一个密钥。
2. 复制文件/root/.ssh/id_rsa.pub 到B主机的/root/.ssh 路径
3.1 一定要注意:如果B主机下面有authorized_keys文件,则把id_rsa.pub中的内容复制并追加到B主机的authorized_keys文件中
3.2 如果B主机下没有文件,则vi直接创建一个authorized_keys文件,并把id_rsa.pub中的内容复制到authorized_keys文件中
4. 测试,从A主机直接scp命令复制文件到B主机,可以直接复制过去,如下:
[root@cosmoplat-cluster-1 .ssh]# scp -r /opt/apache-cassandra-2.1.9/bin/backup.sh root@10.133.0.65:/home
\S
Kernel \r on an \m
Warm tips :Authorized for Haier Utility's Uses only. All activity may be monitored and reported.
If you have any questions,please contact us.
Mailbox:dts.jxjg@haier.com
Phone:68066686 / 1000 / 8173
backup.sh 100% 2579 1.8MB/s 00:00
总结:A主机生成一个证书密钥给B主机,B主机把这个证书密钥保存到自己的/root/.ssh/authorized_keys文件中,然后,从A主机复制文件到B主机就不再需要密码了。
注意:使用此方法需要两台计算机使用相同的账户名,这里都是用的root。
over.