全网云盘资源分享群

Centos8 ssh配置三台虚拟机免密登录 root 及 非root 稍有差异;SSH的免密登录详细步骤

为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录。但是很多时候为了操作方便,我们都通过设置SSH免密码登录。

一、配置SSH

  • 基本语法:假设要用用户名root登录远程主机host,只需要输入ssh root@host,如ssh root@192.168.29.129,若本地用户名与远程用户名一致,登录时则可以省略用户名,如ssh host。
  • 第一次连接时会出现  Are you sure you want to continue connecting (yes/no)? ,直接输入yes即可。

二、无秘钥配置

  • 免密登录原理如下图所示:

三、先决条件

  • 3台 Centos 7
 hostname        IP
localzly192.168.245.128
slave1192.168.245.129
slave2192.168.245.130

四、步骤

1.本地机器生成公私钥
2.上传公钥到目标机器
3.测试免密登录

具体操作:

1.准备工作

  •  使用root权限分别修改每台机器的hosts,添加每台机器所对应的IP和主机名(我这里分布式集群是3台机器组成的,所以配置3台,习惯将自己的ip和主机名放在第一行)

    sudo vim /etc/hosts
删除文件里内容后添加如下内容

  • 查看本地机器的隐藏文件 .ssh    (此步可省略)

   ll -a   (小写L)

  • CentOS 默认没有启动 ssh 无密登录,去掉 /etc/ssh/sshd_config 其中的 2 行的注释,每台服务器都要设置。
 AuthorizedKeysFile      .ssh/authorized_keys
 PubkeyAuthentication yes

2.在本地机器用ssh-keygen 生成一个公私钥对

(1)每台服务器下都输入命令:ssh-keygen -t rsa,生成key,一律不输入密码,直接回车,/root 就会生成 .ssh文件夹。

中间输入一个y   和三个回车

       在.ssh/目录下,会新生成两个文件:id_rsa.pub和 id_rsa

(2)在 localzly 服务器下,合并公钥到 authorized_keys 文件,进入 /root/.ssh 目录,通过SSH命令合并。

cat id_rsa.pub>> authorized_keys
#内回环 连接自己 第一次需要验证
ssh master
ssh root@slave1 cat ~/.ssh/id_rsa.pub>> authorized_keys
ssh root@slave2 cat ~/.ssh/id_rsa.pub>> authorized_keys

(3)将 localzly 服务器的 authorized_keys、known_hosts 复制到 Slave1,slave2 服务器的 /root/.ssh 目录下。

scp authorized_keys root@slave1:/root/.ssh/
scp authorized_keys root@slave2:/root/.ssh/
scp known_hosts root@slave1:/root/.ssh/
scp known_hosts root@slave2:/root/.ssh/

第二种方法(这种较为麻烦)

将公钥复制到另外两个虚拟机用下面两个命令中亦可!(两个命令中随便一个即可 两个命令作用都是同样的:复制公钥), 这步自动合并成 authorized_keys 文件并传给另外的虚拟机!!

这个时候localzly的公钥文件内容会追加写入到slave1的 .ssh/authorized_keys
文件中查看slave1下的authorized_keys文件与localzly下的id_rsa.pub中内容是一样的  命令 : cat authorized_keys  这步是单向的,localzly的公钥会存放在slave1下,localzly可以免密过去,但是slave1过不来,形象点说 假如localzly是一台手机,slave1也是,现在下面这个操作是把localzly的指纹存到slave1,这意味着你不需要密码就可以解开slave1的锁,而localzly没有slave1的话,slave就解不开localzly的锁,所以下面的步骤还需要将slave1的公钥传到localzly 综合起来看效果是一样的 ,但是却没有第一种方法简单 推荐上面的命令

 ssh-copy-id -i .ssh/id_rsa.pub root@slave1  这个分别发给slave1 slave2
还需要一步
 ssh-copy-id -i .ssh/id_rsa.pub root@localzly


 ssh-copy-id root@slave1



其中 -i:指定公钥文件

注意:(@前边是接受公钥机器的用户名,后边是接受放的ip,因为配置了映射所以ip可以用主机名代替)

3.查看远程从节点主机上是否接收到 authorized_keys文件

  • 完成,ssh root@192.168.245.129 、ssh root@192.168.245.130 就不需要输入密码了。(也可用主机名连接)

  使用IP免密登录(用户名相同时,ssh+主机名;如果不同,登录方式就是 ssh+用户名@IP地址)

  • ssh localzly
  • ssh slave1
  • ssh slave2

4、非root用户之前免密登录

使用非root用户进行登录,一系列操作与上面的步骤一样。

注意:这里你可能会发现,按照上诉步骤配置完成之后 ssh 用户名@slave1 还是需要输入密码,这里需要对.ssh文件夹和authorized_keys文件修改权限

[root@slave1 .ssh]# chmod 700 ~/.ssh/
[root@slave1 .ssh]# chmod 600 ~/.ssh/authorized_keys

5.重启 SSH服务命令(拓展)


sudo systemctl restart sshd

sudo service sshd restart

6.退出免密登录


exit

参考:

posted @ 2021-02-01 18:11  颖火虫赵云  阅读(156)  评论(0编辑  收藏  举报  来源
|