如何代理net-sftp?

How to proxy net-sftp?

我正在使用依赖于 net-ssh gem.

net-sftp

我正在尝试通过 SFTP 连接到远程日志服务,它需要 IP 白名单。我当前所有的服务器都有动态 IP。

我正在尝试在 Google 云中设置静态、安全的代理服务器。我不太了解所有代理类型之间的所有差异,但 net-ssh 似乎支持...

我研究过使用 Dante 设置 socks5 代理,但仅通过它中继 SFTP 连接似乎有点过分,更不用说我认为它以纯文本形式发送密码。

我将如何以最简单的方式通过某些服务器代理 net-sftp?

最简单的方法是设置一个可以到达目标服务器的跳转主机服务器,然后通过让跳转主机服务器代理您的连接来连接到目标服务器。

SSH 让一切变得简单:

ssh -J user@jump-host myuser@target-host

在您的 .ssh/config 中,您可以执行以下操作:

### First jump-host. Directly reachable
Host jump-host
  HostName jum-phost.example.org

### Host to jump to via jump-host.example.org
Host target-host
  HostName target-host.example.org
  ProxyJump  jump-host

这将允许您照常使用 net-ssh。如果您不想更改配置文件,则必须 use 'net/ssh/proxy/jump':

require 'net/ssh/proxy/jump'

proxy = Net::SSH::Proxy::Jump.new('user@proxy')
Net::SSH.start('host', 'user', :proxy => proxy) do |ssh|
  ...
end 

查看此 article 了解有关 Jump Hosts 的更多信息。