mz

Linux SSH , SCP 建立信任关系(免密传输)

最近有个需求,需要将war传输到各个项目节点中,所以需要远程执行各个节点的shell脚本.但是中间有个输入密码的过程,在自动化部署中是行不通的,故需要增加免密登录.具体如下:

现有A,B,C三台机器。A为工作电脑,BC为网络服务器,A需要ssh操作B或C机器通过密匙避免输入密码(真懒):

思路:A生成ssh钥匙,实际上用公匙就可以了,默认名称为id_rsa.pub,通过scp传输到BC服务器上,cat写入.ssh目录下authorized_keys文件,如果没有这个文件就直接创建,给600权限,之后A服务器就可以通过id_res.pub登陆BC。

如果想实现ssh 服务器名称 这样进行登陆 在.ssh目录创建config文件内容格式为:(可以写多个)

Host goodpay
        HostName 47.89.22.252
        User root
        Port 22
        IdentityFile ~/.ssh/id_rsa

 

以下为具体命令:

1.

A机器上

ssh-keygen -t rsa

如果A机器上的目录(home/.ssh/,如果是root用户,则目录是在root/.ssh/)没有 authorized_keys 文件,那么:

	
cp /home/xxx/.ssh/id_rsa.pub /home/xxx/.ssh/authorized_keys

 

2.

B,C机器上:

ssh-keygen -t rsa

 

B,C机器的目录是这样的:忽略known_hosts文件,系统自动生成的.

3.

将B,C机器中的id_rsa.pub的内容cat到A机器的 authorized_keys 中去:

然后:

cat [B,C机器的id_rsa.pub文件] >> [A机器的authorized_keys文件]

 

回车,完成;

最后:

 

在B和C机器上:  chmod 644 authorized_keys  这一步非常关键,必须保证 authorized_keys 只对其所有者有读写权限,其他人不允许有写的权限,否则 SSH 是不会工作的

可以直接 ssh username@ 机器名了,同一台机器的不同用户直接也可以以这种方式来访问

 

如果经过上面的步骤还是提示需要密码,注意一下权限问题,主要有三个权限

(1) /home/username这目录的权限应该是700

(2) /home/username/.ssh 这个目录的权限也应该是700

(3) /home/username/.ssh/ authorized_keys这个文件的权限是644

如果还是不正确,那么tail /var/log/secure一下这个日志文件,就能发现问题。

码字很辛苦,转载请注明来自明志博客《Linux SSH , SCP 建立信任关系(免密传输)》

评论