使用 SSH 反向隧道进行 SSH 访问

使用 SSH 反向隧道进行 SSH 访问

我可以在网上找到很多关于设置反向 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>作为用户的令牌

相关内容