有没有办法使用 SCP 绕过代理?

Cha*_*ana 1 scp

如何SCP绕过代理将文件从本地计算机复制到远程服务器?

当我使用scp -r <my_folder> <remote_user>@<remote_machine>:/home/test它时会出现以下错误消息:

ssh: connect to host <host_ip> port 22: Connection timed out
lost connection
Run Code Online (Sandbox Code Playgroud)

我对这个主题很陌生 - 感谢任何帮助。

Amb*_*jak 6

如果有防火墙阻止您,那么您必须通过代理,而不是试图绕过它。您没有指定有哪种代理(SOCKS/HTTP?)。

如果代理是 SOCKS,您只需要一些程序来“socksify”您的 scp 命令,例如:

  • tsocks,允许您通过挂钩系统调用来对特定程序进行袜子化;http://tsocks.sourceforge.net/
  • 我开发的tun2socks模拟了 tun 网络接口后面的虚拟路由器。设置起来有点困难,但它确实让一切都通过 SOCKS 代理。以下指南解释了如何将 tun2socks 与 SSH -D 选项提供的 SOCKS 代理一起使用,但您应该忽略它关于 SSH 的所有内容,只指定您的 SOCKS 代理。http://code.google.com/p/badvpn/wiki/tun2socks

另一方面,如果代理服务器只是 HTTP,则情况要困难得多。如果幸运的话,您的 HTTP 代理支持 CONNECT 命令,您可以使用它连接到 SSH 服务器。如果代理将 CONNECT 命令限制为特定端口号,则您必须将 SSH 服务器正在侦听的端口号更改为 HTTP 代理允许的端口号。

您可以使用的一种软件是ProxyTunnelhttp : //proxytunnel.sourceforge.net/intro.php

但是,如果您必须但不能更改 SSH 服务器的侦听端口(或者想要连接到任何东西而不仅仅是您的 SSH 服务器)怎么办?在这种情况下,唯一的解决方案是通过您可以完全控制的中间服务器。因此,然后使用 SSH(通过 ProxyTunnel)连接到该中间服务器。然后你可以:

  • 或者使用 SSH 的动态转发 (-D) 选项(它在客户端上打开本地 SOCKS 服务器),并使用 tsocks 或 tun2socks 通过此 SOCKS 接口获取您的 scp,如上所述,或者,
  • 在您的计算机和您设法连接的中间服务器之间设置一个真正的 IP VPN(请参阅 ssh -w 选项)