git配置使用ssh

git配置SSH

配置SSH可以解决IDEA提交代码到github上时出现Push failed:Could not read from remote repository.错误

从2021年起,github不再允许http以及https链接。所以我们需要配置git的ssh链接方式。

原文链接:https://blog.csdn.net/u013778905/article/details/83501204

1
2
3
https://github.com/xiangshuo1992/preload.git

git@github.com:xiangshuo1992/preload.git

这两个地址展示的是同一个项目,但是这两个地址之间有什么联系呢?

前者是https url 直接有效网址打开,但是用户每次通过git提交的时候都要输入用户名和密码,有没有简单的一点的办法,一次配置,永久使用呢?当然,所以有了第二种地址,也就是SSH URL,那如何配置就是本文要分享的内容。

GitHub配置SSH Key,这在Linux上能够帮助我们在通过git提交代码时,不需要繁琐的验证过程,简化操作流程。

同时这也是我们必须要做的,因为不再允许http和https的连接方式。

GitHub上关于这部分的官方文档

设置git的user name和email

如果你是第一次使用,或者还没有配置过的话需要操作一下命令,自行替换相应字段。

1
2
3
git config --global user.name "YJ2CS"

git config --global user.email "cnyjzhang@outlook.com"

git-安装-配置

检查现有的ssh key或添加新的key

这部分内容经常更新,建议阅读官方文档

Checking for existing SSH keys - GitHub Docs

测试 SSH 连接

设置 SSH 密钥并将其添加到您的 GitHub 帐户后,您可以测试连接。

测试 SSH 连接之前,您应已完成以下各项:

  • 检查现有 SSH 密钥

  • 生成新 SSH 密钥

  • 新增 SSH 密钥到 GitHub 帐户

测试连接时,您将需要使用密码(即您之前创建的 SSH 密钥密码)验证此操作。 有关使用 SSH 密钥密码的更多信息,请参阅“使用 SSH 密钥密码”。

打开 Git Bash。输入以下内容:

1
2
$ ssh -T git@github.com
# Attempts to ssh to GitHub

您可能会看到类似如下的警告:

1
2
3
> 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)?

验证您看到的消息中的指纹匹配步骤 2 中的消息之一,然后输入 yes:

1
2
> Hi username! You've successfully authenticated, but GitHub does not
> provide shell access.

验证生成的消息包含您的用户名。 如果收到“权限被拒绝”消息,请参阅“错误:权限被拒绝(公钥)”

使用 SSH 密钥密码

您可以保护 SSH 密钥并配置身份验证代理,这样您就不必在每次使用 SSH 密钥时重新输入密码。

使用 SSH 密钥时,如果有人获得您计算机的访问权限,他们也可以使用该密钥访问每个系统。 要添加额外的安全层,可以向 SSH 密钥添加密码。 您可以使用 ssh-agent 安全地保存密码,从而不必重新输入。

添加或更改密码

通过输入以下命令,您可以更改现有私钥的密码而无需重新生成密钥对:

1
2
3
4
5
6
7
$ ssh-keygen -p
# Start the SSH key creation process
> Enter file in which the key is (/Users/you/.ssh/id_rsa): [Hit enter]
> Key has comment '/Users/you/.ssh/id_rsa'
> Enter new passphrase (empty for no passphrase): [Type new passphrase]
> Enter same passphrase again: [One more time for luck]
> Your identification has been saved with the new passphrase.

如果您的密钥已有密码,系统将提示您输入该密码,然后才能更改为新密码。

在 Git for Windows 上自动启动 ssh-agent

您可以在打开 bash 或 Git shell 时自动运行 ssh-agent。 复制以下行并将其粘贴到 Git shell 中的 ~/.profile 或 ~/.bashrc 文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
(umask 077; ssh-agent >| "$env")
. env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi

unset env

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi

unset env

如果您的私钥没有存储在默认位置之一(如 ~/.ssh/id_rsa),您需要告知 SSH 身份验证代理其所在位置。 要将密钥添加到 ssh-agent,请输入 ssh-add ~/path/to/my_key。 更多信息请参阅“生成新的 SSH 密钥并添加到 ssh-agent”

提示:如果想要 ssh-agent 在一段时间后忘记您的密钥,可通过运行 ssh-add -t <seconds> 进行配置。

现在,当您初次运行 Git Bash 时,系统将提示您输入密码:

1
2
3
4
5
6
7
8
> Initializing new SSH agent...
> succeeded
> Enter passphrase for /c/Users/you/.ssh/id_rsa:
> Identity added: /c/Users/you/.ssh/id_rsa (/c/Users/you/.ssh/id_rsa)
> Welcome to Git (version 1.6.0.2-preview20080923)
>
> Run 'git help git' to display the help index.
> Run 'git help ' to display help for specific commands.

ssh-agent 进程将继续运行,直到您注销、关闭计算机或终止该进程。

更改已有项目中的远程仓库地址

我们需要把之前的https连接改为ssh连接

修改项目目录下 .git文件夹下的config文件,将url地址替换

1
vim /.git/config

搜索替换,将

1
https://github.com/

替换成

1
git@github.com:

git ssh地址获取可以看如下图切换。

img