Git中SSH连接

2026.7.23 星期四

SSH

SSH公钥设置

Windows 用户建议使用 Windows PowerShell 或者 Git Bash ,在 命令提示符 下无 catls 命令。

【说明】因为我的windows用户名是中文,Git Bash对中文路径的编码解析失败,把中文名解析成了乱码\267\353\315\361\342\371,导致无法识别.ssh目录。所以我就直接指定了一个纯英文路径的目录来生成密钥(步骤1),避开中文用户名的编码问题(若不是中文名,即跳过步骤1)

下面命令都在Git bash中执行

步骤1:创建一个纯英文目录

比如C:\ssh_keys

midir -p /c/ssh_keys

步骤2:生成密钥到这个纯英文路径

ssh-keygen -t ed25519 -C "你的邮箱" -f /c/ssh_keys/id_ed25519

  • -t:key类型
  • -C: 注释。给密钥加一个人类可读的标识,会写在公钥文件(.pub)末尾。推荐写自己邮箱
  • -f:强制指定到改文件下(可选)

按三次回车键即得到如下

查看生成的公钥和私钥

  • 私钥文件 id_ed25519
  • 公钥文件 id_ed25519.pub

步骤3:复制公钥到剪贴板

clip < ~/.ssh/id_ed25519.pub

这条命令会把公钥内容复制到剪贴板,之后就可以粘贴到 GitHub/GitLab 等平台的 SSH Keys 配置中。

或者可直接查看

标题后面的的SHA256是公钥的指纹,他是对公钥内容做哈希运算得到的的一串字符,作用是唯一标识这把公钥,方便你在多个密钥中快速区分。

步骤4:测试 SSH 连接是否正常

ssh -T git@gitee.com

如上图又发现是中文名的影响,所以我们手动指定私钥路径测试连接

ssh -T -i /c/ssh_keys/id_ed25519 git@gitee.com

看到绿色提示,就表示SSH认证成功啦!

Could not create directory '/c/Users/\267\353\315\361\342\371/.ssh' (No such file or directory). Failed to add the host to the list of known hosts...

但是还是会报错(中文用户名路径编码问题,SSH 无法自动创建 known_hosts 文件来记录信任的主机。)

已经成功认证了,只是少了一个 "记住主机" 的功能。下一次连接还是会问一次yes

中文名的解决方法

1.修复.bashrc,让Git永远用我们的配置文件

echo 'export GIT_SSH_COMMAND="ssh -F /c/ssh_keys/config"' > ~/.bashrc

echo 'alias ssh="ssh -F /c/ssh_keys/config"' >> ~/.bashrc

source ~/.bashrc

  • export GIT_SSH_COMMAND="ssh -F /c/ssh_keys/config"

    • 告诉 Git:所有 Git 操作(clone/pull/push)都用这个自定义的 SSH 配置文件,不再去默认的乱码路径找配置。
  • alias ssh="ssh -F /c/ssh_keys/config"

    • ssh 命令起别名:以后你直接敲 ssh,它也会自动加载 /c/ssh_keys/config,而不是去默认路径。
  • source ~/.bashrc

    • 让刚才的修改立即生效,不用重启终端。

2.生成C:\ssh_key\config,指定私钥路径并免yes确认:

cat > /c/ssh_keys/config <<'EOF'

Host gitee.com

IdentityFile /c/ssh_keys/id_ed25519

StrictHostKeyChecking no

EOF

  • cat > /c/ssh_keys/config <<'EOF' ... EOF

    • 这是 Bash 的多行写入语法 :把 EOF 之间的内容,完整写入到 /c/ssh_keys/config 文件里。
  • Host gitee.com

    • 这段配置只对 gitee.com 生效,不影响其他主机(比如 GitHub)。
  • IdentityFile /c/ssh_keys/id_ed25519

    • 明确告诉 SSH:连接 Gitee 时,私钥就用这个文件,彻底解决中文路径导致的 "找不到私钥" 问题。
  • StrictHostKeyChecking no

    • 核心作用:自动接受新主机的密钥,不再弹出 yes/no 确认提示,直接连接。

3.测试连接

ssh -T git@gitee.com

现在就可以不需要yes,直接ssh -T git@gitee.com就可以连接成功了

关于那两行警告,下方命令可消除。这样 SSH 会把主机记录存在 /c/ssh_keys/known_hosts,避开中文路径。

echo " UserKnownHostsFile /c/ssh_keys/known_hosts" >> /c/ssh_keys/config

touch /c/ssh_keys/known_hosts

步骤5:使用

克隆仓库

git clone git@gitee.com:你的名字/你的仓库名.git

拉取代码

git pull origin main

推送代码

git push origin main

相关推荐
盏灯4 小时前
mac 外接磁盘,热更新失效
前端·后端
那些年丶ny5 小时前
颜色扩展库
前端·javascript·数据可视化
ihuyigui5 小时前
海外签收通知短信接口
android·java·开发语言·前端·数据库·后端
YWL5 小时前
OpenLayers + Vue 2 使用指南(01)
前端·javascript·vue.js
阿虎儿5 小时前
Git exclude 功能解析
git
暖和_白开水5 小时前
数据分析agent (七):contextvars 模块上下文request_id
java·前端·数据分析
程序员黑豆5 小时前
鸿蒙应用开发:Flex 组件从入门到实战
前端·华为·harmonyos
大爱编程♡5 小时前
Vue3+TypeScript+element-plus的文章管理项目(配后端接口)-退出及文章管理页面
前端·javascript·typescript
先吃饱再说5 小时前
React 组件设计:从 Props 传递到组件封装
前端·react.js