案例
shell
yys@yys-VMware-Virtual-Platform:~/project/55$ scp 55 root@192.168.1.8:/home/root/
指令输入后,通常是可以直接拷贝到开发板中。当然,也有特例,下面是初学者可能会遇到的问题!
异常问题
shell
yys@yys-VMware-Virtual-Platform:~/project/55$ scp 55 root@192.168.1.8:/home/root/
Unable to negotiate with 192.168.1.8 port 22: no matching host key type found. Their offer: ssh-rsa
scp: Connection closed

分析
这个错误通常是由于客户端SSH配置禁用了较旧的加密算法(如ssh-rsa),而服务器只支持该算法导致的。以下是几种解决方案:
- 方法1:临时启用ssh-rsa(推荐)
在scp命令中显式指定允许使用ssh-rsa:
bash
scp -o HostKeyAlgorithms=+ssh-rsa 55 root@192.168.1.8:/home/root/

- 方法2:永久修改SSH配置
编辑全局配置(需sudo权限):
bash
sudo nano /etc/ssh/ssh_config
在文件中添加:
Host 192.168.1.8
HostKeyAlgorithms +ssh-rsa
保存后重试scp
-
方法3:更新服务器SSH配置(需服务器权限)
如果控制服务器,可编辑/etc/ssh/sshd_config添加:PubkeyAcceptedKeyTypes +ssh-rsa
然后重启ssh服务:
bash
sudo systemctl restart sshd
原因说明:
OpenSSH从8.5版本开始默认禁用ssh-rsa算法(因存在潜在安全风险)。当服务器只支持该算法时会出现此错误。上述方案通过显式启用该算法解决兼容性问题。
建议优先使用方法1(临时指定),若需频繁连接再考虑方法2(永久配置)。如服务器可控,推荐升级服务器SSH配置支持更安全的算法(如rsa-sha2-256)。