You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用-O选项的情况下覆盖scp默认传输协议,以及配置scp默认使用旧SCP协议

如何在不使用-O选项的情况下覆盖scp默认传输协议,以及配置scp默认使用旧SCP协议

嗨,我刚好研究过类似的问题,给你整理了清晰的解决步骤:

一、配置scp默认使用旧SCP协议(无需每次手动加-O)

OpenSSH 9.x版本后scp默认采用SFTP协议,要让它默认切回旧的SCP协议,有两种配置方式:

1. 全局配置(所有用户生效)

编辑系统级的SSH配置文件/etc/ssh/ssh_config,在文件中添加一行:

SCPProtocol scp

保存后,所有用户执行scp命令时都会默认使用旧SCP协议。

2. 用户级配置(仅当前用户生效)

编辑用户目录下的SSH配置文件~/.ssh/config,同样添加一行:

SCPProtocol scp

如果只想针对某台特定主机生效(比如仅连接旧版本SSH服务器时用旧协议),可以写成主机匹配块:

Host 你的目标主机名或IP地址
    SCPProtocol scp

这样只有连接这个指定主机时,scp才会自动用旧协议,其他场景依然保持默认的SFTP。

二、将PubkeyAcceptedAlgorithms配置到~/.ssh/config的方法

你提到的解决签名算法兼容的PubkeyAcceptedAlgorithms=+ssh-rsa参数,完全可以写到配置文件里自动生效:

1. 全局生效(所有主机连接)

在~/.ssh/config开头添加:

Host *
    PubkeyAcceptedAlgorithms +ssh-rsa

Host * 表示匹配所有主机

2. 仅针对特定主机生效

如果只需要给老旧SSH服务器配置,可以写成:

Host 老旧服务器的主机名或IP
    PubkeyAcceptedAlgorithms +ssh-rsa

这样每次连接这台服务器时,会自动启用ssh-rsa签名算法,不用每次在命令行加-o参数。

补充说明

要注意,你之前用的-o参数只是解决了签名算法不兼容的连接问题,并没有切换回旧SCP协议。如果需要同时解决这两个问题,可以把两个配置结合起来,比如针对某台老旧服务器:

Host 老旧SSH服务器
    SCPProtocol scp
    PubkeyAcceptedAlgorithms +ssh-rsa

这样连接这台服务器时,scp会自动用旧协议,同时也能兼容老的签名算法。

备注:内容来源于stack exchange,提问作者Thomas Freedman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 10:03:05