boxmoe_header_banner_img

欢迎来到YaeMiko小站

加载中

文章导读

关于OPENSSH_8.8以上版本SFTP远程连接服务器遇到的深坑


avatar
Samele 2023-08-28 60

因为最近公司开始使用国产信创系统。我也有机会简单使用了一下。

发现居然使用的是Linux内核。正巧单位有相关产品需要登录SFTP服务器下载软件。原来WINDOWS版本不能用了。

基于之前研究LINUX的学习经验。想编写一个sftp脚本到服务器上拉取回单。

脚本的内容就不多提了。网上大把都有。问题的关键在于登录sftp服务器遇到的证书报错问题。

OPENSSH_8.8以前的版本,默认支持ssh-rsa证书。

可以通过命令:sftp -o Port=[port] -i [id_rsa] [username]@[hostname]

进行远程连接服务器。

然而OPENSSH_8.8以后的版本,由于安全原因官方取消了ssh-rsa证书的支持。

如果继续使用上述命令进行连接,会报错:

Permission denied (keyboard-interactive,publickey)

网上搜到的各种原因都有。多半是集中在服务器端修改/etc/ssh/sshd_config文件,使其向下兼容加密证书。

但我的是客户端版本高,需要向下兼容服务器内容。

所以在sftp(ssh通用)命令中需要加上以下两行:

HostkeyAlgorithms=+ssh-rsa
PubkeyAcceptedAlgorithms=+ssh-rsa

 

使其支持ssh-rsa证书

所以最终命令为:

sftp   -o   Port=[port]   -i   [id_rsa]   -o   HostkeyAlgorithms=+ssh-rsa   -o   PubkeyAcceptedAlgorithms=+ssh-rsa   [username]@[hostname]

部分博主提到HostkeyAlgorithms=+ssh-rsa选项。但是如果没有PubkeyAcceptedAlgorithms=+ssh-rsa项目。客户端无法接受来自服务端的低版本证书

依然会报错:Permission denied (keyboard-interactive,publickey)

报错内容很难让人联想到OPENSSH的版本问题,让我挠头两周才得以解决。故留此以备后查



评论(已关闭)

评论已关闭