SecureCRT 密钥免密登录
SSH密钥认证配置——避免每次输入密码
- Tools → Create Public Key 生成RSA密钥对
- 将公钥(.pub文件)上传到服务器 ~/.ssh/authorized_keys
- 服务器端设置权限: chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
- 会话属性中Primary认证方式改为PublicKey
- 选择私钥文件,测试免密登录
安全提示:建议给私钥设置密码(Passphrase)。私钥文件不要上传到云存储。权限设置不对会导致认证失败。
速查信息
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)
最常见的原因和解决方法:
密钥格式不兼容
如果从 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 服务。
密钥管理最佳实践
密钥命名和存放
建议为不同用途生成不同的密钥对,并用描述性名称保存:
默认密钥存放路径为 `%APPDATA%\VanDyke Software\SecureCRT\Keys\`。
密钥密码管理
建议设置密钥密码(Passphrase),即使私钥文件泄露,攻击者也无法使用。可以将密钥密码保存在 SecureCRT 中(勾选"Remember passphrase"),这样日常使用不受影响。
注意:不要将密钥密码设置为与服务器密码相同。
定期轮换密钥
安全最佳实践建议定期轮换 SSH 密钥(每 6-12 个月)。轮换步骤:
1. 生成新的密钥对
2. 将新公钥添加到所有服务器的 `authorized_keys`
3. 确认新密钥可以正常登录所有服务器
4. 从 `authorized_keys` 中删除旧公钥
5. 安全删除旧私钥文件
多因素认证
对于高安全性要求的环境,建议结合使用密钥认证和密码认证(多因素):在服务器端配置 `AuthenticationMethods publickey,password`。这样即使私钥泄露,攻击者仍需知道服务器密码。
密钥文件备份
私钥文件丢失意味着无法登录所有配置了该密钥的服务器。建议将私钥文件备份到安全的位置(如加密的 U 盘或硬件安全模块),不要将私钥备份到云存储或邮件中。
常见问题
可以。将同一个公钥添加到所有目标服务器的 `authorized_keys` 即可。这是行业标准做法。
如果私钥丢失且没有备份,需要重新生成密钥对,并将新公钥上传到所有服务器。旧的公钥可以从 `authorized_keys` 中删除。