# Github 如何配置 SSH
一般有两种方式从 github 上 拉取代码
- https
- ssh
# HTTPS
局限:提交代码时每次需要输入账户密码验证,很麻烦
git clone https://github.com/sialvsic/<repo name>.git
# SSH
为了避免每次提交时反复输入账户密码进行验证,可以配置 ssh,做到一次配置,之后省事
git clone git@github.com:sialvsic/<repo name>.git
# 如何配置
思路:
- 生成 ssh key
- 在 github 上添加 ssh key
- 测试 ssh key
# 生成 ssh key
其实可以直接看官方的文档,说的很清楚 Connecting to GitHub with SSH (opens new window)
a. 查看是否已经存在 ssh key - Checking for existing SSH keys
打开命令行
输入ls -al ~/.ssh,看是否存在以下文件名,如果存在说明已经有了
id_rsa.pub
id_ecdsa.pub
id_ed25519.pub
b. 如果存在说明已经有了 ssh key,则不需要在生成了,如果没有,需要生成 不同的环境的命令不大一样,有 Mac,Linux,Windows,参考
以 Linux 举例,其他环境可参考 (opens new window)
打开命令行,输入以下命令
$ ssh-keygen -t ed25519 -C "your_email@example.com"
如果不支持Ed25519算法
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
当你看到提示,Enter a file in which to save the key
,输入回车符(这会存储到默认的位置)
Enter a file in which to save the key (/home/you/.ssh/id_ed25519): [Press enter]
当你看到提示,Enter passphrase
,这里可以输入回车符略过
Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again]
之后就会生成两个 ssh 文件,一个公钥,一个私钥
id_xxx <= 私钥
id_xxx.pub <= 公钥
# 在 github 上添加 ssh key
a. 复制刚刚生成的公钥
的内容
$ pbcopy < ~/.ssh/id_ed25519.pub
# Copies the contents of the id_ed25519.pub file to your clipboard
b. 打开 github,在头像 -> Setting -> SSH and GPG key -> New SSH key,粘贴上面复制的值到 key 的文本区内,title 部分可以自己随意填写
# 测试 SSH key 的配置
a. 打开命令行
b. 输入
$ ssh -T git@github.com
# Attempts to ssh to GitHub
可能会看到一个警告 ⚠️
> The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
> Are you sure you want to continue connecting (yes/no)?
c. 输入 yes 既可,你会看到以下信息,username 为自己的 github 账户名
> Hi username! You've successfully authenticated, but GitHub does not
> provide shell access.
至此,ssh key 配置完成
# 连接失败问题处理
ssh -T git@github.com
ssh: connect to host github.com port 22: Operation timed out
如果遇到如上的问题
- 判断网络连接是否正确
ssh -T -p 443 git@ssh.github.com
得到如下结果说明正确
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
- 新增config配置文件
~/.ssh/config
Host github.com
Hostname ssh.github.com
Port 443
ssh -T git@github.com
即可