我正在尝试通过 ssh 隧道使用 sftp
我有一个
homePC
,它可以使用一个gatewayPC
作为跳转主机来登录远程服务器
我使用 ssh 隧道命令
$ssh -t userid@gateway ssh remoteserver
来自
homePC
,效果很好
但是,我想在登录另一台机器后打开 nautilus 或任何其他文件管理器
一个选项是能够通过此隧道进行 sftp 或 ftp
是否有基于 GUI 的工具,例如 putty for windows 来实现这一点?
感谢任何帮助
问候, 希瓦尼
为此,您可以使用 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
通过这个例子,你可以直接从gatewayPC到localPC,只需在终端运行:
atiruz@pc:~$ ssh root@localPC
方案应如本网站所述。 (我做了一个小改动,因为这个网站的例子在我的 Ubuntu 12.04 上不工作)。
也可以在
Nautilus
中使用,使用路径如下:
在终端中:
atiruz@pc:~$ nautilus sftp://root@localPC
或直接在
Nautilus
:sftp://root@localPC
我不确定做这样的事情的“正确”方法是什么,但我通过创建从 homePC 到 gatewayPC,然后从 gatewayPC 到 remoteserver 的端口转发,做了类似的事情。然后我可以将本地 SFTP 客户端连接到端口转发管道的本地端。不过,这会让你加倍加密。
我建议使用“ssh -fND 6789 gatewayPC”,然后使用 configure tsocks,这样你就可以执行“tsocks sshfs remoteserver: /mnt/remoteserver”。第一个命令设置一个 SOCK5 代理,将所有 TCP 请求隧道传送到 gatewayPC。 tsocks 命令包装了使用 SOCKS5 代理的命令的网络调用。sshfs 让您使用 sftp 挂载远程文件系统。
你的问题不清楚,所以这里有两个答案:
如果您只想在远程主机上运行基于 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
Host gateway
HostName gateway.example.com
User me
IdentityFile ~/.ssh/id_rsa
Host serv1
HostName server1ShortName
CheckHostIP no
HostKeyAlias server1ShortName
User myname
IdentityFile ~/.ssh/id_rsa
#ProxyJump gateway # This is equivalent, but Transmit only recognizes `ProxyCommand`
ProxyCommand ssh -W %h:%p gateway