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