用于 sftp 或 GUI 的 ssh 隧道

Posted

技术标签:

【中文标题】用于 sftp 或 GUI 的 ssh 隧道【英文标题】:ssh tunneling for sftp or GUI 【发布时间】:2011-06-30 23:21:39 【问题描述】:

我正在尝试通过 ssh 隧道使用 sftp

我有一个homePC,它可以使用gatewayPC 作为跳转主机来登录远程服务器

我使用 ssh 隧道命令

$ssh -t userid@gateway ssh remoteserver

来自homePC,效果很好

但是,一旦我登录到另一台机器,我想打开一个 nautilus 或任何其他文件管理器

一种选择是能够通过此隧道进行 sftp 或 ftp

是否有基于 GUI 的工具(如用于 windows 的 putty)来实现这一点?

感谢任何帮助

问候, 希瓦尼

【问题讨论】:

您可以使用 FileZilla 来执行此操作,请查看:superuser.com/a/1286681/141314 【参考方案1】:

为此,您可以使用 ssh 隧道,您必须在路径中创建一个文件:

atiruz@pc:~$ nano ~/.ssh/config

并添加此文本(根据您的服务器调整):

Host gatewayPC
    HostName 100.110.120.130

Host localPC
    ProxyCommand ssh -A -t root@gatewayPC -p 222 nc 192.168.1.5 22

Host otherPC
    ProxyCommand ssh -A -t localPC nc 10.10.0.55 22

通过这个例子,你可以直接从网关PC到本地PC,只需在终端中运行:

atiruz@pc:~$ ssh root@localPC

该方案应如this site 中所述。 (我做了一个小改动,因为在这个网站的例子中,我的 Ubuntu 12.04 上不工作)。

你也可以在Nautilus中使用,使用路径如下:

在终端中:atiruz@pc:~$ nautilus sftp://root@localPC

或者直接在Nautilus:sftp://root@localPC

【讨论】:

【参考方案2】:

我不确定执行此类操作的“正确”方法是什么,但我曾经做过类似的事情,方法是创建从 homePC 到 gatewayPC,然后从 gatewayPC 到 remoteserver 的端口转发。然后我可以将我的本地 SFTP 客户端连接到端口转发管道的本地端。不过,这会让你的加密加倍。

【讨论】:

【参考方案3】:

我建议使用“ssh -fND 6789 gatewayPC”,然后使用配置 tsocks,这样您就可以执行“tsocks sshfs remoteserver: /mnt/remoteserver”。第一个命令设置一个 SOCK5 代理,将所有 TCP 请求通过隧道传送到gatewayPC。tsocks 命令包装了使用 SOCKS5 代理的命令的网络调用。sshfs 让您使用 sftp 挂载远程文件系统。

【讨论】:

【参考方案4】:

你的问题不清楚,所以这里有两个答案:

如果您只想能够在远程主机上运行基于 X 的文件管理器应用程序,只需确保 -X 在每个 ssh 中都有效:

homepc% ssh -X me@gatewaypc
  ...Authenticate...
gatewaypc% ssh -X me@otherpc
  ...Authenticate...
otherpc% some-x-application
  ...X application displays on homepc...

如果您希望使用scp 直接复制文件,

homepc% ssh -L2222:otherpc:22 me@gatewaypc
  ...Authenticate...
gatewaypc%  (Don't do anything here)

然后你可以在转发端口上做scp

homepc% scp -P 2222 me@localhost:~/path/to/file /where/it/goes

【讨论】:

我认为他想在本地计算机上使用文件管理器,但能够在两台计算机之间复制文件。如果它在远程计算机上运行,​​则无法在两者之间进行复制。

以上是关于用于 sftp 或 GUI 的 ssh 隧道的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java 通过 SSH 隧道传输文件

使用 Paramiko 设置 SSH 隧道以访问 PostgreSQL

PostgreSQL 通过 SSH 隧道

用于设置临时 SSH 隧道的 Bash 脚本

SSH 隧道:第一跳用户名/密码,第二跳使用 SSH 密钥

pgAdmin3 通过 ssh 隧道备份