news 2026/6/23 11:03:43

bash判断ssh -Tgit@GitHub是否成功,不要看 ssh 的退出码,而要看输出内容

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
bash判断ssh -Tgit@GitHub是否成功,不要看 ssh 的退出码,而要看输出内容

“ 判断 GitHub SSH 成功与否,永远不要看 ssh 的退出码,而要看输出内容” ,
这句话基本正确,尤其是针对 GitHub 推荐的 SSH 测试命令ssh -T git@github.com

  • GitHub 官方文档明确指出:成功认证后,该命令会输出类似“Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.”的消息,同时退出码(exit code)为 1(而非传统的 0 表示成功)。
  • 这是因为 GitHub 故意拒绝提供 shell 访问(它打印欢迎消息后立即退出),导致退出码为 1。
  • 如果认证失败(如密钥不对、未添加等),通常退出码为 255,并输出 “Permission denied (publickey)” 等错误。
  • 因此,单纯检查退出码是否为 0 会误判:成功时是 1,看起来像“失败”。

实际判断建议

  • 优先看输出内容:看到 “You’ve successfully authenticated” 就表示 SSH 密钥认证成功。
  • 如果想在脚本中自动化检查退出码,可以这样处理(常见做法):
    • 成功:退出码 == 1
    • 失败:退出码 == 255(或其他非 1 的值)

示例 Bash 函数(来自社区常见实现):

ssh-T git@github.com>/dev/null2>&1if[$?-eq1];thenecho"SSH 认证成功"elseecho"SSH 认证失败"fi

总之,这句话的“永远不要看 ssh 的退出码”有点绝对(脚本中还是要看的,但要看具体值),但核心意思是对的:别指望退出码 0 表示成功,主要靠输出内容确认。这也是 GitHub 的特殊设计造成的。``

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 12:38:43

22、家庭网络实用指南:数据备份、隐藏与布线策略

家庭网络实用指南:数据备份、隐藏与布线策略 1. 数据备份策略 数据备份对于保护个人信息和工作成果至关重要。以下是不同操作系统和场景下的数据备份方法: 1.1 Linux 和 MacOS 备份 为远程服务器生成密钥,反转 rsync 命令参数,使远程服务器从家庭机器拉取数据进行备份…

作者头像 李华
网站建设 2026/6/23 2:02:19

28、通信与数据:实现智能家居的关键要素

通信与数据:实现智能家居的关键要素 在当今科技飞速发展的时代,通信技术和数据的有效利用对于打造智能、便捷的家居环境至关重要。本文将深入探讨短信通信以及数据获取与处理在智能家居中的应用,包括短信的发送与接收、数据的法律使用问题以及网页数据抓取的方法等。 短信…

作者头像 李华
网站建设 2026/6/23 12:31:42

24、UNIX环境下的SAS数据集选项与格式详解

UNIX环境下的SAS数据集选项与格式详解 1. UNIX环境下的SAS数据集选项概述 在UNIX环境中,存在一些特定于该环境的SAS数据集选项,这些选项的行为或语法具有UNIX特性。在SAS语句中,数据集选项应紧跟数据集名称指定,格式如下: ...data-set-name(option-1=value-1 option-2…

作者头像 李华
网站建设 2026/6/22 15:44:08

26、UNIX环境下SAS的信息格式、宏功能及过程使用指南

UNIX环境下SAS的信息格式、宏功能及过程使用指南 在UNIX环境下使用SAS软件时,有许多特定的信息格式、宏功能和过程需要我们了解和掌握。下面将为大家详细介绍这些内容。 1. UNIX环境下的SAS信息格式 在UNIX环境中,SAS有几种特殊的信息格式,它们各自有独特的行为和语法,以…

作者头像 李华
网站建设 2026/6/23 14:16:49

29、SAS系统相关目录、工具及通用命令详解

SAS系统相关目录、工具及通用命令详解 1. !SASROOT目录介绍 当安装SAS时,其整个目录结构会被放置在文件系统的一个节点上,这个节点就是!SASROOT目录,它是SAS的根目录。该目录可以位于文件系统的任何位置,默认位置是 /usr/local/SAS 。 !SASROOT目录包含了使用SAS所需的…

作者头像 李华