在 Satellite 主机上启用SSH
在故障排除和调试场景中,您可能需要在将主机分配给控制平面或集群之前或之后,通过SSH访问您的 Satellite 主机。
例如,如果您在分配主机时遇到问题,可以在将主机分配给集群之前,启用非root用户通过SSH访问该主机。
请查看以下部分,了解启用主机SSH访问的步骤。
在分配之前,在RHCOS主机上启用非root SSH
由于 CoreOS 主机通常禁用SSH根访问,而 root
和 core
SSH访问在主机分配时已被禁用,因此您可以通过添加一个非默认 core
用户的新非root用户来授予SSH访问权限。
这些说明描述了如何在将主机分配给集群或控制平面之前,为 Red Hat CoreOS 主机上的新用户启用SSH访问权限。
在完成故障排除后,请恢复这些步骤并禁用SSH访问。
-
在主机上创建一个新的
satellite
用户,并附上创建 CoreOS 主机时使用的点火文件。 请按如下方式编辑点火文件的passwd
部分。"passwd": { "users": [ { "name": "core", "sshAuthorizedKeys": [ "" ] }, { "name": "satellite", "sshAuthorizedKeys": [ "ssh-rsa AAA... KEYNAME" ], "groups": [ "sudo" ] } ] },
-
添加SSH公钥,如图所示。 要创建SSH密钥对,您可以运行
ssh-keygen
。 例如:ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''
-
sat-host-access.pub
文件包含添加到点火文件中的密钥。 将文件中的全部内容添加到点火脚本中,替换上例中的ssh-rsa AAA... KEYNAME
。sat-host-access
私钥是您用来SSH到主机的。
任何拥有私钥(与您刚刚添加到该主机的公钥相对应)并能够访问节点的用户都可以通过SSH登录该系统。
在分配之前,在 RHEL 主机上启用非根 SSH
这些说明描述了如何临时启用对 RHEL 8 集群工作节点的非根 SSH 访问。
在完成故障排除后,请恢复这些步骤并禁用SSH访问。
在开始之前,请确保您拥有未分配主机的SSH访问权限。
- 如果您希望此新用户使用与主机上根用户相同的 SSH 密钥,则无需其他密钥。 但是,如果您想为这个新用户使用不同的 SSH 密钥对,那么要么准备好该密钥对,要么在用于 SSH 连接主机的任何系统上创建新的 SSH 公钥/私钥对。 不要将私钥提供给任何人。 这些说明假定您已经创建了新的密钥对。
ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''`
在主机上运行剩余步骤,在继续之前,以root权限SSH进入主机。
- 创建一个用户,并配置为无需密码即可完全访问 sudo。
useradd -U -m -s /bin/bash satellite && mkdir -p /home/satellite/.ssh && chown -R satellite:satellite /home/satellite/
- 将您的SSH密钥添加到新用户中。
- 如果您想为该用户和根用户使用相同的 SSH 密钥,请运行以下命令。
cp -r /root/.ssh/authorized_keys /home/satellite/.ssh/
- 如果您创建了新的密钥对,或者已有 SSH 公钥,请通过运行以下命令将其添加到
satellite
用户。echo "<CONTENTS OF ~/.ssh/sat-host-access.pub OR YOUR OWN PUBLIC KEY>" >> /home/satellite/.ssh/authorized_keys && chmod 600 /home/satellite/.ssh/authorized_keys
- 如果您想为该用户和根用户使用相同的 SSH 密钥,请运行以下命令。
- 运行以下命令。
chown -R satellite:satellite /home/satellite/.ssh/authorized_keys
- 要授予新
satellite
用户完全sudo访问权限,无需密码,请运行以下命令。
您也可以将用户的权限设置为更有限,但需要在主机上进行配置。 出于故障排除的目的,我们建议您授予该用户完全 sudo 访问权限。 排除故障后,您可以删除用户或限制其权限。echo "satellite ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
现在,任何拥有与您刚刚添加到主机和网络的节点访问权限的公钥对应的私钥的人,都可以以root权限SSH进入该系统。
- 请以新用户身份登录该节点,以验证其是否可用。
ssh -i ~/.ssh/sat-host-access satellite@NODE-IP
- 然后运行以下命令,验证是否可以从此用户处获得root权限。
sudo su - root
分配后启用主机上的SSH根
有时可能需要直接通过SSH连接到集群中已分配为工作节点的宿主。 例如,集群工作节点可能无法与集群主节点建立连接。 这些说明描述了如何临时启用对 Satellite 集群中 Red Hat CoreOS 或RHEL 8集群工作节点的root SSH访问。
在完成故障排除后,请恢复这些步骤并禁用SSH访问。
在开始之前,请确保您已准备好以下物品。
- 访问可直接访问集群工作者的系统,作为SSH客户端系统使用。
- 管理员可以访问此集群,以便运行
oc debug node/NODE-NAME
。
-
在您的SSH客户端上创建一对SSH公钥/私钥。 不要将私人密钥交给任何人。
ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''
-
验证公钥是否已创建。
cat ~/.ssh/sat-host-access.pub
-
从可以访问集群主节点并拥有管理员
kubeconfig
权限的系统,运行以下命令。oc debug node/NODE-NAME
-
在
NODE-NAME
的shell中运行以下命令,启用root SSH。chroot /host
echo "<CONTENTS OF ~/.ssh/sat-host-access.pub>" >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
-
使用以下命令之一为您的
SSHD_CONFIG_FILE
设置环境变量。 请注意,根据您所使用的具体工人版本,它可能位于不同的位置。如果是这样,请将SSHD_CONFIG_FILE
环境变量设置为SSHD
配置文件的完整路径,以便在接下来的几个步骤中更新它。CoreOS 工作人员的示例命令。
export SSHD_CONFIG_FILE="/etc/ssh/sshd_config.d/40-rhcos-defaults.conf"
RHEL 8工作者的示例命令。
export SSHD_CONFIG_FILE="/etc/ssh/sshd_config"
-
检查
PermitRootLogin
设置。grep ^PermitRootLogin $SSHD_CONFIG_FILE
-
将
PermitRootLogin
设置为yes
。sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" $SSHD_CONFIG_FILE
-
验证设置。
grep ^PermitRootLogin $SSHD_CONFIG_FILE
-
运行以下命令重启并退出。
systemctl restart sshd
exit && exit
此时,使用之前创建的私钥即可启用SSH客户端系统的SSH根访问权限。 请注意,任何拥有此私钥并有权访问节点的人都可以以root身份SSH进入此系统。 使用以下命令通过SSH连接到节点:ssh -i ~/.ssh/sat-host-access root@NODE-IP
。