两台linux服务器免密传输配置
两台linux之间,免密配置好之后,可以免密ssh登录,可以免密传输文件,方便使用,另外在jenkins部署应用的时候,也会用到
两台服务器,分别是A,B
A上面的用户userA,密码passA
B上面的用户userB,密码paasB
在这两个用户之间配置免密
这里,我们以设置A到B的免密传输为例
1.首先,确定两台机器可以正常传输文件
从A到B
scp tmp.txt userB@192.168.1.2:/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 userB@192.168.1.2:/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 userB@192.168.1.2
最后的ip是B服务器的ip地址
执行完成后,会得到一长串的打印输出,查看错误,然后百度吧。。。
网友评论