Codex 添加 SSH 连接完整流程与问题排查记录
本文记录的是在 Codex 中添加远程 SSH 服务器连接的完整过程,包括连接信息填写、身份文件配置、公钥添加,以及遇到的几个常见错误和对应解决方法。
一、目标
希望在 Codex 中通过 SSH 连接一台远程服务器。
原始 SSH 登录命令形式如下:
ssh -p <SSH端口> <远程用户名>@<服务器地址>
例如结构是:
ssh -p <PORT> <USER>@<HOST>
在 Codex 中应拆开填写,而不是把整条命令直接填进去。
二、Codex 中 SSH 连接应如何填写
在 Codex 的“添加 SSH 连接”窗口中,建议这样填写:
显示名称:
任意名称,例如 remote-server
主机名:
<远程用户名>@<服务器地址>
SSH 端口:
<SSH端口>
身份验证:
身份文件
身份文件路径:
<本机私钥文件路径>
例如 Windows 上身份文件路径通常类似:
C:\Users\<本机用户名>\.ssh\id_ed25519
或者:
C:\Users\<本机用户名>\.ssh\id_rsa
注意:这里填的是本机私钥文件路径,不是服务器路径,也不是 .pub 公钥文件。
正确示例:
C:\Users\<本机用户名>\.ssh\id_ed25519
错误示例:
C:\Users\<本机用户名>\.ssh\id_ed25519.pub
三、第一类错误:Host key verification failed
一开始可能会出现:
Host key verification failed
这个错误不是身份文件路径错误,也不是私钥错误,而是 SSH 主机指纹验证失败。
SSH 第一次连接某个服务器时,会把服务器的指纹记录在本机的 known_hosts 文件中。
Windows 上一般在:
C:\Users\<本机用户名>\.ssh\known_hosts
如果服务器重建、实例更换、端口复用,或者 Codex 第一次连接时无法弹出确认窗口,就可能出现这个错误。
解决方法
先不要直接在 Codex 里连,而是在 Windows PowerShell 中手动连接一次:
ssh -p <SSH端口> <远程用户名>@<服务器地址>
如果出现:
Are you sure you want to continue connecting?
输入:
yes
这样本机会把当前服务器指纹写入 known_hosts,之后 Codex 再连接时就不会卡在主机指纹验证这一步。
如果之前已经有旧记录,可以先删除旧记录:
ssh-keygen -R "[<服务器地址>]:<SSH端口>"
然后重新连接:
ssh -p <SSH端口> <远程用户名>@<服务器地址>
输入 yes 后,再回到 Codex 尝试连接。
四、为什么 known_hosts 里看不到对应端口,也会报错?
有两种常见原因。
第一,known_hosts 中的记录可能是哈希形式,肉眼看不到真实地址和端口,例如:
|1|xxxxxxxx|yyyyyyyy ssh-ed25519 AAAA...
这种情况下,即使你搜索不到 <服务器地址>:<SSH端口>,也不代表没有旧记录。
第二,Codex 的 SSH 连接过程可能是非交互式的。第一次连接服务器时,正常终端会要求输入 yes 确认服务器指纹,但 Codex 窗口中可能无法弹出这个交互确认,于是直接失败。
所以最稳妥的做法仍然是:
ssh-keygen -R "[<服务器地址>]:<SSH端口>"
ssh -p <SSH端口> <远程用户名>@<服务器地址>
手动输入 yes,确认成功后再回 Codex 连接。
五、第二类错误:身份文件不存在
后来可能会尝试指定身份文件:
ssh -i C:\Users\<本机用户名>\.ssh\id_ed25519 -p <SSH端口> <远程用户名>@<服务器地址>
如果出现:
Warning: Identity file ... not accessible: No such file or directory.
说明这个私钥文件路径是错的,或者这个文件根本不存在。
解决方法
先查看本机 .ssh 目录中到底有哪些文件:
dir C:\Users\<本机用户名>\.ssh
常见文件包括:
id_ed25519
id_ed25519.pub
id_rsa
id_rsa.pub
known_hosts
其中:
id_ed25519 是私钥,可以填到 Codex
id_ed25519.pub 是公钥,不能填到 Codex
id_rsa 是私钥,可以填到 Codex
id_rsa.pub 是公钥,不能填到 Codex
如果本机没有私钥,可以新建一对密钥:
ssh-keygen -t ed25519 -f C:\Users\<本机用户名>\.ssh\id_ed25519
一路回车即可。
生成后会得到:
C:\Users\<本机用户名>\.ssh\id_ed25519
C:\Users\<本机用户名>\.ssh\id_ed25519.pub
Codex 中身份文件路径填:
C:\Users\<本机用户名>\.ssh\id_ed25519
六、第三类错误:Permission denied
当服务器地址、端口、主机指纹都没问题后,可能会出现:
Permission denied (publickey,password).
或者指定私钥后仍然要求输入密码:
<远程用户名>@<服务器地址>'s password:
这说明:
本机私钥文件存在,但远程服务器没有接受这把私钥。
SSH 密钥登录需要满足:
本机私钥:
C:\Users\<本机用户名>\.ssh\id_ed25519
服务器公钥:
/root/.ssh/authorized_keys 中包含对应的 id_ed25519.pub 内容
也就是说,本机的私钥和服务器上的公钥必须是一对。
七、把本机公钥添加到服务器
先在本机 PowerShell 中查看公钥:
type C:\Users\<本机用户名>\.ssh\id_ed25519.pub
会输出一整行,格式类似:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxx <备注信息>
复制这一整行。
然后登录服务器,可以通过密码 SSH 登录,或者使用云平台网页终端进入服务器。
在服务器上执行:
mkdir -p /root/.ssh
chmod 700 /root/.ssh
nano /root/.ssh/authorized_keys
把刚才复制的公钥整行粘进去。
保存方式:
Ctrl + O
回车
Ctrl + X
然后设置权限:
chmod 600 /root/.ssh/authorized_keys
退出服务器:
exit
八、测试密钥登录是否成功
回到本机 PowerShell,执行:
ssh -i C:\Users\<本机用户名>\.ssh\id_ed25519 -p <SSH端口> <远程用户名>@<服务器地址>
如果这次不再要求输入密码,而是直接进入服务器,说明密钥登录已经配置成功。
这时 Codex 里身份文件路径就可以填:
C:\Users\<本机用户名>\.ssh\id_ed25519
九、服务器上有多个公钥时怎么判断
服务器上的授权公钥文件是:
/root/.ssh/authorized_keys
可以查看:
cat -n /root/.ssh/authorized_keys
如果里面有多行公钥,可以用本机公钥进行对比。
本机查看自己的公钥:
type C:\Users\<本机用户名>\.ssh\id_ed25519.pub
和本机输出内容完全一致的那一行,就是当前这台电脑对应的公钥。
其他公钥可能是服务器原来自带的,也可能是之前其他设备添加的。
不建议随便删除。确实要删除时,一定要先保留当前 SSH 窗口,再开一个新的 PowerShell 测试能否重新登录,避免误删后把自己锁在服务器外面。
十、最终 Codex 正确配置模板
显示名称:
remote-server
主机名:
<远程用户名>@<服务器地址>
SSH 端口:
<SSH端口>
身份验证:
身份文件
身份文件路径:
C:\Users\<本机用户名>\.ssh\id_ed25519
不要把完整 SSH 命令填进主机名,例如不要这样填:
ssh -p <SSH端口> <远程用户名>@<服务器地址>
应当拆成:
主机名:<远程用户名>@<服务器地址>
SSH 端口:<SSH端口>
十一、完整排查顺序
以后遇到类似问题,可以按这个顺序排查。
1. 先确认普通 SSH 能否连接
ssh -p <SSH端口> <远程用户名>@<服务器地址>
如果出现主机指纹问题:
ssh-keygen -R "[<服务器地址>]:<SSH端口>"
ssh -p <SSH端口> <远程用户名>@<服务器地址>
输入:
yes
2. 确认本机私钥是否存在
dir C:\Users\<本机用户名>\.ssh
确认有私钥文件,例如:
id_ed25519
或者:
id_rsa
3. 指定私钥测试
ssh -i C:\Users\<本机用户名>\.ssh\id_ed25519 -p <SSH端口> <远程用户名>@<服务器地址>
如果提示文件不存在,说明路径错了。
如果提示输入密码,说明服务器没有接受这把私钥。
如果提示 Permission denied,说明服务器的 authorized_keys 中没有对应公钥,或者权限设置不正确。
4. 添加公钥到服务器
本机查看公钥:
type C:\Users\<本机用户名>\.ssh\id_ed25519.pub
服务器添加公钥:
mkdir -p /root/.ssh
chmod 700 /root/.ssh
nano /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
十二、这次问题的总结
这次连接过程中主要经历了三个阶段:
第一阶段是:
Host key verification failed
这是服务器指纹验证问题,通过手动 SSH 连接并输入 yes,或者删除旧的 known_hosts 记录后重新连接解决。
第二阶段是:
Identity file ... not accessible
这是身份文件路径错误,说明填写的本机私钥文件不存在。通过查看正确的本机 .ssh 目录,找到真实存在的私钥路径解决。
第三阶段是:
Permission denied
或者指定私钥后仍然要求输入密码。这说明服务器没有接受该私钥。最终通过把本机对应的 .pub 公钥添加到服务器 /root/.ssh/authorized_keys 中解决。
最终成功的关键是:
Codex 中填本机真实存在的私钥路径;
服务器 authorized_keys 中添加对应的公钥;
先用 PowerShell 手动 SSH 测试成功后,再让 Codex 连接。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)