gs_sshexkey

背景信息

openGauss在安装过程中,需要在openGauss中的节点间执行命令,传送文件等操作。因此,安装前需要确保互信是连通的。openGauss提供了gs_sshexkey工具来帮助用户建立互信。

gs_sshexkey - 图1 须知: root用户互信可能会存在安全隐患,因此建议用户在使用完成后,立即删除各主机上root用户的互信。

前提条件

  • 确保ssh服务打开。

  • 确保ssh端口不会被防火墙关闭。

  • 确保xml文件中各主机名称和IP配置正确。

  • 确保所有机器节点间网络畅通。

  • 如果为普通用户建立互信,需要提前在各主机创建相同用户并设置密码。

  • 如果各主机安装并启动了SELinux服务,需要确保/root和/home目录安全上下文为默认值(root目录:system_u:object_r:home_root_t:s0,home目录:system_u:object_r:admin_home_t:s0)或者关闭掉SELinux服务。

    检查系统SELinux状态的方法:执行命令getenforce,如果返回结果是Enforcing ,说明SELinux安装并启用。

    检查目录安全上下文的命令:

    1. ls -ldZ /root | awk '{print $4}'
    1. ls -ldZ /home | awk '{print $4}'

    恢复目录安全上下文命令:

    1. restorecon -r -vv /home/
    1. restorecon -r -vv /root/

语法

  • 建立互信

    1. gs_sshexkey -f HOSTFILE [...] [--skip-hostname-set] [-l LOGFILE]
  • 显示帮助信息

    1. gs_sshexkey -? | --help
  • 显示版本号信息

    1. gs_sshexkey -V | --version

参数说明

  • -f

    主机列表,列出所有需要建立互信主机的IP。

    gs_sshexkey - 图2 说明: 确保hostfile文件中只配置正确的主机IP,不包含其它信息。

  • -h

    主机IP列表,多个节点之间用英文逗号隔开。

  • -l

    指定日志文件的保存路径。

    取值范围:任意存在的可访问的绝对路径。

  • --skip-hostname-set

    是否将“-f”参数文件中IP与其hostname的映射关系写入“/etc/hosts”文件中。默认写入,如果指定该参数则不写入。普通用户无权限编辑/etc/hosts文件,故有无指定该参数,普通用户均不生成映射关系。

  • -?, —help

    显示帮助信息。

  • -V, —version

    显示版本号信息。

示例

如下是为root用户建立互信的示例。仅支持交互式输入密码。

  • 用户密码相同情况下,交互式模式使用以下命令建立互信。

    1. gs_sshexkey -f /opt/software/hostfile
    2. Please enter password for current user[root].
    3. Password:
    4. Checking network information.
    5. All nodes in the network are Normal.
    6. Successfully checked network information.
    7. Creating SSH trust.
    8. Creating the local key file.
    9. Appending local ID to authorized_keys.
    10. Successfully appended local ID to authorized_keys.
    11. Updating the known_hosts file.
    12. Successfully updated the known_hosts file.
    13. Appending authorized_key on the remote node.
    14. Successfully appended authorized_key on all remote node.
    15. Checking common authentication file content.
    16. Successfully checked common authentication content.
    17. Distributing SSH trust file to all node.
    18. Successfully distributed SSH trust file to all node.
    19. Verifying SSH trust on all hosts.
    20. Successfully verified SSH trust on all hosts.
    21. Successfully created SSH trust.
  • 用户密码不同情况下,交互式模式使用以下命令建立互信。

    1. gs_sshexkey -f /opt/software/hostfile
    2. Please enter password for current user[root].
    3. Password:
    4. Notice :The password of some nodes is incorrect.
    5. Please enter password for current user[root] on the node[10.180.10.112].
    6. Password:
    7. Please enter password for current user[root] on the node[10.180.10.113].
    8. Password:
    9. Checking network information.
    10. All nodes in the network are Normal.
    11. Successfully checked network information.
    12. Creating SSH trust.
    13. Creating the local key file.
    14. Appending local ID to authorized_keys.
    15. Successfully appended local ID to authorized_keys.
    16. Updating the known_hosts file.
    17. Successfully updated the known_hosts file.
    18. Appending authorized_key on the remote node.
    19. Successfully appended authorized_key on all remote node.
    20. Checking common authentication file content.
    21. Successfully checked common authentication content.
    22. Distributing SSH trust file to all node.
    23. Successfully distributed SSH trust file to all node.
    24. Verifying SSH trust on all hosts.
    25. Successfully verified SSH trust on all hosts.
    26. Successfully created SSH trust.