返回文章列表文章索引阅读全文
STARBLOG / 阅读手记
系统配置

别再手动复制SSH公钥了,Linux服务器一键从GitHub快速导入公钥

输入GitHub用户名就自动导入SSH公钥?Ubuntu这懒人功能挺省事。原理不就是爬取`https://github.com/用户名.keys`吗?手动用`curl`也能实现,装`ssh-import-id`更高效,但谁稀罕这些花里胡哨的。

曦远 (DealiAxy)约 4 分钟
目录6 个章节

前言

Ubuntu 安装程序(Subiquity)的一大亮点,只要输入 GitHub 用户名,就可以自动导入 SSH 公钥。

它极大地简化了新服务器的初始化配置,让你免去了手动复制粘贴那一大串 SSH Public Key 的烦恼。

原理

GitHub 为每个用户提供了一个公开的 SSH 公钥访问接口。

任何人的公钥都是公开信息的,你只需要在浏览器或终端访问以下 URL 模式: https://github.com/你的用户名.keys

当你输入用户名时,Ubuntu 安装程序在后台执行了类似以下的操作:

  1. 通过网络请求访问 https://github.com/username.keys。
  2. 获取该页面返回的纯文本公钥列表。
  3. 将这些公钥追加到服务器对应用户的 ~/.ssh/authorized_keys 文件中。
  4. 确保 .ssh 目录和 authorized_keys 文件的权限正确(通常是 700 和 600)。

如何实现?

方法一:使用 ssh-import-id(最推荐)

Ubuntu 那个功能其实是调用了 ssh-import-id 这个工具,它在 Debian 的官方仓库里也是有的。

  1. 安装工具:

    Bash

    sudo apt update && sudo apt install ssh-import-id -y
    
  2. 导入公钥:

    Bash

    ssh-import-id gh:你的GitHub用户名
    

    注:gh: 前缀代表 GitHub,它也支持 Launchpad(使用 lp:)。

方法二:纯手动万能命令(无需安装任何工具)

如果你不想安装额外的软件包,直接用 curl 配合管道操作也能搞定:

Bash

mkdir -p ~/.ssh && chmod 700 ~/.ssh
curl -L https://github.com/你的用户名.keys >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Tips

  • 这种方式依赖于 GitHub 的可用性和网络连接。如果你在公司内网或者特殊网络环境下,记得确认服务器能否正常访问 github.com。
  • 多平台支持: 除了 GitHub,GitLab 也提供类似的功能,链接格式为 https://gitlab.com/用户名.keys。
  • 自动化部署: 如果你经常折腾服务器,可以把上面那行 curl 命令写进你的初始化脚本或 Dockerfile 中,实现真正的“无感”配置。

_EOF_

别再手动复制SSH公钥了,Linux服务器一键从GitHub快速导入公钥

本文作者:
程序设计实验室
版权声明:
本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

相关文章

Nginx配置http跳转https-强制https访问

前言 最近上线了好几个项目,同时也申请了相应的SSL证书,不过发现了一个问题,用户在浏览器直接输入域名的时候,浏览器默认访问的是http站点,然而我们的网站只支持https访问,所以就访问不了咯。 其实可以在nginx全局配置里面把所有访问重定向到https,不过服务器有些站点是提供http服务的,所以只能每个站点分别配置。 根据搜索引擎找到的资料,本文总结了三种配置方法,有需要的朋友可以选择中意

2025-10-27 · 系统配置 · 约 1 分钟

Debian8-stable-升级Python版本到3-6

前言 最近把一个Python项目部署到服务器上,然而服务器上的Python版本实在是太旧了,于是着手进行更新。 互联网上搜索到的方法都是下载Python3.6的代码之后手动编译,然而在服务器上编译安装出了点问题,于是想到了Ubuntu的ppa方式,debian和Ubuntu本属同源,理论上Ubuntu的ppa,debian也是可以用的。 操作步骤如下: 添加软件源 add-apt-reposito

2025-10-27 · 系统配置 · 约 1 分钟

讨论

共 0 条

良言一句三冬暖,恶语伤人六月寒。

加载评论中…