4. 秘钥连接服务器

一、在 Windows 客户端(SecureCRT)生成 SSH 密钥

  1. 打开 SecureCRT 启动 SecureCRT,点击菜单 工具 (Tools)创建公钥 (Create Public Key)

  2. 选择密钥类型

    • 在弹出的窗口中选择 RSA(推荐)或 ECDSA,然后点击 下一步 (Next)

    • 密钥长度 选择 20484096(更安全)。

    • 继续点击 下一步 (Next)

  3. 设置密钥密码(可选)

    • 你可以设置一个密码来保护私钥,也可以留空(无密码)。

    • 点击 下一步 (Next) 继续。

  4. 保存公钥和私钥

    • 私钥 默认存放在 C:\Users\你的用户名\.ssh\id_rsa(或 .pub 为公钥)。

    • 公钥 需要复制到 RHEL8 服务器上。

    • 记住保存路径,点击 完成 (Finish)


二、上传公钥到 RHEL8 服务器

你可以用以下任一方法上传密钥:

方法 1:手动上传(推荐)

  1. 查看公钥(公钥文件通常是 id_rsa.pub):

    复制输出的内容。

  2. 连接到 RHEL8 服务器(使用密码登录) 在 SecureCRT 或其他 SSH 客户端中登录:

  3. 将公钥粘贴到 ~/.ssh/authorized_keys


方法 2:使用 scp 传输

在 Windows 的 cmd 或 PowerShell 中运行:

然后在 RHEL8 服务器执行:


三、修改 SSH 服务器配置

编辑 SSH 配置文件:

确保以下配置项正确:

保存后,重启 SSH 服务:


四、在 SecureCRT 配置 SSH 密钥

  1. 打开 SecureCRT,点击 会话 (Session)连接 (Connect)

  2. 选择服务器,点击 属性 (Properties)

  3. 在左侧 身份验证 (Authentication) 选项下:

    • 确保 公钥 (Public Key) 被启用。

    • 选择 公钥文件(Private Key File),路径为你之前生成的 id_rsa 文件。

  4. 点击 确定,然后尝试连接。


五、测试 SSH 密钥登录

在 SecureCRT 中,选择服务器连接,看看是否无需输入密码即可登录。

如果无法连接,检查:

  • ~/.ssh/authorized_keys 文件权限 (600)。

  • ~/.ssh 目录权限 (700)。

  • /etc/ssh/sshd_config 配置是否正确。

  • 服务器是否正确加载了 authorized_keys

这样,你就可以通过 SecureCRT 使用 SSH 密钥认证连接 RHEL8 服务器了


六、测试 SSH 密钥登录

要防止 SSH 会话超时,客户端(SecureCRT)服务器端(sshd_config) 都可以进行配置

1. 客户端(SecureCRT)配置

SecureCRT 需要配置 保持活动(Keep Alive) 选项,以便在空闲状态下发送心跳包,防止超时。

方法 1:启用 Send protocol NO-OP

  1. 打开 SecureCRT。

  2. 进入 "Options"(选项) -> "Session Options"(会话选项)

  3. 在左侧菜单中选择 "Terminal" -> "Anti-idle"(防空闲)

  4. 勾选 "Send protocol NO-OP (SSH2 only)"

  5. 设置 时间间隔(Interval)为 30 秒

circle-info

NO-OP 仅适用于 SSH2,如果 NO-OP 无效,可以尝试 Send string(见方法 2)。

方法 2:使用 Send String 发送回车

  1. 进入 SecureCRT 的 "Session Options"(会话选项)

  2. "Terminal" -> "Anti-idle"(防空闲) 选项中:

    • 选择 "Send string"

    • 字符串框 输入一个 回车键(\r)

    • 时间间隔(Interval)设为 30 秒

circle-info

这样 SecureCRT 每 30 秒会自动发送一个回车,保持连接活跃。

方法 3:全局设置(适用于所有会话)

如果要对所有 SSH 连接生效:

  1. Options -> Global Options

  2. 选择 Default Session -> Edit Default Settings

  3. 进入 "Terminal" -> "Anti-idle",按照 方法 1 或 2 配置。

2. 服务器端(sshd_config)配置

服务器端 sshd_config 也可以配置心跳机制,确保会话不会因超时断开。

步骤 1:修改 /etc/ssh/sshd_config

vim 打开 SSH 配置文件:

添加/修改以下参数:

参数解释:

  • ClientAliveInterval 30每 30 秒 服务器发送一次心跳包。

  • ClientAliveCountMax 3如果 3 次心跳无响应,则断开连接。

  • TCPKeepAlive yes → 允许 TCP 层保持连接活跃。


步骤 2:重启 SSH 服务

配置完成后,重启 SSH 服务:

最后更新于