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 ##远程同步到本地,拉

 

posted @ 2017-07-20 17:02  YaChenYa  阅读(243)  评论(0编辑  收藏  举报