Linux环境SSH免密配置小结

场景:

Server a:IP 为172.16.6.1上有1个用户root;

Server b:Ip为172.16.6.2上有3个用户root、tomcat、deploy;

Q1:

Server a上能不能配置以tomcat、deploy通过SSH免密登录到Server b ?

A1:

完全可以。在1台机器上,能否以某个指定用户通过SSH免密登录到另外1台目标机器上,与当前机器上是否存在该指定用户无关。这一点是我之前不曾知道的,总以为,发起SSH请求的机器上也必须要有对应的用户存在。从前,在配置Oracle RAC数据库时,多个节点上都有oracle用户存在,在配置oracle用户SSH免密登录的时候,产生的误区就是以为SSH免密登录的场景下,源端和目标端都必须要有对应的用户存在。原来,自己误导自己已多年。

Q2:

如何配置Q1上所说的免密登录?

A2:

1

Server a上,以root依次执行:

ssh-keygen –t rsa;

ssh-keygen –t dsa;

分别生成RSA、DSA加密算法的秘钥。否则可能会遭遇下述错误:

/usr/bin/ssh-copy-id: ERROR: No identities found

2

ssh-copy-id tomcat@172.16.6.2

ssh-copy-id deploy@172.16.6.2

依次执行上还命令。且分别输入tomcat、deploy用户的口令。

3

当前机器上以root用户执行 ssh tomcat@172.16.6.2 即可实现以tomcat的身份执行SSH免密登录到172.16.6.2机器上。deploy用户同。

Q3

上述场景里,假设Server a上也有tomcat、deploy用户存在,且已经配置完成可以以root用户发起,向Server b的ssh tomcat@172.16.6.2的免密登录的前提下,那么在Server a上以tomcat用户发起向Server b的ssh tomcat@172.16.6.2的免密登录可行吗

A3

绝对不可以。如果需要在Server a上以tomcat用户发起向Server b的ssh tomcat@172.16.6.2的免密登录,那么必须在Server a上,以tomcat用户登录,重新执行上述A2的免密登录配置。

 

小结:

1 源端机器发起向目标端机器的免密登录,源端机器上是否存在与目标端机器上的SSH用户无关;如:源端机器上只有root用户,即使不存在tomcat用户,那么也可以以root用户发起ssh tomcat@目标机器的免密登录;

2 即使源端机器可以以u1用户执行ssh u2@目标机器IP的免密登录,那么源端机器的u2用户也不一定能够顺利执行ssh u2@目标机器IP的免密登录。这取决于,源端机器上的u2用户,是否已经配置SSH到目标机器的免密登录。