windows git:添加SSH key

本文详细介绍在Windows环境下,如何通过Git Bash配置SSH密钥,实现GitHub仓库的免密码访问。包括SSH密钥的生成、添加到GitHub账户、测试及应用,解决常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows下我使用git bash,安装方法请自行了解。

git如果使用https协议,每次push时都会提示输入用户名和密码,使用ssh秘钥(git协议)则可以避免这一麻烦。

配置方法:
1、进入目录~/.ssh

$ cd ~/.ssh

在windows下,这个目录一般为C:\Users\your_username.ssh

2、创建ssh key

$ ssh-keygen -t rsa -C "your_email@example.com"

代码参数含义:

-t 指定密钥类型,默认是rsa,可以省略。
-C 设置注释文字,比如邮箱。
-f 指定密钥文件存储文件名。

以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的ssh key代码,如:

Generating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]

若不输入直接按enter,则使用默认文件名(强烈建议这么做!!!!),并在~/.ssh目录下生成id_rsa和id_rsa.pub两个文件

然后会提示输入密码

Enter passphrase (empty for no passphrase): 
# Enter same passphrase again:

这个密码是每次push时需要输入的密码。同样地,也可以不输入密码,直接按回车跳过这个步骤,这样以后push的时候才能不用输密码

之后就会显示如下

Your identification has been saved in /c/Users/saltyfish/.ssh/id_rsa.
Your public key has been saved in /c/Users/saltyfish/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:BRxQ5G4VITTmcxEO9da8AL8MIg9Aw/2bRgQiR3D4Xto qxy65535@gmail.com
The key's randomart image is:
+---[RSA 2048]----+
|    .o. oO&+*=   |
|     .o..O+* + o |
|       .o.B.+..oo|
|        .=.= oo o|
|        So*.+. o.|
|         =+o.Eo .|
|        .  .   o |
|                 |
|                 |
+----[SHA256]-----+

3、添加ssh key到github
到key生成目录~/.ssh下找到id_rsa.pub文件并用编辑器打开,复制里面的内容;
在github->setting->SSH and GPG keys的SSH keys选择New SSH key,将从id_rsa.pub中复制到的内容粘贴进去并点击Add SSH key
add ssh key
这样就OK了

4、测试ssh key
在git bash中输入

$ ssh -T git@github.com

得到以下回应就算成功

$ ssh -T git@github.com
Hi qxy65535! You've successfully authenticated, but GitHub does not provide shell access.

5、使用ssh进行push
在git bash输入remote -v查看当前的remote url

$ git remote -v

若得到的连接是以https开头的,例如

origin  https://github.com/qxy65535/tfjs_test.git (fetch)
origin  https://github.com/qxy65535/tfjs_test.git (push)

说明此时是以https协议访问该仓库,若配完ssh key不想每次输密码,需要将它替换成git协议:

$ git remote set-url origin git@github.com:qxy65535/tfjs_test.git

以后再用git push就不需要密码了

遇到的问题

1、使用ssh -T出现Permission denied (publickey).
原因:SSH密钥对不匹配。这个错误主要密匙全路径名不相符,结果导致本地的SSH工具无法找到到正确的密匙。
解决:首先检查步骤2中生成的两个文件是否确实在~/.ssh路径下,如过不是,把它们移过去。
其次是非常重要的一点,如果你在步骤2中自定义了ssh key的文件名,那么原因就在于你的命名与ssh内设定的名字不一致,因此需要手动添加秘钥。很多教程大概不是windows系统。。直接让输入命令

$ ssh-add ~/.ssh/你的文件名

于是就有了问题2

2、执行ssh-add时出现Could not open a connection to your authentication agent
其实应该将自定义名字的秘钥交给ssh-agent管理:GitHub help:Generating a new SSH key and adding it to the ssh-agent

# start the ssh-agent in the background
$ eval $(ssh-agent -s)
Agent pid 59566
$ ssh-add ~/.ssh/id_rsa

但是这样很麻烦,难道每次重启git bash都要打这么一套前奏吗??
当然不会,所以可以把这段代码加入到git bash的启动脚本中去。
使用编辑器打开Git安装目录下的etc/bash.bashrc文件,在末尾添加两行

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/你的文件名

保存退出即可。

用ssh-add除了能更改ssh秘钥的文件名,也完全可以用来更改秘钥的路径,比如ssh-add your_path/your_key

遇到的问题都是起源于给ssh key文件自定义了一个文件名。。所以没什么特殊要求的话,还是一路enter使用默认吧_(:3」∠)_

### 配置 Git 并生成 SSH 密钥的方法(Windows 系统) 在 Windows 系统中,配置 Git 并生成 SSH 密钥是使用 Git 与远程仓库(如 GitHub、GitLab 等)进行安全通信的重要步骤。以下是完整的操作流程: #### 1. 安装 Git 首先需要在 Windows 上安装 Git,确保其版本高于 1.9。可以通过 [Git 官方网站](https://git-scm.com/)下载安装程序并按照提示完成安装。安装过程中可以选择默认配置,包括将 Git 添加到系统路径中,以便在命令行中使用 Git 命令。 #### 2. 检查是否存在现有的 SSH 密钥 打开 Git Bash 或命令行工具,执行以下命令以检查是否已经存在 SSH 密钥: ```bash cd ~/.ssh ``` 如果系统提示 `No such file or directory`,则表示当前没有 SSH 密钥,可以继续生成新的密钥。如果存在密钥文件(如 `id_rsa` 和 `id_rsa.pub`),可以备份并删除它们以重新生成[^3]。 #### 3. 生成新的 SSH 密钥 执行以下命令生成新的 SSH 密钥对: ```bash ssh-keygen -t rsa -C "your_email@example.com" ``` 在提示中按回车键接受默认路径(通常为 `~/.ssh/id_rsa`),并且可以选择设置密码(可选)。完成后,系统将生成两个文件:私钥 `id_rsa` 和公钥 `id_rsa.pub`[^3]。 #### 4. 添加 SSH 公钥到 GitHub 首先,复制公钥内容。在 Git Bash 中执行以下命令: ```bash cat ~/.ssh/id_rsa.pub ``` 然后,登录 GitHub 账户,进入 `Settings > SSH and GPG keys > New SSH key`,将复制的公钥内容粘贴到密钥框中,并保存[^2]。 #### 5. 测试 SSH 连接 完成密钥添加后,测试与 GitHub 的连接: ```bash ssh -T git@github.com ``` 如果连接成功,会收到欢迎信息,表明 SSH 密钥已正确配置[^2]。 #### 6. 配置 Git 用户名和邮箱 在使用 Git 进行提交时,需要配置全局用户名和邮箱。执行以下命令进行配置: ```bash git config --global user.name "Your Name" git config --global user.email "your_email@example.com" ``` 可以通过以下命令验证配置是否正确: ```bash git config --global --list ``` 如果未配置,上述命令将不会输出 Git 相关信息[^3]。 #### 7. 常见问题及解决方法 - **错误:Permission denied (publickey). fatal: Could not read from remote repository** 此错误通常表示 SSH 密钥未正确配置。检查以下几点: - 确保公钥已正确添加GitHub 或其他 Git 托管平台。 - 确保私钥文件保存在默认路径(如 `~/.ssh/id_rsa`)。 - 确保 SSH 代理正在运行,并且私钥已添加到代理中: ```bash eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa ``` - 确保 SSH 版本保持最新,因为旧版本(如低于 6.5)可能存在兼容性问题[^1]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值