当前位置: 首页 > news >正文

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 的特殊设计造成的。``

http://www.jsqmd.com/news/85226/

相关文章:

  • 从“识别猫”到诊断疾病:卷积神经网络如何改变我们的视觉世界
  • 21、智能家居物理实践:节能、供电与备份全攻略
  • 22、家庭网络实用指南:数据备份、隐藏与布线策略
  • 23、智能家居网络搭建与通信指南
  • 24、计算机通信:邮件与语音控制的实现与安全
  • 26、通信:人类交流,计算机通信
  • 27、通信技术:从音乐访问到短信服务的全方位解析
  • mysql空字符串和null的区别?
  • mysql的列为什么要设置not null default ‘‘?
  • 17、媒体系统:集成电视和高保真音响
  • 04_让浏览器新标签页“重生”——集颜值、效率与 AI 于一体的 WeTab 体验指南
  • 安装 conda 和 PyTorch
  • 41、树莓派硬件接口与软件应用全解析
  • 28、通信与数据:实现智能家居的关键要素
  • 29、智能家居的数据来源
  • 30、智能家庭的数据来源
  • 31、智能家居的数据来源与自动化控制
  • 32、智能家居:数据处理、错误处理与控制中心集成
  • 33、智能家居系统:用户、设备与通信的综合管理
  • 34、消息控制与传输系统详解
  • 24、UNIX环境下的SAS数据集选项与格式详解
  • 35、智能家居控制系统全解析
  • 25、UNIX环境下的SAS函数和CALL例程详解
  • DreamAquarium v2.083:梦幻水族馆屏保
  • 26、UNIX环境下SAS的信息格式、宏功能及过程使用指南
  • KaniTTS:重塑实时对话交互体验的下一代文本转语音引擎
  • OBS Studio v32.0.3便携版 免费直播录屏工具
  • 27、SAS在UNIX环境下的语句详解
  • 开源视频生成领域新突破:Wan2.2模型凭借MoE架构实现效率与画质双重飞跃
  • 高级用户必备:ComfyUI自定义节点扩展功能全揭秘