服务器SSH(免密登录)

使用scp 或者 rsync命令在多台Linux服务器之间同步文件时需要输入密码,除了使用expect实现自动化交互以外,还有一种方法就是配置服务器之间ssh免密登录,本文记录一下具体配置过程。

一、创建.ssh目录

假定有2台Linux主机,分别为A,B

在所有主机上创建ssh目录并赋予权限

mkdir /root/.ssh 
chmod 700 /root/.ssh

二、生成公钥与私钥

所有主机生成公钥与私钥,执行以下命令:

# 进⼊入用户目录
cd ~
​
# 生成ssh密码,-t 参数表示生成算法,可以选择rsa和dsa;-P表示使用的密码,""表示无密码。
ssh-keygen -t rsa -P ""

出现Enter file in which to save the key (/root/.ssh/id_rsa): (直接回车(Enter))

三、将公钥追加authorized_keys文件中

将第一台主机A上生成公钥追加到authorized_keys文件中

# 进入.ssh目录
cd ~/.ssh
​
# 将id_rsa.pub的内容追加到authorized_keys文件中
cat id_rsa.pub >> authorized_keys

然后可以删除A上的id_rsa.pub文件,因为已经写进了authorized_keys文件中

rm -rf id_rsa.pub 
或者
mv id_rsa.pub id_rsa.pub.copy

接下来将B的id_rsa.pub写入到A的authorized_keys文件中,使用scp 或者 rsync命令分别将B机器的id_rsa.pub复制到主机A 。(scp 或者 rsync命令的使用方法可参考文章使用SCP或Rsync实现Linux主机之间文件、目录的复制)(同样的操作)

在主机B上操作 :

# hostA为A的主机名或者A的IP地址
scp id_rsa.pub hostA:~/.ssh/

也可以直接在主机A上操作,执行如下命令:

scp hostB:~/.ssh/id_rsa.pub ~/.ssh/

四、测试

ssh 主机ip地址

主机A -> B:

[root@hostA ~]# ssh 192.168.91.135

主机B -> A:

[root@hostB ~]# ssh 192.168.91.134