ssh 连接 git 教程

ssh 连接 git 教程

有了门,我们可以出去;有了窗,我们可以不必出去。——钱钟书《围城》

Git 是个好东西,但是用起来有两个不方便之处:

  • 操作时要频繁输密码;
  • 连接 github 时由于网速问题经常失败。

使用 ssh 连接便可以解决这样的问题,但奈何本人记性不好,每次配置都要上网查半天教程,于是这次终于下定决心自己总结了。1

1 关于 ssh

ssh 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。2使用 ssh 协议可以连接远程服务器和服务并向它们验证。连接远程仓库时无需输入密码而且能实现对 github 的流畅访问。除此之外我还用 ssh 协议成功在 Windows Terminal 中连接上了自己的远程服务器。

2 检查现有的 ssh 密钥

Windows 打开 GitBash,Linux 下打开终端,输入:

1
$ ls -al ~/.ssh

如果你看到以下输出,那么说明你已经有 ssh 密钥(以 .pub 结尾的文件):

1
2
3
4
5
6
7
8
$ ls -al ~/.ssh
total 26
drwxr-xr-x 1 197121 0 Mar 31 22:29 ./
drwxr-xr-x 1 197121 0 Apr 16 23:36 ../
-rw-r--r-- 1 197121 2610 Mar 31 22:27 id_rsa
-rw-r--r-- 1 197121 573 Mar 31 22:27 id_rsa.pub
-rw-r--r-- 1 197121 831 Apr 1 12:08 known_hosts
-rw-r--r-- 1 197121 92 Mar 31 22:26 known_hosts.old

如果你不想用原来的密钥或者没有密钥的话也不用着急,看下一步如何生成新的 ssh 密钥。

3 创建新的 ssh 密钥

3.1 生成新的 ssh 密钥

在 Windows 的 GitBash 或 Linux 终端输入:

1
2
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 你可以把引号里的替换为你自己的邮箱,不换的话问题不大

然后终端会让你输入一些东西,可以不用输入直接一路回车,看到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:t3925EJgD4kcUp69dBv/nqkM85n0I5mFRW4BlZwaVeo your_email@example.com
The key's randomart image is:
+---[RSA 4096]----+
| .=o=|
| . . B |
| o + * .|
| . * =oo+ |
| So.B +A+ |
| .o.B.o.o|
| .o o+o.|
| .*+B.*|
| .OoBo|
+----[SHA256]-----+

代表密钥生成成功。

3.2 将 ssh 密钥添加到ssh-agent

3.2.1 确保 ssh 正在运行

终端输入:

1
2
$ eval
$ ssh-agent -s

看到如下输出:

1
2
3
SSH_AUTH_SOCK=/tmp/ssh-xkZRdf3bu6fW/agent.1075848; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1075849; export SSH_AGENT_PID;
echo Agent pid 1075849;

代表 ssh 正常运行。

3.3.3 添加 ssh 到账户

执行以下两条命令:

1
2
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa # 这里如果文件名被改过要写你自己定义的文件名

看到输出:

1
Identity added: id_rsa (your_email@example.com)

添加成功!

4 将密钥添加到 github 账户

4.1 复制你的公钥

在终端使用:

1
$ cat ~/.ssh/id_rsa.pub

看到:

1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDJ6c4cXmpyJr/anagkKz4K+RCFYSJlkFvdNY6JBmKeomrQYfChpDZFxjUkj72XfSAhGyJjPcn4pTHHLCHOS2jzstrvE0Cq19p/mbbvwsq5GGqmzsTYqOeqpTIeEKnXlv/PXkh/mXJVOWhui8esIQk4bU1Ss2wIEVMSRI+9n8RgyBcpbiq4m/SDrUy1HJNHO3pyjcf7k6XUjfxeTRWMVtj7IH3yQbgrZQo90VHsVhkmTeyvaCv8tJLi/j+t9E1/kOWPbpTFTmaAe190SuPVwpQjyRH/Z8UWVdCYxgeZ9l9JN3MTyHfRWz6FuDJdoQze94mU1NwEP8AftHNVTsMT2qvbAYK3Mcr6/j1R1vAeq4mbgn1dp79RGW0cKOSx336WuFsfebMV7QLZ1RnW5xF6VgghMd4x9Hk8kmLL6s8I7ZfbjNCgyAhL9d5N01lsz8hdMv1BHzaZp+yk0EXUy8fxFvaSYaUpQuKb8eL6DesBJJ8FH4GVb6+V7J7OsXhG8QiKdDsDbfGDJs/Aq0Ew14cuHlD9y/1A44b+Kt6WwmcISGG85SM+YUcPuay8gEFzNQ/Tzgw4bJznw0RHHVuvtpmjvlBUxXRTSICvrrAJ19/yXoHcZtiPncpDHVnyIy6IVAg23MCeUbrIPIPKQXVHG/5ouRk0YbkFbl6kSq/Yurb35N7tDQ== your_email@example.com

全给复制下来!

4.2 将公钥添加到 github 账户

然后去 gihub:

  • 右上角下拉面板选择 Settings
  • 左侧选择 SSH and GPG keys
  • 点击 New SSH key
  • 随便起一个 title;
  • 把公钥粘贴到下面。

可能会输入密码,添加完成!

5 测试 ssh 连接

在终端中输入:

1
$ ssh -T git@github.com

可能看到如下警告:

1
2
3
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入 yes:

1
2
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
Hi xxxxxx You've successfully authenticated, but GitHub does not provide shell access.

如果 xxxxxx 是你的 github 用户名,说明成功。

6 配置 git 使用 ssh 密钥登录

如果你在配置完 ssh 之后使用 git clone 那么这个仓库用的也应该是 ssh 协议,就无需多做操作。但是对于之前已经 clone 完的仓库,就需要进行一下修改使之使用 ssh 协议。

首先应该在命令行中进入你的仓库。

6.1 检查当前的 remote url

在仓库下输入:

1
$ git remote -v

看到输出:

1
2
origin  https://xxxxx.git (fetch)
origin https://xxxxx.git (push)

说明当前使用的还是 https 协议,如果以 git 开头表示 git 协议。

6.2 修改 remote url 为 git 协议

上 github 仓库,点 Code,选择 SSH,复制链接:

在终端输入:

1
$ git remote set-url origin git@github.com:xxxxx.git

再检查 git 协议:

1
$ git remote -v

出现:

1
2
origin  git@xxxxx.git (fetch)
origin git@xxxxx.git (push)

成功!

接下来可以快乐 push&pull 了。



  1. 参考自:使用SSH连接到GitHub - 简书 (jianshu.com)配置github SSH公钥登录 - 苦咖啡~~ - 博客园 (cnblogs.com)

  2. 来自《百度百科》


ssh 连接 git 教程
https://onlyar.site/2022/04/17/Misc-ssh-git/
作者
Only(AR)
发布于
2022年4月17日
许可协议