怎么实现两台linux机器之间不使用密码即可通过SSH远程登录?不了解的朋友,跟着脚本小编一起来学习下吧。
有两台linux机器A(192.168.0.195),B(192.168.1.210),想通过A机器ssh的方式登录到B机器,且不必输入密码。
原理很简单,rsa公私钥机制,创建一对密钥(包含公钥和私钥),将公钥放入远程需要登录到的那个机器B上,自己保留私钥。
通过A登录远程机器B时,对方验证方法为:使用公钥加密数据,谁能够解密这段数据则证明谁手里有私钥,即谁有权限登录。
以下例子假设:A和B都是通过root用户进行登录,其实通过其他用户登录方法相同。
方法如下:
1,在A机器上的/root/.ssh下执行 :ssh-keygen -t rsa
命令提示输入内容时,都不输入,直接回车。这个命令会产生一对公钥和私钥,名字为id_rsa(访问权限为600)(私钥) 和 id_rsa.pub(公钥)
注意:在产生密钥时,本例子没有设置密码,提示输入passpphrase时,直接回车,没有设置密码。如果设置了密码,可以使用ssh-agent代理,帮实现自动输入passpphrase,这种方式我没有进行实际试验。
2,将公钥也就是id_rsa.pub发送到远程机器上,并修改名称为authorized_keys:
当然也可以直接采用
在将公钥拷贝到B机器时,可能会显示如下的提示信息,这些信息可以不用考虑,直接Yes就行了:
只需要在A机器的/etc/hosts中,增加B机器的IP和机器名:192.168.1.210 B 即可消除上述的信息。
B机器上,/root/.ssh/authorized_key的访问权限为644(缺省应该就是这个权限)。
修改B机器的/etc/ssh/ssh_config,将PermitRootLogin 设置为yes,不需要重新启动sshd。(因为此例子是采用root进行登录的)
成功了,在A机器上,用root用户远程登录B机器:ssh 192.168.1.210
如果不是用root用户远程登录B机器:ssh –l
user1 192.168.1.210。这种情况下,公钥就应该是放在user1这个用户的.ssh/下了。