两台linux服务器免密传输配置

两台linux服务器免密传输配置

两台linux之间,免密配置好之后,可以免密ssh登录,可以免密传输文件,方便使用,另外在jenkins部署应用的时候,也会用到

两台服务器,分别是A,B
A上面的用户userA,密码passA
B上面的用户userB,密码paasB
在这两个用户之间配置免密

这里,我们以设置A到B的免密传输为例

1.首先,确定两台机器可以正常传输文件
从A到B

scp tmp.txt [email protected]:/home/userB

scp是 secure copy的缩写,可能也可以理解为ssh copy ,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
这个命令的使用方法

scp命令:
1、本地文件拷贝到远程服务器:  scp  文件名 用户名@计算机IP(或者计算机名称):远程路径
2、从远程服务器将文件拷回本地:scp  用户名@计算机IP(或者计算机名称):文件名本地路径
3、将本地目录拷贝到远程服务器:scp -r 目录名   用户名@计算机IP(或者计算机名称):远程路径
4、从远程服务器将目录拷回本地:scp -r 用户名@计算机IP或者(或者计算机名称):目录名本地路径

我们需要把tmp.txt拷贝到B服务器下的/home/userB目录,使用userB账号
执行上面的命令后,会要求输入userB的密码,正确输入userB的密码,文件会正确拷贝到B服务器的/home/userB目录下

如果拷贝失败,查看B服务器的/etc/ssh/sshd_config文件,关键配置

PasswordAuthentication yes

有可能这一项设置成了no
若这个sshd_config有修改,则需要重启sshd

service sshd restart

2.使用useA登录到A机器上,执行命令

ssh-keygen -t rsa -P ""

这个命令用来生成基于userA用户的A服务器的秘钥对
-P "" 表示不设置密码

命令执行后,一路按回车,直到执行完成。
此时,在userA的用户目录下,会生成一个 .ssh目录,这个目录是隐藏的,直接ls是无法看到的,

cd /home/userA/.ssh
ls

可以看到生成的两个文件 id_rsa id_rsa.pub
id_rsa 这个叫私钥
id_rsa.pub 这个叫公钥

3.将 id_rsa.pub 拷贝到 B机器上,可以通过自己电脑的中转拷贝,也可以用上面的scp命令拷贝
然后,到B机器上,执行命令:

cat id_rsa.pub >> /homg/userB/.ssh/authorized_keys

命令的意思就是将 id_rsa.pub 的内容,追加到authorized_keys这个文件中
为何是追加呢,因为如果有多台服务器要建立到B机器的免密登录,都需要将公钥写到这个文件里
为何我们要采用这种方式写入,而不是直接拷贝公钥内容过来呢
因为有时候在拷贝过程会出问题,比如换行,空格等等
直接通过命令追加,能够避免这些问题
通过命令

cat id_rsa.pub
cat /homg/userB/.ssh/authorized_keys

查看是否正确追加

4.在A机器上,执行

scp tmp.txt [email protected]:/home/userB

如果没有要求输入密码,就执行成功,则证明配置成功,如果还是需要密码,参考下面第五步

5.首先,查看B服务器的/etc/ssh/sshd_config文件,关键字PubkeyAuthentication 确保这个值是 yes
若这个sshd_config有修改,则需要重启sshd

service sshd restart

然后,使用命令
ls -l
查看B服务器文件及文件夹的权限
/home/userB 文件夹的权限为 700,即 显示的权限应该是 drwx------
/home/userB/.ssh文件夹的权限也为700
/home/userB/.ssh/authorized_keys 文件权限为600,即,显示的权限应该是 -rw-------
如果不是上述权限,使用命令chmod来修改
命令示例

chmod 700 /home/userB

设置完成后,在A服务器使用scp命令测试,如果还是无法免密,在A服务器上执行命令

ssh -vvv [email protected]

最后的ip是B服务器的ip地址
执行完成后,会得到一长串的打印输出,查看错误,然后百度吧。。。

你可能感兴趣的:(两台linux服务器免密传输配置)