2026.7.23 星期四
SSH
SSH公钥设置
Windows 用户建议使用 Windows PowerShell 或者 Git Bash ,在 命令提示符 下无 cat 和 ls 命令。
【说明】因为我的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文件里。
- 这是 Bash 的多行写入语法 :把
-
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

