在使用 Git 时经常会遇到一些问题, 本文章记录下来, 以备再次遇到进行查询。

博主博客

一、no matching host key type found. Their offer: ssh-rsa

修改 ~/.ssh/config 添加下面内容

HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

二、SSH 登录时出现 agent refused operation 错误

ssh -p 22 [email protected]

报错信息

sign_and_send_pubkey: signing failed for RSA "/home/nukix/.ssh/id_rsa" from agent: agent refused operation
[email protected]: Permission denied (publickey).

该错误通常是因为 SSH 代理(ssh-agent)未正确加载私钥,或私钥/目录权限设置不当。请按以下步骤排查并修复:

1. 启动 SSH 代理并加载私钥

首先确认 ssh-agent 正在运行,并将私钥添加到代理中。

# 启动 ssh-agent(如果尚未运行)
eval "$(ssh-agent -s)"

# 加载默认私钥(id_rsa)
ssh-add ~/.ssh/id_rsa

验证私钥是否已成功加载:

ssh-add -l

应显示类似 2048 SHA256:... /home/nukix/.ssh/id_rsa (RSA) 的信息。

2. 检查私钥及目录权限

SSH 对私钥文件的权限要求严格,必须仅对所有者可读写。

# 设置私钥权限为 600(仅所有者可读写)
chmod 600 ~/.ssh/id_rsa

# 设置 .ssh 目录权限为 700(仅所有者可进入)
chmod 700 ~/.ssh

3. 确认公钥已正确配置在服务器上

确保您的公钥(~/.ssh/id_rsa.pub)已添加到服务器的 ~/.ssh/authorized_keys 文件中。
如果尚未添加,可使用以下命令一键完成(需输入密码一次):

ssh-copy-id -p 22 [email protected]

或者手动将公钥内容追加到服务器的 ~/.ssh/authorized_keys 文件中。

4. 使用调试模式获取详细信息

若问题依旧,可执行带 -v 参数的 SSH 命令,查看详细日志以定位问题:

ssh -v -p 22 [email protected]

观察输出中是否有权限拒绝、密钥不匹配或代理交互失败等提示。

参考文献