-1

我正在使用net-sftp它依赖于net-ssh宝石。

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

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

  • 袜子4
  • 袜子5
  • “跳转”代理

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

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

4

1 回答 1

1

最简单的方法是设置一个可以访问目标服务器的 Jump-host 服务器,然后通过让 Jump-host 服务器代理您的连接来连接到目标服务器。

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。如果您不想更改配置文件,则必须使用 '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 

有关 Jump Hosts 的更多信息,请参阅本文

于 2019-09-28T17:42:19.683 回答