ssh 免密码远程登录
背景:
公司有两台服务器A与B,经常会碰到代码中的配置文件不一致的情况...............,为了反面让两台服务器配置统一,所以需要写个shell脚本,用到的linux命令主要是scp
1、在A上生成ssh的私钥和公钥【生成的目录在当当前目录下的.ssh目录下,.ssh 是隐藏文件】
ssh-keygen -t rsa ##需要3次回车
ssh-keygen -t rsa -P ##仅一次回车
2、把A的公钥内容传到B的用户目录的.ssh文件夹下的authorized_keys文件中
scp ~/.ssh/id_rsa.pub user@B_host_or_ip:~/.ssh/authorized_keys ##希望每次自动登录用什么用户,这里的B_user就用什么帐号,因为默认会考到这个帐号下.ssh中
ps:一定要把内容放到authorized_keys文件里,如果这个文件已经存在,那就追加到后面即可,不要覆盖了。
3、A再用ssh进行操作时就不需要输入密码了
ssh B_user@B_host_or_ip ##直接登录成功
scp脚本如下:
#!/bin/sh
path="/home/work/flight/order"
filename="conf"
ip="ip"
cd $path && mv conf conf_bak
echo "---生成备份文件conf_bak-----"
#scp -r $path/$filename tester@$ip:$path/
scp -r tester@$ip:$path/$filename $path/
echo "---------拷贝完毕---------------"
另外说下scp和rsync的区别
1、scp和ssh是一套,用来Linux 2台服务器的文件传输。和ssh一样的安全传输协议,所以使用scp命令进行服务器间的文件复制不用手动输入密码,scp就是安全copy的意思
2、Rsync 和scp相比,它可以只备份有差异的文件,减少了不少时间,另外也支持ssh
rsync -avH [ssh] /path/to/source user@des:/path/to/local ##本地同步到远程,推
rsync -avH [ssh] user@des:/path/to/source /path/to/local ##远程同步到本地,拉