来自这个问题:什么是ssh端口转发以及ssh本地和远程端口转发有什么区别,我对这种用法感到困惑:
ssh -L 123:farawayhost:456 remotehost
ssh -L sourcePort:forwardToHost:onPort connectToHost
表示:使用 ssh 连接到connectToHost
,并将所有连接尝试转发到当地的sourcePort
onPort
到名为 的计算机上的端口forwardToHost
,可以从该connectToHost
计算机访问该端口。
"..., which 是什么意思?可以到达从connectToHost
机器上。”到底是什么意思?
如果我理解正确的话,ssh -L 123:localhost:456 remotehost
这是上述命令的一个特定情况,其中farawayhost
和remotehost
都在同一台机器上。
那么当farawayhost
和remotehost
不在同一台机器上时,它是如何工作的呢?这是否意味着我需要先登录remotehost
然后再登录farawayhost
?
答案1
我不知道为什么一开始我很困惑,也许是因为原来的答案不够清楚,但后来我突然想通了。
假设我有2台机器,其公网IP分别是1.2.3.4
和2.3.4.5
。
用法是:,它将提示换行符,需要密码on 。ssh -L 10283:1.2.3.4:8000 [email protected] -N
username
2.3.4.5
成功通过身份验证后,ssh
不会让您登录,因为-N
已指定,但连接已建立。所以任何数据发送到当地的port10283
将首先发送到2.3.4.5
via ssh
(port 22
),然后2.3.4.5
将数据发送到1.2.3.4
on port8000.
现在让我创建一个 html 文件并使用echo hello > index.html
运行 http 服务器。1.2.3.4
python -m http.server
然后我localhost:10283
在本地电脑上打字。
本地电脑:
在1.2.3.4
: