cp/scp都是linux中常用的命令.Scp的简单用法之前有介绍过不同LINUX服务器之间复制文件的方法(scp命令)

如果是我们自己在shell下使用,输入下密码没有任何问题,但是如果是自动脚本,那么怎么才能不输入密码,又保证任务能够继续进行呢?

假如,我们是需要在服务器A(192.168.1.1)上,需要周期性的复制服务器B(192.168.1.2)上的文件

首先,我们在服务器A上执行命令

ssh-keygen -t rsa

会提示

Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):

一直按enter,按到最后会提示你生成成功了

将生成的/home/test/.ssh/id_rsa目录下的id_rsa.pub复制到服务器B的/home/test/.ssh/下,并改名为authorized_keys

远程复制命令

scp /home/test/.ssh/id_rsa/id_rsa.pub test@192.168.1.2:/home/test/.ssh/authorized_keys

这样在shell里面使用就不需要输入密码了

分割线:上面是原来的笔记,貌似逻辑有点乱

两台服务器:A(192.168.1.10),B(192.168.1.9)

需要实现的效果:A免密scp复制到B

步骤

首先,在A上比如我有vilay账户,在当前登录用户(vilay)下执行

ssh-keygen -t rsa

会在/home/vilay/.ssh/下生成一个公钥文件id_rsa.pub

在B上假设root用户,先把上面的文件(id_rsa.pub)复制到B(/root/)目录下,执行下面命令

cat id_rsa.pub >> .ssh/authorized_keys

然后在A上就可以使用scp不需要密码了。如果需要另一个用户也是免密,再次执行上面到步骤。

__有可能遇到的问题:__authorized_keys 因文件编辑导致权限变更,如果确认公钥有添加,查看下文件权限

stat -c '%A %a %n' authorized_keys

如果是600的话,可能需要修改成644 644