SSH 隧道让我很困惑。我想知道我是否可以在 Linux 中做到这一点。
我有3台机器..
A. My local machine at home.
B. Machine at work that I can SSH into (middle man).
C. My desktop at work that I can only SSH into from machine B.
Run Code Online (Sandbox Code Playgroud)
所以我可以从 A -> B 和 B -> C 进行 SSH,但不能从 A -> C 进行 SSH。
有没有办法设置从 A 到 B 的 SSH 隧道,所以当我运行其他 SSH 命令时,它们只能在我的本地机器 A 上工作?我基本上是在尝试将 git repo 从工作克隆到家(并且我无法在机器 B 上安装 git)。
此外,一旦设置.. 我将如何取消设置?
我可以访问 3 台机器,A、B 和 C。唯一可能的 (ssh) 连接是:
A -> B
B <-> C
Run Code Online (Sandbox Code Playgroud)
我需要从 A 到 C 获取文件,所以我可以将文件从 A scp 到 B,然后将它们从 B scp 到 C。但是,B 没有太多磁盘空间,所以这不是一个选项。有没有办法通过 B 从 A 到 C scp 文件?请注意,我在任何机器上都没有 root 访问权限,所以不要认为我可以设置任何持久隧道,但如果我错了,请纠正我!
我想使用 SSHFS 挂载远程文件系统 (A),但有时我有 IP 地址,不允许访问。所以我的计划是通过该网络中的另一台机器 (B) 访问它。我是否需要在 B 上安装 A,然后在本地计算机上安装 B(和 A)?有没有更好的方法来做到这一点?
更新
只是为了澄清程序:
首先,我做一个隧道
ssh -f user@machineB -L MYPORT:machineA:22 -N
Run Code Online (Sandbox Code Playgroud)
然后我挂载远程文件系统
sshfs -p MYPORT user@127.0.0.1:/myremotepath /mylocalpath
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?
完成后如何摧毁隧道?
是否有带有 GUI 的 Linux 或多平台软件允许您从 SSH 隧道后面的服务器浏览和下载文件(这是一个 winscp 示例)?
|client|----ssh----|gateway|-----ssh-----|target_host|
| |
+------------WinSCP alternative-----------+
Run Code Online (Sandbox Code Playgroud)
更新
为了澄清,涉及3个系统。一个本地 ( client) 和 2 个远程:
gateway可从互联网通过 ssh 访问。但它没有我想要的文件。target_host可以从gateway互联网访问,但不能直接从互联网访问我想以图形方式浏览target_host,和我有这么的WinSCP,使我能够建立一个SSH隧道来完成gateway,然后连接到target_host。
我正在尝试使用自动跳转盒为我们的用户设置 SSH 代理。用户登录并自动通过 SSH 连接到他的容器/虚拟机,效果非常好。遗憾的是,通过它建立隧道的 SFTP 却没有。我确信这与我的设置方式有关,因为它基本上只是管道术语返回而不是正确地进行隧道挖掘。
/etc/密码
redtest:x:1002:1002::/home/redtest:/usr/bin/redtest
Run Code Online (Sandbox Code Playgroud)
/usr/bin/redtest
#!/bin/bash
/usr/bin/ssh redtest -t -F ~/.ssh/config
Run Code Online (Sandbox Code Playgroud)
/home/redtest/.ssh/config
Host redtest
HostName redtest1
User root
IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
设置这样的事情的正确方法是什么,或者这是否可能?登录与容器是一对一的。感谢正确方向的推动!
我有三台机器:
localhosthost1. 但是,它位于运营商级 NAT 之后,因此我无法从 ssh 直接连接到它localhostrelayhost设置为帮助我连接localhost到host1我想SSH从每个localhost并host1到relayhost,然后有relayhost中继从我的ssh连接localhost到host1。
这样的回答表明,我可以创建一个通道relayhost使用ssh -L,如果我知道的URI或IP地址host1。但是,由于运营商级 NAT,我不知道。所以我可以想象一个像这样中继它的过程:
host1,ssh user@relayhostrelayhost 正在监视这个连接,当它看到它说“我要创建一个从我的端口 9999 到这个连接的隧道”localhost,ssh 9999:relayhost这是解决这个问题的正确方法吗?如何进行第 2 步?