来自这个问题:What's ssh port forwarding and what's the difference between ssh local and remote port forwarding,我对这种用法感到困惑:
ssh -L 123:farawayhost:456 remotehost
ssh -L sourcePort:forwardToHost:onPort connectToHost
意思是:使用 ssh 连接到connectToHost
,并将所有连接尝试转发到机器上的本地sourcePort
到端口onPort
,该机器forwardToHost
可以从connectToHost
机器访问。
"..., which can be reach from the connectToHost
machine."是什么意思?究竟是什么意思?
如果我理解正确,ssh -L 123:localhost:456 remotehost
是上述命令的特定情况,两者farawayhost
都remotehost
在同一台机器上。
那么何时farawayhost
和何时remotehost
不在同一台机器上,它是如何工作的呢?这是否意味着我需要先登录remotehost
然后再登录farawayhost
?
我不知道我为什么一开始感到困惑,也许是因为最初的答案不够清楚,但后来我突然想通了。
假设我有 2 台机器,其公共 ip 是
1.2.3.4
和2.3.4.5
.用法是:
ssh -L 10283:1.2.3.4:8000 [email protected] -N
,它将提示换行符,要求输入密码username
on2.3.4.5
。成功验证后,
ssh
不会登录,因为-N
已指定,但已建立连接。所以任何发送到本地端口的数据10283
都将首先2.3.4.5
通过ssh
(端口22
)发送到端口,然后2.3.4.5
将数据发送到1.2.3.4
端口8000.
现在让我创建一个 html 文件并
echo hello > index.html
在.1.2.3.4
python -m http.server
然后我
localhost:10283
在本地电脑上打字。本地电脑:
开
1.2.3.4
: