Git使用手册/Git教程:生成SSH Key

本文详细介绍了如何检查本机是否已配置SSHKey,以及如何生成新的SSHKey。包括使用命令行工具设置用户名和邮箱,生成公钥和私钥的过程,并提供了解决公钥私钥文件已存在的几种方案。

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

检查本机是否已经存在ssh key配置
使用目录及文件方式验证
进入~/.ssh/目录

cd ~/.ssh/

若没有该文件夹,则会提示No such file or directory,则表明无此配置。

若有该文件夹,会进入到文件夹中,此时使用ls查看文件夹内容。

若如图所示存在1个以上文件,且存在2个文件名相同扩展名不同得文件,则表示之前存在过ssh key配置。

生成ssh key方式验证
可以参考后续生成ssh key的内容。

生成SSH key
使用命令设置git的username和email:
git config --global user.name “xuzhangzheng“
git config --global user.email “xuzhangzheng@ljldata.com”
其中xuzhangzheng和xuzhangzheng@ljldata.com为你在gitHub或gitlab的用户名和邮箱,如图所示:

使用命令生成公钥私钥:
ssh-keygen -t rsa -C “xuzhangzheng@ljldata.com”
这时会出现如图粉色框选部分的提示: 
当出现Enter file in which to save the key时,直接敲回车即可。
注意:该句询问的是你是否要将生成的密钥存入名为id_rsa的文件中。
敲回车的话相当于使用默认名称id_rsa。
此处也可以输入自定义名称,输入完毕后敲回车即可。
当出现Enter passphrase (empty for no passphrase)时,直接敲回车即可。
注意:该句是询问你是否要设置密码,该密码允许为空。所以不设置的话直接敲回车即可。
当出现Enter same passphrase again时,直接敲回车即可。
注意:该句是提示你输入之前设置得相同得密码,若之前设置了密码,则该处需要填写相同的密码;若之前未设置密码,此处直接敲回车即可。
上述操作完毕后,若出现如图中绿色框选提示及框选下方得提示,表示已生成ssh key。
执行完成后,出现如下画面即为生成密钥成功: 

同时,在~/.ssh/目录下会生成2个文件:id_rsa和id_rsa.pub ,如图所示:

id_rsa为生成的私钥,id_rsa.pub为生成的公钥。
后续会使用到私钥和公钥。
注意:
若在生成过程中,若出现如下图提示的话,请看后续解决方案:

若电脑之前已经配置了ssh key的话,且存储公钥、私钥的文件名称也是默认的id_rsa命名的。当你在生成ssh key,出现Enter file in which to save the key提示是否需要修改存储公钥私钥文件名称时,若使用的是默认的文件名称id_rsa的话,会出现如下提示:/c/User/Administrator/.ssh/id_rsa already exists     Overwrite(y/n)?
表示该文件已存在,是否覆盖。
针对这种情况有3种解决方案:
1)在生成ssh key提示Enter file in which to save the key时,不使用默认生成的文件名称id_rsa。如图:

框选的部分便是自己设置的文件命名,同时生成ssh key后,我们在~/.ssh/目录下ls查看一下内容,可以看到有xuzhangzheng@ljldata和xuzhangzheng@ljldata.pub两个文件,即为公钥和私钥。
2)进入~/.ssh/文件夹中,执行rm 文件名命令,删除指定文件后即可再生成存储公钥和私钥文件。如图:便没有提示是否需要重写覆盖已存在文件的选项。

3)在提示/c/User/Administrator/.ssh/id_rsa already exists     Overwrite(y/n)?输入y,选择重写之前的文件。如图: 

重写后使用ls在~/.ssh/查看内容,如图: 

注意:如果选择重写覆盖之前的文件的话,之前配置的ssh key就无法继续使用了,故请谨慎选择。
其中第二点和第三点产生得结果是一样的,都可以实现生成ssh key的目的,但都存在一个问题,一但这样操作的话,在此之前的账户就无法使用了,因为公钥和私钥不存在了。
若使用第二点,不会出现是否重写覆盖之前文件的提示,原因是因为直接把之前的ssh key文件删除了,使用默认名称id_rsa时系统检测不存在该名称的文件,故可以生成ssh key 。
若使用第三点,直接重写覆盖id_rsa文件,也能达到重新生成公钥和私钥的目的 。

