![如何通过不允许 TCP 隧道的中间服务器通过 ssh OVER 传输 scp 文件?](https://linux22.com/image/618032/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E4%B8%8D%E5%85%81%E8%AE%B8%20TCP%20%E9%9A%A7%E9%81%93%E7%9A%84%E4%B8%AD%E9%97%B4%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%80%9A%E8%BF%87%20ssh%20OVER%20%E4%BC%A0%E8%BE%93%20scp%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在 SSH 连接到我的大学网络,然后我可以从那里 SSH 连接到我的服务器。我如何将文件从本地计算机传输到我的服务器?我尝试了隧道,但似乎不允许,我得到:
Note that it is not permitted to run SSH tunnels through this or any other computer on campus
答案1
然后,您可以尝试端口转发,这样登录到您的 uni 网络后,连接到您的本地 home_IP:home_TCP_port 将被转发到 your_server_IP:22
例如,在家里主持:
ssh -L 127.0.0.1:10022:your_server_IP_inside_uni_net:22 uni-network-host
scp -P 10022 foo_file 127.0.0.1:
答案2
您需要适当地设置您的 .ssh/config 文件,它才会按您预期的方式工作。
Host webserver
ProxyCommand ssh -q [email protected] nc -q 0 %h %p
man ssh_config 将为您提供所有必要的选项。将“webserver”替换为最终目的地的主机名。将intermediatehost.edu 替换为您途中第一跳的主机名。然后,您将能够直接通过 ssh(和 scp)连接到“webserver”。
答案3
获取所需内容的方法是通过文本模式控制台执行文件传输。
换句话说,你需要一些 20 世纪 80 年代的东西:ZModem
。
如果您有一个支持 ZModem 传输的 SSH 客户端,并且它们存在(只是不是库存的 OpenSSH),您可以通过命令传输文件sz
。
这是因为旧的调制解调器协议是基于字符的,需要通过嘈杂的连接可靠地传输二进制数据,而这些连接可能允许也可能不允许 8 位字符。如果您的服务器有此功能,或者可以选择安装此功能,那么您就可以进行文件传输。