我可以在网上找到很多关于设置反向 SSH 隧道的教程。
ssh -p2000 -fNC -R 10011:localhost:[email protected]
但是我如何在本地服务器上建立 SSH 连接?我喜欢通过 SSH 反向隧道建立从代理(具有公共 IP)到本地主机(位于我的家庭网络中)的连接。我需要从本地主机上的任何地方输入 SSH 命令。
谢谢你的帮助 Stefan
答案1
在不了解 SSH 反向代理的情况下,您是否尝试从其他机器/“代理服务器”(?)连接到本地/“私有”主机名“localhost”,该主机名映射到本地/“私有”“环回”地址,当环回地址“解析”/等同于本地机器时,该地址解析为(IPv4)“127.0.0.1'(或 127.xxx 甚至)或(IPv6)'::1',并且仅当您的(*NIX - UNIX/Linux)“/etc/hosts”或(Windows)“C:\Windows\System32\drivers\etc\hosts”文件中有一个“localhost”条目时才可能。
如果是这样,您可能需要定位映射到适当的“私有”IP 地址(即分配给 NIC/网卡的地址)的正确“主机名” - 如果它们都在同一个网络上,否则可能是“公共”IP 地址 - 除非 NAT(网络地址转换 - 私有 IP 到公共 IP 的转换/替换(传出)和反之亦然(传入))可以为您处理这个问题。
答案2
总而言之,你有一个主机A(proxy.net)具有公共 IP 和主机乙没有公共 IP。您需要进入乙从A。
这可以通过转发A到B上的sshd监听端口。
为了实现这一点,首先如果它尚未运行,请启动sshd或者输入
sshd
进入 shell,或者如果你有 systemd
systemctl start sshd
之后,设置来自乙到A像这样:
ssh -N -R 8890:localhost:22 <a_user>@proxy.net
港口8890可以与任何空闲端口进行交换A。 港口22是 ssh 守护进程的端口sshd正在收听乙. 很有可能是22,但可能是不同的端口。您可以通过运行
sudo netstat -lntp
应该有一行sshd在里面程序名称列。在该行中,本地地址列应显示类似 的内容127.0.0.1:22
。后面的数字:
是您的 ssh 守护程序正在监听的端口。
设置远程 ssh 隧道后,您可以通过 ssh 进入乙从A通过运行
ssh -p 8890 <b_user>@localhost
在这篇文章中我使用了<a_user>
为用户使用了A和<b_user>
作为用户的令牌乙。