场景:
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到目标机器的免密登录。