暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为openGauss 用户在openGauss节点间的互信丢失

华为高斯 2020-06-01
1089

问题现象

在给某个用户配置好互信之后,有时候信任关系会突然丢失,ssh时提示需要输入密码。

sc_ssh@node1:~/.ssh> ssh node2 Password:

可能原因

  • sshd服务未运行。
  • 防火墙禁止ssh访问。
  • 当前用户对根目录的权限不足。
  • 当前用户对公钥文件的权限不足。
  • “known_hosts”文件里记录的key和IP地址冲突。
  • 公钥不匹配。

操作步骤

  • 确认是否由于sshd服务未运行。

    1. 执行命令service sshd status查看sshd服务状态。
    2. 如果sshd服务关闭,使用service sshd start启动sshd服务。
  • 确认是否由于开启了系统防火墙导致ssh互信丢失。

    1. 执行命令Euleros: systemctl status firewalld.service查看openGauss防火墙状态。
    2. 如果显示系统防火墙打开,使用Euleros: systemctl stop firewalld.service命令关闭防火墙。
  • 确认是否由于当前用户对根目录的权限不足。

    1. 使用ll命令查看根目录属性,确认目录属组是否为互信用户的属组,同时确认用户对目录是否有读和写权限。
    2. 用chown命令修改文件属组,用chmod命令修改目录权限,使其满足要求。
  • 确认是否由于当前用户对公钥文件的权限不足。

    1. 查看“\~/.ssh/id_rsa.pub”文件,确认文件属组是否为互信用户的属组,同时确认用户对文件是否有读和写权限。
    2. 用chown命令修改文件属组,用chmod命令修改目录权限使其满足要求。
  • 确认是否由于“known_hosts”文件里记录的key和IP地址冲突。

    查看“\~/.ssh/known_hosts”文件里记录的key和IP地址是否一致,如果不一致,可能是由于所指定的IP发生了变化等原因导致了异常。此时,删除“.ssh/known_hosts”文件里面原来的公钥信息即可。

  • 确认是由于公钥不匹配。

    排除掉上面的所有原因后,如果问题仍存在,可能是公钥不匹配。此时,请删除公钥目录.ssh下的所有文件,按照下面的手工建立互信重新配置。

使用脚本建立互信

  1. 创建一个执行互信脚本所需要的输入文本,并在此文件中添加openGauss中所有主机IP。

    plat1:/opt/software> vim hostfile 192.168.0.1 192.168.0.2 192.168.0.3

  2. 以需要创建互信的用户执行以下脚本建立互信。

    plat1:/opt/software/gaussdb/script# gs_sshexkey -f /opt/software/hostfile

    /opt/software/hostfile为主机列表,列出所有需要建立互信机器的主机IP。

手工建立互信

如果openGauss各主机的root密码不一致,gs_preinstall脚本无法建立互信,可以手工建立互信。

说明:
建立互信的过程中需要生成如下4个文件:authorized_keys、id_rsa、id_rsa.pub、known_hosts。请勿删除或破坏这些互信相关的文件。

手工建立信任关系,步骤如下,plat1,plat2,plat3是主机名:

  1. 在其中一个主机上,生成root用户的本机授权文件。假设在主机plat1上执行。

    1. 生成密钥。

      ssh-keygen -t rsa

      示例如下:

      plat1:~ # ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: d5:35:46:33:27:22:09:f0:1e:12:a7:87:fa:33:3f:ab root@plat1 The key's randomart image is: +--[ RSA 2048]----+ | o.o.....O .| | * .o + * | | + + . . | | . + o | | . S | | . | | + | | +. | | E.oo | +-----------------+

    2. 生成本机授权文件。

      cat .ssh/id_rsa.pub >> .ssh/authorized_keys

      示例如下:

      plat1:~ # cat .ssh/id_rsa.pub >> .ssh/authorized_keys

  2. 收集所有的待建互信主机的公钥,写入到本机的known_hosts文件中。此步骤需要在步骤1执行的主机上执行。需要收集plat1、plat2、plat3三个主机的公钥。

    1. 收集plat1的公钥,写入到本机known_hosts文件中。

      ssh-keyscan -t rsa plat1 >> ~/.ssh/known_hosts

      示例如下:

      ``` plat1:~ # ssh-keyscan -t rsa plat1 >> ~/.ssh/known_hosts

      ```

    2. 收集plat2的公钥,写入到本机known_hosts文件中。

      ssh-keyscan -t rsa plat2 >> ~/.ssh/known_hosts

      示例如下:

      ``` plat1:~ # ssh-keyscan -t rsa plat2 >> ~/.ssh/known_hosts

      ```

    3. 收集plat3的公钥,写入到本机known_hosts文件中。

      ssh-keyscan -t rsa plat3 >> ~/.ssh/known_hosts

      示例如下:

      ``` plat1:~ # ssh-keyscan -t rsa plat3 >> ~/.ssh/known_hosts

      ```

      说明:
      - 当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分。
      - 如果该主机上known_hosts文件被删除,互信仍然可以使用,但是会有告警提示信息。如果需要规避告警提示信息,请将/etc/ssh/ssh_config配置文件中,StrictHostKeyChecking参数设置为no。

  3. 将互信文件分发到其它所有主机上。在本例中,需要将plat1上的互信文件分发到plat2和plat3上。

    1、将互信文件分发到plat2上。Password输入拷贝目标主机的密码。

    scp -r .ssh plat2:~

    示例如下:

    plat1:~ # scp -r .ssh plat2:~ Password: authorized_keys 100% 796 0.8KB/s 00:00 id_rsa 100% 1675 1.6KB/s 00:00 id_rsa.pub 100% 398 0.4KB/s 00:00 known_hosts 100% 1089 1.1KB/s 00:00

    2、将互信文件分发到plat3上。Password输入拷贝目标主机的密码。

    scp -r .ssh plat3:~

    示例如下:

    plat1:~ # scp -r .ssh plat3:~ Password: authorized_keys 100% 796 0.8KB/s 00:00 id_rsa 100% 1675 1.6KB/s 00:00 id_rsa.pub 100% 398 0.4KB/s 00:00 known_hosts 100% 1089 1.1KB/s 00:00

  4. 查看互信是否建成功,可以互相ssh主机名。输入exit退出。

    plat1:~ # ssh plat2 Last login: Tue Jan 5 10:28:18 2016 from plat1 Huawei's internal systems must only be used for conducting Huawei's business or for purposes authorized by Huawei management.Use is subject to audit at any time by Huawei management. plat2:~ # exit logout Connection to plat2 closed. plat1:~ #

    说明:
    如果三个以上节点,和上述过程类似。假设节点名为plat1、plat2、plat3、......。第一步,需要在plat1上生成root用户的本机授权文件;第二步,需要收集所有待建互信主机(plat1、plat2、plat3、......)的公钥并写入到本机known_hosts文件中;第三步,需要将互信文件分发到除本机外的所有其它主机(plat2、plat3、......)上;第四步,检查互信是否建立成功。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

文集目录
暂无数据