内部服务器免密码ssh登录设置

内部服务器免密码ssh登录设置

一、背景:

 平安银行项目,EZSonar产品总共部署4台服务器,1台探针服务器、3台管理引擎服务器(ES集群)。平安银行客户有要求,应用程序只能使用普通用户启动,同时在部署完交付给客户时,客户需要把服务器交给另外部门统一管理。每次需要登录时,都需要向服务器管理组申请登录权限,然后通过指定的堡垒机免密码登录到EZS对应的服务器对应用户的权限,同时客户一般情况下是不允许申请root用户权限的。在此情况下,如果我们在排查问题急需root用户时就无法操作了,针对该问题对接口的经理建议我们在内部服务器做个互信,因此就产生该设置想法。 目的:不同机器之间实现普通用户之间的免密登陆,例如Probe的root用户权限直接登录到ES1的root用户权限或者ES1的es01用户权限。 

二、原理:

 Probe服务器作为客户端,要实现无密码公钥认证,连接到服务器ES1、ES2、ES3上时,需要在Probe服务器上生成一个密钥对,包括一个公钥和一个私钥,然后将公钥复制到服务器ES1、ES2、ES3上。当Probe通过SSH链接到ES1(ES2、ES3)服务器上时,ES1会生成一个随机数并用Probe服务器的公钥对随机数进行加密,并发送给Probe服务器。Probe服务器收到加密数之后再用私钥解密,并将解密数回传给ES1(ES2、ES3)服务器,ES1(ES2、ES3)服务器确认解密数无误之后就允许Probe服务器进行连接了。这就是一个公钥认证过程。 要实现内部服务器SSH免密码登录的原理简单来说,在各自服务器存放了目标主机的公钥证书,当执行登陆时,自动完成认证,从而不需要再输入任何密码。 

Ssh互信.png

三、配置步骤:

以Probe和ES1两台服务器为例

1、root用户

(1)、以root用户登录Probe服务器,生成RSA公钥

输入ssh-keygen -t rsa,然后用默认配置,一直按Enter键;

ssh-keygen

(2)、进入生成密钥所在的文件目录

cd /root/.ssh/

(3)将公钥(名为id_rsa.pub文件)追加到认证文件(名为authorized_keys文件)

cat id_rsa.pub >> ~/.ssh/authorized_keys

(4)设置ssh的权限 chmod -R 700 /root/.ssh

(5)同理在ES1服务器进行步骤(1)(3),生产RSA公钥和追加到认证文件

(6)把ES1的认证文件拷贝到Probe服务器,并追加到Probe服务器的authorized_keys

(7)把最后拥有所有用户的公钥拷贝到对应的服务器替换原有的authorized_keys

例子,如下图:

Rsa.png

2、非root用户(ezsonar用户)

非root用户与root的用户操作一样,唯一不一样的地方就是存放公钥的目录在/home/$user/.ssh/(以ezsonar为例:/home/ezsonar/.ssh)

RSA.png

3、把最后一份authorized_keys(含所有服务器的root用户和非root用户)拷贝到对应服务器的.ssh目录下(root用户:/root/.ssh,非root用户:/home/$user/.ssh),这样就可以达到互信作用,内部服务器ssh和scp都不需要密码。

猜你喜欢

转载自www.cnblogs.com/zhangyunfei-blog/p/9288520.html