我在美国有一台服务器(Linux box B)和我的家用电脑(Linux box A),我需要从网站 C 下载一个文件,
问题是,直接从A下载文件很慢,所以我需要在登录B时下载文件,然后sftp
从A获取文件。
有什么办法可以只通过一行命令下载文件并直接使用B作为代理吗?
sr_*_*sr_ 49
(奇怪的情况,像三角不等式这样的东西对互联网路由不成立吗?)
无论如何,尝试以下操作,在A 上,通过参数ssh
进入B-D
,
ssh -D 1080 address-of-B
Run Code Online (Sandbox Code Playgroud)
它充当 SOCKS5 代理127.0.0.1:1080
,可以被任何支持 SOCKS5 代理连接的东西使用。 显然,wget
可以通过使用环境变量来做到这一点
export SOCKS_SERVER=127.0.0.1:1080
wget http://server-C/whatever
Run Code Online (Sandbox Code Playgroud)
请注意,有时curl
更方便(即我不确定是否wget
可以通过 SOCKS5 进行主机名查找;但我想这不是您关心的问题之一);Firefox 也能够通过这样的 SOCKS5 代理完全工作。
编辑我刚刚注意到您正在寻找一种单行解决方案。嗯,怎么样
ssh address-of-B 'wget -O - http://server-C/whatever' >> whatever
Run Code Online (Sandbox Code Playgroud)
wget
即将 -fetched 输出重定向到stdout
,并将本地输出(从远程ssh
运行wget
)重定向到文件。
这似乎有效,wget
输出只是有点混乱(“保存到 - ”),您可以通过添加-q
到wget
调用中来摆脱它。
归档时间: |
|
查看次数: |
113951 次 |
最近记录: |