SSH密钥认证在远程租用主机上的配置方式,核心是把本地生成的公钥放到主机上,登录时由 SSH 使用本地私钥完成身份验证。私钥不要上传或发给他人;如果租用主机刚开通,先确认管理面板提供的登录用户名、地址和 SSH 端口,并保留可用的控制台入口,以便配置失误时恢复。
一、在本地生成密钥对
Linux、macOS 和较新的 Windows 通常可在终端或 PowerShell 中使用 OpenSSH。优先选择 Ed25519;若服务端版本较旧、不支持该算法,再考虑 RSA 密钥。
- 执行 ssh-keygen -t ed25519 -C "your-device"。提示保存路径时可接受默认位置;若文件已存在,先确认是否仍在使用,避免覆盖。
- 根据需要设置密钥口令。口令可以在私钥被复制时增加一道保护,但不应与主机账户密码相同。
- 生成后会得到一对文件:通常以 .pub 结尾的是公钥,另一个是私钥。只复制公钥内容,私钥留在本地。
二、把公钥安装到远程主机
能够使用密码登录时
如果本机有 ssh-copy-id,可执行 ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 端口 用户名@主机地址。把“端口”“用户名”和“主机地址”替换为服务商给出的实际信息。该命令会将公钥写入远端账户的 ~/.ssh/authorized_keys。
没有 ssh-copy-id 时,可先查看本地公钥,再通过现有 SSH 会话在远端创建目录并追加公钥。远端通常需要将 ~/.ssh 权限设为 700、authorized_keys 设为 600,并确认文件属于登录用户。不要把私钥粘贴到远端。
只有管理面板或救援控制台可用时
在主机控制台登录对应账户,建立 .ssh 目录并把公钥完整写入 authorized_keys。部分租用服务允许在创建主机时导入公钥;如果已导入,先尝试密钥登录,不必重复修改。不同系统的默认用户和目录可能不同,应以服务商提供的实例信息为准。
三、验证后再调整登录策略
- 另开一个终端测试:ssh -i ~/.ssh/id_ed25519 -p 端口 用户名@主机地址。确认能进入预期账户,并检查是否出现主机指纹确认提示。
- 若私钥设置了口令,可使用 ssh-agent 暂存解锁后的密钥,减少重复输入;不要因此关闭设备本身的访问保护。
- 需要禁止密码登录时,先确认密钥连接正常且有控制台或其他管理员通道,再检查服务端 sshd 配置中的 PubkeyAuthentication 为 yes、PasswordAuthentication 为 no。配置文件位置和写法会因系统而异。
- 修改后先用 sshd 的配置检查功能验证语法,再按系统支持的方式重新加载或重启 SSH 服务。保留当前会话,并从新终端再次测试,确认无误后再退出。
如果主机使用非默认端口,还应确认云平台防火墙或主机防火墙已允许该端口的入站连接。改端口并不能替代密钥保护和访问控制。
四、连不上时按顺序排查
- 仍提示输入账户密码:检查客户端是否选中了正确私钥、用户名是否正确,以及公钥是否完整写入该用户的 authorized_keys。
- 提示权限或公钥被拒绝:核对 .ssh 和 authorized_keys 的权限、所有者;查看服务端认证日志,日志位置随发行版而变。
- 连接超时或拒绝连接:核实地址、端口、主机状态及防火墙规则。超时常与网络路径或过滤规则有关,拒绝连接则还需确认 SSH 服务是否在监听。
- 算法不兼容:检查客户端与服务端 OpenSSH 版本,再选择双方支持的密钥算法,不要为了省事长期启用过时算法。
常见问题
换电脑后还能用原密钥吗?
可以安全迁移私钥,但应通过受保护的存储方式传输,并限制文件访问权限;更稳妥的做法是为新设备另建密钥,再单独添加和撤销公钥。
一台主机能配置多把密钥吗?
可以。authorized_keys 可保存多条公钥,便于区分设备或管理员;移除某条记录即可撤销对应密钥。
忘记私钥口令怎么办?
口令通常无法从私钥中取回。若仍能通过其他方式登录,可生成新密钥并替换公钥;同时确认旧密钥是否需要撤销。
配置完成后,保留安全的恢复入口、妥善保护私钥,并定期清理不再使用的公钥。按这些步骤实施,SSH密钥认证在远程租用主机上的配置方式就能兼顾可操作性与基本安全要求。