要通过 SCP 使用 SOCKS5 代理,可以利用 SSH 的 ProxyCommand
选项,配合支持 SOCKS5 的工具(如 ncat
或 connect-proxy
)。以下是具体步骤:
方法一:使用 ncat
(来自 nmap 工具包)
-
安装 ncat:
- Debian/Ubuntu:
sudo apt install nmap
- macOS:
brew install nmap
- Debian/Ubuntu:
-
通过命令行直接使用:
scp -o "ProxyCommand=ncat --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p" 本地文件 用户@远程主机:/目标路径
-
持久化配置(推荐): 编辑
~/.ssh/config
,添加:Host 别名 HostName 远程主机地址 User 用户名 ProxyCommand ncat --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p
之后使用
scp 本地文件 别名:/目标路径
即可。
方法二:使用 connect-proxy
-
安装 connect-proxy:
- Debian/Ubuntu:
sudo apt install connect-proxy
- Debian/Ubuntu:
-
命令行使用:
scp -o "ProxyCommand=connect -S 127.0.0.1:1080 %h %p" 本地文件 用户@远程主机:/目标路径
方法三:通过 proxychains
工具
-
安装 proxychains:
- Debian/Ubuntu:
sudo apt install proxychains4
- macOS:
brew install proxychains-ng
- Debian/Ubuntu:
-
配置代理: 编辑
/etc/proxychains.conf
或~/.proxychains/proxychains.conf
,添加:socks5 127.0.0.1 1080
-
执行 SCP:
proxychains4 scp 本地文件 用户@远程主机:/目标路径
参数说明
127.0.0.1:1080
:替换为你的 SOCKS5 代理地址和端口。- 若代理需要认证,在
ncat
中使用--proxy-auth 用户名:密码
,或在connect
中使用-S user:pass@host:port
。
验证连接
执行前可先用 SSH 测试:
ssh -o "ProxyCommand=ncat --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p" 用户@远程主机
确保 SSH 能通过代理连接后,SCP 即可正常工作。
示例
# 使用 ncat 临时代理
scp -o "ProxyCommand=ncat --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p" ~/file.txt [email protected]:/home/user/
# 使用持久化配置
echo -e "Host example\n HostName example.com\n User user\n ProxyCommand ncat --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p" >> ~/.ssh/config
scp ~/file.txt example:/home/user/
通过以上方法,SCP 将经由 SOCKS5 代理传输文件。