第4部分-保护SSH
SSH提供了一个使用RSA公钥/私钥对的身份验证选项。 这允许您锁定节点,只能通过使用私钥通过SSH访问,从而阻止所有基于密码的访问。 虽然这在远程访问节点时提供了额外的安全级别,但应注意防止您自己锁定节点。 如果您已有SSH RSA公钥/私钥对,则可以选择使用该密钥对访问您的节点。 如果您完全不确定,请在开始执行这些步骤之前在Discord内或通过zenhelp提交疑问。
**这是一个特别的大胆的红色警告 - 确保您了解在进行之前您做了什么 - 请在继续之前阅读此警告之下的文本**
**确保在本地计算机上打开第二个终端会话,并在执行这些步骤时使用BOTH终端会话登录到您的节点**
注意:此页面仅适用于Mac OS和Linux终端,Windows用户可以去下方查看:
描述 | 指令 | |
---|---|---|
生成SSH密钥对 - 步骤1 - 5在本地计算机上执行,而不是在节点上执行 | ||
1 | 步骤1 - 5是在下面的步骤8和9中保护SSH的先决条件,目的是生成RSA密钥对,以便通过SSH关闭密码访问. 确保您仍然使用第一个终端会话登录 (打开第2步) | |
2 | 打开第二个终端窗口并检查本地设备上是否存在公钥/私钥对
如果文件 - id_rsa和id_rsa.pub已经存在(显示在示例输出中),请跳过步骤3.如果它们不存在,或者您看到错误(.ssh:没有此类文件或目录),请继续执行步骤3。 | ls -alh ~/.ssh/ Example Output user@localmachine:~$ ls -alh ~/.ssh/ total 80K drwxr-xr-x 2 user user 4.0K May 28 13:47 . drwx------ 19 user user 4.0K Jun 4 23:35 .. -rw------- 1 user user 1.7K Oct 15 2017 id_rsa -rw-r--r-- 1 user user 394 Oct 15 2017 id_rsa.pub |
3 | 在本地设备上生成ssh密钥对 如果有人提议覆盖现有文件,除非你明白想要这样做,否则不要继续执行第4步! 在提示输入文件名时按Enter键(参见上面的警告),在出现提示时输入强密码 不要丢失这个密码,它不应与用户名与密码一样! 注意:密钥对文件:“id_rsa和id_rsa.pub”存储在OS X上的“/Users/<USER>/.ssh/”和Linux上的“/home/<USER>/.ssh”中 建议在安全的脱机位置备份这些文件,例如加密的拇指驱动器 | ssh-keygen -t rsa -b 2048 |
4 | 将SSH公钥复制到您的节点,将“zenops”替换为您自己的用户名,将<FQDN>替换为您自己的完全限定域名,删除<bracket> 如果提示继续连接ECDSA指纹,请回答“是” 如果系统提示您安装新密钥,请输入非root用户密码 | ssh-copy-id zenops@<FQDN> |
5 | 使用密钥对通过SSH测试对节点的访问,用您自己的用户名替换'zenops',用您自己的完全限定域名替换<FQDN>,删除<bracket> 系统将提示您生成密钥时使用的密码,而不是节点的用户密码 如果在步骤2中已存在密钥对,并且您按照指示跳过了步骤4,则您将使用该密钥的密码,可能来自另一个节点设置。 | ssh zenops@<FQDN> exit ssh zenops@<FQDN> |
6 | 根据需要多次重复步骤5中的登录,以确保您在没有USER密码的情况下登录,而是使用RSA密钥密码。 如果未能完成此步骤,将导致您自己锁定节点。 | |
在你节点上 | ||
7 | 注意:仅当您已经为节点建立了基于密钥的登录并且测试了您可以通过RSA密码密码(而不是用户密码)访问时,继续执行步骤8和9 | |
8 | 编辑sshd_config以保护SSH守护程序 注意:RSA密钥密码仅用于登录节点,所有其他密码提示将需要您的非root用户密码 | 复制并粘贴整个块 sudo sed -i '/PermitRootLogin/d' /etc/ssh/sshd_config && \ sudo sed -i '/PasswordAuthentication/d' /etc/ssh/sshd_config && \ sudo sed -i '/ChallengeResponseAuthentication/d' /etc/ssh/sshd_config && \ echo -e "PermitRootLogin no\nPasswordAuthentication no\nChallengeResponseAuthentication no" | sudo tee -a /etc/ssh/sshd_config |
9 | 使用新配置重新启动SSH | sudo systemctl restart sshd |