至此,本机的ssh key已经生成好了。


相关文章:
关于SSH Key的使用和公钥在gitHub、gitLab的配置等,请参考文章:Git使用手册:使用SSH Key及配置SSH key公钥
关于GIT 工作区、暂存区、本地仓库、远程仓库的概念及关系,请参考文章:Git使用手册:工作区、暂存区、本地仓库、远程仓库
关于GIT 从远程仓库下载项目到本地工作区的操作,请参考文章:Git使用手册:git clone 克隆下载远程仓库项目工程到本地工作区
关于GIT 分支使用详解,请参考文章:Git使用手册:git branch 分支操作、创建分支、查看分支、删除分支、删除本地分支、删除远程分支
关于GIT Checkout的使用,请参考文章:Git使用手册:git checkout 创建分支、切换分支

关于Git status命令使用解读,请参考文章:Git使用手册:git status 查看本地工作区、暂存区中文件的修改状态

关于Git diff和Git add命令使用,请参考文章:Git使用手册:git diff 、 git add 、 git diff --cached 命令详解

关于Git commit命令使用详解,请参考文章:Git使用手册:git commit -m/-am/-a -m 提交文件至本地仓库区

关于Git fetch命令使用,请参考文章:Git使用手册:git fetch 将远程仓库的分支及分支最新版本代码拉取到本地

关于Git pull命令使用,请参考文章:Git使用手册:git pull origin 拉取代码到本地,解决拉取代码时发生的文件冲突

关于Git push命令使用,请参考文章:Git使用手册:git push 推送提交本地仓库代码文件到远程仓库

关于Git log命令使用,请参考文章:Git使用手册/Git教程:git log 查看git提交日志记录


如您有其他问题,希望可以通过留言得形式及时交流,有书写错误和可优化的地方也希望及时提出,感谢。
--------------------- 
作者:许章正 
来源:优快云 
原文:https://blog.youkuaiyun.com/u013374164/article/details/78422968 
版权声明:本文为博主原创文章,转载请附上博文链接!

