SSH 姿势,git pull push 免密码操作

2,317 阅读2分钟

生成密钥文件

ssh-keygen -t rsa -b 4096 -C "你的 GitHub 邮箱" -f ~/.ssh/id_rsa_company

上面命令输入并回车后,会提示你让你设置密码,我这里直接进行了回车,然后又会提示你,确认密码,我依然继续回车。

整个过程没有错误提示的话,这个时候密钥文件就生成成功了。

~/.ssh 目录下会生成两个文件分别是,私钥文件 ~/.ssh/id_rsa_company 和公钥文件 ~/.ssh/id_rsa_company.pub

ssh-keygen 参数注解

参数 解释
-t 密钥的类型
-b 密钥长度
-C 注释
-f 存储密钥文件的路径和文件名称,路径一般为 ~/.ssh 下,文件名称默认是 is_rsa,建议自己进行自定义,我命名为 id_rsa_company,这样就清楚知道是 rsa 方式以及是公司的密钥

GitHub 添加新的密钥

操作路径为 GitHub -> Settings -> SSH and GPG keys -> New SSH key 。

此时你会看到两个输入框 Title、Key,把公钥文件 ~/.ssh/id_rsa_company.pub 的全部内容粘贴到 Key 输入框当中,Title 为选填,这是为密钥添加一个描述,建议填写。我填写的是可以通过这个 Title,知道密钥是在哪台电脑。

点击 Add SSH key 后,如果出现让你输入你账号的密码的页面,填写相应的密码,并确认后便设置完毕了。

在 「SSH and GPG keys」页面,你会看到有个黑色的钥匙图标。

测试 SSH 连接

编辑 ~/.ssh/config 文件,增加如下配置项。

Host github.com
HostName github.com
User 你的 GitHub 邮箱账号地址
IdentityFile 私钥文件,例如 ~/.ssh/id_rsa_company

测试连接状态

ssh -T git@github.com

终端提示你是否继续连接,输入 yes,当你看到「...You've successfully authenticated, but GitHub does not provide shell access」就说明连接成功了。

刷新 GitHub 的 SSH and GPG keys 页面,原来黑色的钥匙图标也变成了绿颜色的。

~/.ssh/config 文件配置注解

参数 解释
Host 自定义别名。如果把 github.com 改为 github-company,那么连接测试为 ssh -T git@github-company
HostName 主机地址
User 用户名
IdentityFile 私钥文件地址

如果提示 Permission denied (publickey),可以通过 ssh -vT git@github.com 查看详细的连接步骤,包括加载的配置文件、连接地址、端口、密钥文件等等内容。

官方相关文档

ssh -T 权限错误 Permission denied (publickey)

生成 SSH 密钥