普通网友 2025-07-21 09:50 采纳率: 98.5%
浏览 25
已采纳

Termius密钥登录失败常见原因解析

**问题:** 在使用 Termius 通过 SSH 密钥登录远程服务器时,经常遇到密钥登录失败的问题,常见的原因有哪些?如何逐一排查和解决?
  • 写回答

1条回答 默认 最新

  • Jiangzhoujiao 2025-07-21 09:50
    关注

    一、问题背景与初步分析

    在使用 Termius 通过 SSH 密钥登录远程服务器时,遇到密钥登录失败是一个较为常见的问题。其背后可能涉及多个层面的因素,包括本地配置、密钥格式、权限设置、远程服务器配置等。

    对于有5年以上经验的IT从业者来说,虽然对SSH机制较为熟悉,但在面对具体工具(如Termius)和环境差异时,仍需系统性地进行排查。

    二、常见原因分类与排查流程

    以下是导致 Termius 无法通过 SSH 密钥登录的常见原因,按从浅入深的顺序进行分析:

    1. 本地密钥路径配置错误
    2. 密钥格式不兼容(如 OpenSSH vs PuTTY)
    3. 密钥权限设置不当
    4. 远程服务器未正确添加公钥至 ~/.ssh/authorized_keys
    5. SSH服务未启用密钥登录(PasswordAuthenticationPubkeyAuthentication
    6. Termius 配置中未启用 SSH Agent 或使用了错误的代理
    7. SSH 协议版本不兼容或加密算法不匹配
    8. 使用了加密的私钥但未输入正确密码
    9. Termius 本地缓存错误或配置文件损坏
    10. 防火墙或中间网络设备拦截连接

    三、详细排查步骤与解决方案

    1. 检查密钥路径是否正确配置

    • 在 Termius 中打开目标主机配置,确认 Identity File 指向正确的私钥文件(如 ~/.ssh/id_rsa
    • 确保文件路径在 Termius 中为绝对路径

    2. 验证密钥格式是否兼容

    Termius 支持 OpenSSH 格式的密钥,若使用 PuTTY 生成的 .ppk 文件,需转换格式:

    puttygen id_rsa.ppk -O private-openssh -o id_rsa

    3. 检查密钥文件权限

    文件推荐权限
    ~/.ssh 目录700
    ~/.ssh/id_rsa(私钥)600
    ~/.ssh/authorized_keys600

    4. 确认远程服务器已添加公钥

    将本地公钥内容追加到远程服务器的 ~/.ssh/authorized_keys 中:

    cat ~/.ssh/id_rsa.pub | ssh user@remote "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

    5. 检查 SSH 服务配置是否启用密钥登录

    登录远程服务器,检查 /etc/ssh/sshd_config 中的配置项:

    PubkeyAuthentication yes
    PasswordAuthentication no
    AuthorizedKeysFile      %h/.ssh/authorized_keys

    修改后重启 SSH 服务:

    sudo systemctl restart sshd

    6. 确保 Termius 启用了 SSH Agent

    在 Termius 设置中,启用内置的 SSH Agent 并加载私钥,避免每次手动选择密钥文件。

    7. 使用命令行测试连接

    使用 OpenSSH 命令行测试连接,排除 Termius 自身问题:

    ssh -i ~/.ssh/id_rsa user@remote

    若命令行也无法连接,说明是密钥或服务器配置问题。

    8. 查看 SSH 日志进行深入排查

    在远程服务器上查看日志:

    sudo tail -f /var/log/auth.log

    尝试连接时,观察是否有类似 Authentication refused: bad ownership or modes for file 的提示。

    9. 检查 Termius 缓存与配置文件

    清除 Termius 的缓存或尝试重装应用,确保配置未被损坏。

    10. 使用 Mermaid 流程图展示排查逻辑

    ```mermaid
    graph TD
        A[开始] --> B{Termius配置密钥路径正确?}
        B -- 否 --> C[修改密钥路径]
        B -- 是 --> D{密钥格式是否OpenSSH?}
        D -- 否 --> E[转换密钥格式]
        D -- 是 --> F{密钥权限是否正确?}
        F -- 否 --> G[调整权限]
        F -- 是 --> H{公钥是否添加到远程?}
        H -- 否 --> I[添加公钥]
        H -- 是 --> J{SSH服务配置是否启用密钥登录?}
        J -- 否 --> K[修改sshd_config]
        J -- 是 --> L{命令行测试是否成功?}
        L -- 否 --> M[查看/var/log/auth.log]
        L -- 是 --> N[Termius缓存问题]
        N --> O[清除缓存或重装Termius]
    ```
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 7月21日