Github上配置SSH

本文介绍了如何在Github上配置SSH,以及当有多个Github账号时又该如何进行配置。

注意

本文在于介绍与Github相关的SSH配置,关于SSH本身,比如SSH密钥的生成、本地SSH相关文件等,详见:SSH Notes,本文不赘述。

Github配置SSH

生成ssh密钥

运行ssh-keygen生成一个SSH密钥

1
ssh-keygen

生成的默认SSH私钥文件是~/.ssh/id_ed25519,对应的公钥文件是~/.ssh/id_ed25519_pub,后续需将公钥文件的内容粘贴到Github上。

在Github上配置SSH

在GitHub任意页的右上角,单击个人资料照片,然后单击Settings进入设置。

githuh-ssh-1

SSH and GPK keys设置中点击New SSH key

githuh-ssh-2

Title自定义取个名字,Key type默认的Authentication Key即可,将本地的公钥文件的内容复制到Key中,保存。

githuh-ssh-3

报错

失败

ssh: connect to host github.com port 22: Operation timed out

SSH的配置文件~/.ssh/config添加如下配置

1
2
3
Host github.com
HostName ssh.github.com
Port 443

多个Github账号配置SSH

当自己有多个Github账号,在一台电脑上同时用到这两个账号的仓库时,需要进行额外的配置。

生成多个SS密钥

一个Github账号需要生成一个SSH密钥,比如现在生成如下两个SSH密钥

1
2
ssh-keygen -f ~/.ssh/id_ed25519_github_alan
ssh-keygen -f ~/.ssh/id_ed25519_github_bob

将公钥添加到对应的Github账号

将生成的两个SSH公钥文件的内容分别添加到对应的Github账号上,见上文

本地配置SSH

在SSH配置文件~/.ssh/config中添加以下内容:

1
2
3
4
5
6
7
8
9
Host github-alan
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_alan

Host github-bob
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_bob

如果遇到了上面提到的问题ssh: connect to host github.com port 22: Operation timed out,可将上述内容修改成下面内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Host github-alan
HostName ssh.github.com
User git
Port 443
IdentityFile ~/.ssh/id_ed25519_github_alan

Host github-bob
HostName ssh.github.com
User git
Port 443
IdentityFile ~/.ssh/id_ed25519_github_bob

多个SSH密钥的使用

比如上述SSH密钥~/.ssh/id_ed25519_github_alan对应用户名为alan的Github账号,~/.ssh/id_ed25519_github_bob对应用户名为bob的账号,现在需要克隆alanbob的仓库,在Github上复制仓库的地址后,一般使用的克隆仓库的命令分别如下:

1
2
git clone git@github.com:alan/alan.github.io.git
git clone git@github.com:bob/bob.github.io.git

那么,在进行上述配置后,现在命令应该分别修改成:

1
2
git clone github-alan:alan/alan.github.io.git
git clone github-bob:bob/bob.github.io.git

也就是将原来仓库地址中的git@github.com替换成上面~/.ssh/config文件中设置的对应SSH密钥的Host值。

更改本地远程仓库的地址

比如在原来本地某个仓库中运行命令git remote -v,得到的结果如下:

1
2
origin git@github.com:alan/hugo-blog.git (fetch)
origin git@github.com:alan/hugo-blog.git (push)

由于上面对SSH配置文件进行了修改,需要使用下面的命令更改远程仓库的地址:

1
git remote set-url origin github-alan:alan/hugo-blog.git

这样的话,这个仓库后续使用的SSH密钥就是~/.ssh/id_ed25519_github_alan


相关内容

0%