<think>我们正在处理一个Git连接失败的错误,具体错误是:Failed to connect to git repository git@192.168.200.123:/home/git/probe.git - which ls-remote error 3 根据引用[1]中的错误信息,类似的问题可能是由于无法连接到远程仓库服务器导致的。引用[2]和引用[4]提到了在推送时由于远程仓库有本地没有的更改而被拒绝的情况,但当前错误是连接失败,所以可能是同一个问题。引用[3]提供了GitLab的安装配置,说明用户可能在使用自建的GitLab服务器。 分析错误信息: 错误信息中提到了`ls-remote`命令执行失败,错误码3。这通常表示Git尝试执行`git ls-remote`命令来获取远程仓库的信息时失败了。可能的原因包括: 1. 网络问题:无法访问该IP地址(192.168.200.123)或端口(SSH默认22端口)。 2. SSH配置问题:没有正确的SSH密钥或权限。 3. 远程仓库路径存在:`/home/git/probe.git`可能存在。 4. Git服务未运行:服务器上的Git服务(如GitLab或sshd)未运行。 解决步骤: 1. 检查网络连接:尝试ping 192.168.200.123,确认该服务器可达。 2. 检查SSH连接:使用`ssh -T git@192.168.200.123`测试SSH连接。如果提示权限被拒绝,需要检查SSH密钥是否添加到服务器的authorized_keys中(如果是GitLab,则是添加到GitLab账户的SSH keys中)。 3. 检查仓库路径:确认服务器上是否存在`/home/git/probe.git`仓库。如果是GitLab,仓库路径通常在`/var/opt/gitlab/git-data/repositories`下,但用户配置可能同(如引用[3]中配置了external_url,但仓库路径一定在/home/git下)。 4. 检查Git服务状态:在服务器上运行`sudo gitlab-ctl status`(如果是GitLab)或检查sshd服务状态。 根据引用[3]中GitLab的配置,用户配置了`external_url 'http://192.168.200.140:28080'`,但错误中使用的却是SSH协议(git@192.168.200.123)。这里IP地址同(123 vs 140)可能是一个关键点。 因此,用户可能配置错误的仓库地址(IP地址一致)。需要确认: - 仓库的SSH地址是否正确?应该是git@192.168.200.140(如果GitLab服务器在140上)而是123。 - 或者,如果服务器确实在123上,那么需要检查该服务器上的GitLab配置。 建议用户: 1. 检查远程仓库URL:`git remote -v` 2. 如果URL错误,使用`git remote set-url origin 正确的地址`进行修改。 如果网络和SSH连接都正常,但问题仍然存在,可能需要检查服务器端的配置(如GitLab的SSH端口配置等)。 考虑到错误信息中IP地址是192.168.200.123,而引用[3]中配置的是192.168.200.140,很可能用户混淆了IP地址。 因此,我们首先建议用户确认仓库地址的正确性。 生成相关问题: 1. 如何检查Git远程仓库的URL? 2. 如何测试SSH连接到Git服务器? 3. 如何修改Git远程仓库地址? 4. 在GitLab服务器上如何检查仓库是否存在?</think>### Git 仓库连接失败问题分析 根据错误信息 `Failed to connect to git repository git@192.168.200.123:/home/git/probe.git - which ls-remote error 3`,这是 SSH 协议连接 Git 仓库失败的问题。核心原因可能有: 1. **网络连通性问题** - 目标服务器 `192.168.200.123` 可达 - 防火墙阻止了 SSH 端口(默认 22) - 服务器关机或网络中断 2. **SSH 配置问题** - 本地 SSH 密钥未添加到 Git 服务器 - 服务器 SSH 服务未运行(检查 `sshd` 状态) - 服务器 `/home/git/probe.git` 仓库路径存在 3. **认证问题** - 服务器未配置公钥认证(引用[3]中 GitLab 需在 Web 界面添加 SSH key) - 使用了错误的用户名(GitLab 默认使用 `git` 用户) --- ### 解决步骤 #### 第一步:检查网络连通性 ```bash ping 192.168.200.123 # 测试基础网络 telnet 192.168.200.123 22 # 测试 SSH 端口 ``` ▶ 如果超时,需联系网络管理员确认服务器状态 #### 第二步:验证 SSH 连接 ```bash ssh -T git@192.168.200.123 ``` ▷ 正常响应:`Welcome to GitLab, @username!` ▷ 错误响应: - `Permission denied` → 检查 SSH 密钥配置(引用[3]) - `Connection refused` → 服务器 SSH 服务未启动 #### 第三步:检查仓库路径 在服务器执行: ```bash sudo -u git ls -l /home/git/probe.git # 验证仓库是否存在 ``` ▶ 若存在,需重建仓库或修正路径(引用[3]中 GitLab 仓库通常在 `/var/opt/gitlab/git-data`) #### 第四步:修正远程地址 ```bash git remote set-url origin git@192.168.200.123:correct/path.git # 修正路径 ``` --- ### 关键配置说明(引用[3]) 1. GitLab 的 SSH 连接依赖 `git` 用户 2. 仓库路径需匹配 `gitlab.rb` 中的 `git_data_dirs` 配置 3. 新仓库需通过 GitLab Web 界面创建 4. 用户公钥必须添加到 GitLab 账户的 **SSH Keys** 设置中 --- ### 相关问题 1. 如何将 SSH 公钥添加到 GitLab 服务器? 2. Git 远程仓库连接失败时有哪些通用排查步骤? 3. 如何查看 GitLab 服务器的详细错误日志? 4. 当 Git 同时存在 HTTP 和 SSH 远程地址时,如何切换协议?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值