SecureCRT 密钥免密登录

SSH密钥认证配置——避免每次输入密码

  1. Tools → Create Public Key 生成RSA密钥对
  2. 将公钥(.pub文件)上传到服务器 ~/.ssh/authorized_keys
  3. 服务器端设置权限: chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
  4. 会话属性中Primary认证方式改为PublicKey
  5. 选择私钥文件,测试免密登录

安全提示:建议给私钥设置密码(Passphrase)。私钥文件不要上传到云存储。权限设置不对会导致认证失败。

速查信息

推荐密钥
RSA 2048
密钥工具
SecureCRT内置
服务器端
chmod 600 authorized_keys

SSH 密钥认证不仅能免去每次连接输入密码的麻烦,还比密码认证更加安全。本教程详细介绍在 SecureCRT 中配置密钥认证的完整流程。

SSH 密钥认证原理

SSH 密钥认证使用非对称加密技术:

1. 客户端(你的电脑)生成一对密钥:公钥私钥

2. 公钥被上传到远程服务器上

3. 私钥安全地保存在你的本地电脑上,绝不能泄露

4. 连接时,服务器用公钥加密一个随机挑战,客户端用私钥解密并返回结果,服务器验证通过后允许登录

整个过程中,私钥永远不会离开你的电脑,比密码认证更安全。即使有人截获了网络流量,也无法推导出你的私钥。

第一步:在 SecureCRT 中生成密钥对

1. 打开 SecureCRT,进入菜单 Tools → Create Public Key

2. 密钥生成向导启动,点击"下一步"

3. 选择密钥类型和长度:

- RSA:兼容性最好,几乎所有 SSH 服务器都支持。密钥长度建议 2048 或更高

- Ed25519:更新的算法,安全性更高,但部分老旧服务器不支持

- 对于大多数用户,选择 RSA 2048 是最稳妥的选择

4. 设置密钥的密码(Passphrase):

- 这是保护私钥的密码,与服务器密码无关

- 强烈建议设置!如果私钥文件泄露,没有密码也无法使用

- 也可以留空(不设置密码),连接时完全免密

5. 选择密钥保存路径和文件名,建议使用默认路径

6. 点击"完成",生成 `.pub` 文件(公钥)和对应的私钥文件

第二步:将公钥上传到服务器

生成密钥对后,需要将公钥内容添加到服务器的授权文件中。

方法一:手动上传(通用方法)

1. 先用密码通过 SSH 登录服务器

2. 确保 `~/.ssh` 目录存在:

   mkdir -p ~/.ssh

3. 在本地用记事本打开 `.pub` 公钥文件,复制全部内容(以 `ssh-rsa` 或 `ssh-ed25519` 开头的一行文本)

4. 在服务器上执行:

   echo "粘贴公钥内容" >> ~/.ssh/authorized_keys

5. 设置严格的权限(非常重要,权限不对会导致认证失败):

   chmod 700 ~/.ssh
   chmod 600 ~/.ssh/authorized_keys

方法二:使用 ssh-copy-id(如果可用)

在 Windows 10/11 的 PowerShell 或 CMD 中执行:

ssh-copy-id -i C:\Users\你的用户名\.ssh\id_rsa.pub 用户名@服务器IP

这个命令会自动完成公钥上传和权限设置。

第三步:配置 SecureCRT 使用密钥认证

1. 打开会话属性:右键会话标签 → Session Options

2. 左侧导航选择 Connection → SSH2

3. 在 Authentication 区域,将 Primary 认证方式从"Password"改为 "PublicKey"

4. 点击右侧的 Properties 按钮

5. 在弹出的对话框中,点击"..."浏览并选择之前生成的私钥文件(不是 .pub 文件)

6. 如果第一步设置了私钥密码,这里可以勾选"Remember passphrase"记住密码

7. 点击 OK → OK 保存会话配置

第四步:测试免密登录

断开当前会话,重新连接。如果配置正确:

  • 没有设置私钥密码:直接登录,无需任何输入
  • 设置了私钥密码:只需输入私钥密码(比输入服务器密码方便得多)
  • 常见故障排查

    Permission denied (publickey)

    最常见的原因和解决方法:

  • 服务器端权限不正确:执行 `chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys`
  • 家目录权限过宽:执行 `chmod 755 ~`(家目录不能是 777)
  • 公钥内容格式错误:检查复制时是否包含换行符或多余空格
  • SELinux 阻止:在 CentOS/RHEL 执行 `restorecon -R ~/.ssh`
  • 密钥格式不兼容

    如果从 PuTTY 迁移,PuTTYgen 生成的 .ppk 格式私钥不兼容 SecureCRT。需要在 PuTTYgen 中:Conversions → Export OpenSSH key,导出为标准 OpenSSH 格式。

    sshd 未开启密钥认证

    检查服务器 `/etc/ssh/sshd_config` 中以下两项是否为 yes:

    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys

    修改后执行 `systemctl restart sshd` 重启 SSH 服务。

    密钥管理最佳实践

    密钥命名和存放

    建议为不同用途生成不同的密钥对,并用描述性名称保存:

  • `id_rsa_production`:生产环境服务器
  • `id_rsa_staging`:测试环境服务器
  • `id_rsa_personal`:个人开发服务器
  • 默认密钥存放路径为 `%APPDATA%\VanDyke Software\SecureCRT\Keys\`。

    密钥密码管理

    建议设置密钥密码(Passphrase),即使私钥文件泄露,攻击者也无法使用。可以将密钥密码保存在 SecureCRT 中(勾选"Remember passphrase"),这样日常使用不受影响。

    注意:不要将密钥密码设置为与服务器密码相同。

    定期轮换密钥

    安全最佳实践建议定期轮换 SSH 密钥(每 6-12 个月)。轮换步骤:

    1. 生成新的密钥对

    2. 将新公钥添加到所有服务器的 `authorized_keys`

    3. 确认新密钥可以正常登录所有服务器

    4. 从 `authorized_keys` 中删除旧公钥

    5. 安全删除旧私钥文件

    多因素认证

    对于高安全性要求的环境,建议结合使用密钥认证和密码认证(多因素):在服务器端配置 `AuthenticationMethods publickey,password`。这样即使私钥泄露,攻击者仍需知道服务器密码。

    下载 SecureCRT | License管理指南

    密钥文件备份

    私钥文件丢失意味着无法登录所有配置了该密钥的服务器。建议将私钥文件备份到安全的位置(如加密的 U 盘或硬件安全模块),不要将私钥备份到云存储或邮件中。

    常见问题

    一个密钥可以用在多台服务器上吗?

    可以。将同一个公钥添加到所有目标服务器的 `authorized_keys` 即可。这是行业标准做法。

    私钥丢失了怎么办?

    如果私钥丢失且没有备份,需要重新生成密钥对,并将新公钥上传到所有服务器。旧的公钥可以从 `authorized_keys` 中删除。

    下载 SecureCRT 8.1.0 ✓毒霸安全检测 ✓MD5公开可验证 ✓无恶意广告弹窗