如何在macOS终端通过带用户名和密码的SOCKS5代理连接SFTP服务器
我之前也碰到过一模一样的需求,macOS自带的sftp工具本身没办法直接处理带用户名密码验证的SOCKS5代理,不过用几个免费开源的工具就能轻松搞定,下面给你两种实用的方案:
方案一:使用proxychains-ng(适合批量代理终端工具)
proxychains-ng是一个能让任意终端程序通过代理运行的工具,配置一次后就能方便地复用代理设置。
安装proxychains-ng
用Homebrew安装(如果没装Homebrew的话,直接去官网装就行,完全免费):brew install proxychains-ng配置代理信息
打开它的配置文件:Intel芯片的Mac路径是/usr/local/etc/proxychains.conf,M系列芯片的Mac是/opt/homebrew/etc/proxychains.conf,用文本编辑器编辑:# Intel Mac nano /usr/local/etc/proxychains.conf # M系列Mac nano /opt/homebrew/etc/proxychains.conf找到文件末尾的
[ProxyList]部分,删掉原来的内容,替换成你的SOCKS5代理信息(注意默认SOCKS5端口是1080,如果你的代理端口不同,记得修改):socks5 somesocks5proxy.somecompany.com 1080 proxyusername proxypassword保存退出(nano里按
Ctrl+O,回车确认,再按Ctrl+X)。通过代理连接SFTP
直接用proxychains4包裹sftp命令运行:proxychains4 sftp sftpusername@somesftpserver.mycompany.com之后输入SFTP服务器的密码
sftppassword就可以连接了。
方案二:使用connect工具(单次连接更灵活)
connect是一个轻量的代理连接工具,可以直接通过sftp的ProxyCommand参数指定,不需要提前配置文件。
安装connect
同样用Homebrew安装:brew install connect直接连接SFTP
运行下面的命令,把代理和SFTP的信息都填进去(注意替换代理端口,如果不是1080的话):sftp -o "ProxyCommand=connect -S somesocks5proxy.somecompany.com:1080 -U proxyusername -P proxypassword %h %p" sftpusername@somesftpserver.mycompany.com执行后输入SFTP的密码
sftppassword就能建立连接。
注意事项
- 如果你的SOCKS5代理使用的不是默认的1080端口,一定要把命令里的
1080替换成实际的端口号。 - 两种工具都是完全免费开源的,不用担心付费问题。
- 如果连接失败,可以先测试一下SOCKS5代理本身是否可用,比如用
curl测试:curl --socks5 proxyusername:proxypassword@somesocks5proxy.somecompany.com:1080 https://example.com
备注:内容来源于stack exchange,提问作者Johan

