SSH远程免密登录

今天在搭建Linux集群的时候出现了ssh免密登陆的要求,联想到Oracle的远程连接,发现两者形式不同,但设计思想有相似之处,而且很巧的是,两者的配置文件数量都为3个,且都有一个记录远程访问的列表。需要阅读Oracle远程访问的可以看这个链接:https://www.jianshu.com/p/de93cec4dc2d

在搭建Linux集群的时候,大部分是使用ssh进行连接,在集群的情况下,如果每次启动一台机器都需要手动输入密码,工作量将是非常恐怖的。而使用免密登录的话,主服务器就能批量启动从服务器的应用,所以,免密登录的配置是集群部署的必备环节。

免密连接主要涉及三个文件:

  1. id_rsa 本地私钥
  2. id_rsa.pub 本地公钥
  3. authorized_keys 远程公钥列表

生成密钥(私钥 + 公钥)

ssh的免密登陆通过私钥+公钥的组合来实现,我们可以通过命令

$ ssh-keygen -t rsa

来生成他们,过程中遇到提示直接回车到最后,看到以下页面则密钥生成成功。

image-20201013194021172

系统提示我们,在/root/.ssh/目录下生成了两个文件: id_rsa和id_rsa.pub。前者是私钥,后者就是公钥了。

如果我们不是root用户的话,生成的秘钥会在自己目录下,例如/home/user1/.ssh/。

进入目录里查看:

image-20201013194322262

注册公钥

私钥和公钥的作用是什么呢,我们将私钥保存在本地,公钥传到要连接的服务器上,这一过程我们取名为公钥的注册。

首先在服务器中也要进行密钥生成的操作。

$ ssh-keygen -t rsa

这样才会出现.ssh目录。

方法一 自动注册

使用命令

$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.50.5.57

来将公钥通过ssh协议复制到服务器上正确的位置,其实也就是服务器的/root/.ssh目录下,ssh-copy-id命令会帮我们做好这一切。

方法二 手动注册

我们也可以手动来,就是把本地的id_rsa.pub文件内容增加到服务器的authorized_keys文件中。

可以通过ssh协议直接将本地公钥传到服务器上:

$ scp id_rsa.pub root@10.50.5.57:/root/.ssh

输入密码后,文件就传送过去了。

image-20201013201944162

切换到服务器,可以发现本地出现了一个新的id_rsa.pub文件,我们通过cat命令把其中的内容添加进authorized_keys文件里:

$ cat id_rsa.pub >> authorized_keys

这样就大功告成了,本地公钥已经加入了服务器的免密公钥列表。

当我们把自己的公钥加入服务器的authorized_keys中后,服务器就知道我们是要进行免密登录的了。authorized_keys记录了可以免密登录到本机的所有客户端的公钥。这一过程如下图:

image-20201013195422826

例如,当我们通过命令

$ ssh root@10.50.5.57

访问10.50.5.57这个服务器上的root用户的时候,服务器生成一段随机字符串,使用公钥加密,发送给我们,我们再用私钥解密,发回给服务器,如果我们成功破解了公钥的加密,那么就证明了我们的身份。流程如下图:

image-20201013171035370

免密登录

激动人心的登陆时刻,使用命令:

$ ssh root@10.50.5.57

系统没有提示我们输入密码就登陆成功了,免密登录完成!

image-20201013201011758
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容