如何重定向到具有不同端口的反向隧道服务器?

如何重定向到具有不同端口的反向隧道服务器?

设置:
服务器 A(托管在专用网络中,需要 VPN 访问)
服务器 B(公共托管)
服务器 C(可以假设是我自己的 MacBook)

我使用 此命令autossh在服务器 A 上设置反向隧道
autossh -f -T -M 20002 -o "ServerAliveInterval 10" -o "ServerAliveCountMax 2" -N -R 19999:localhost:22 user@server_b

然后在我的服务器 B 上,
我可以运行ssh localhost -p 199999来连接我的服务器 A。
服务器 B 还启用了 ssh 端口,22并且2022/etc/ssh/sshd_config

问题陈述:
如何使用ssh user@server_b -p 2022命令服务器C重定向访问服务器 A隧道来自服务器 B

概览
macbook -- ssh (端口 2022)--> 服务器 B -- 重定向 ssh ---> 服务器 A

**必须能够执行 scp 任务

答案1

  1. 要自动使用反向隧道,建议使用autossh服务。
  2. 我建议遵循以下步骤:
  3. 更改您想要建立隧道的服务器之间的密钥。
    • 将您的服务器 A 公钥保存在服务器 B/home/user/.ssh/authorized_keys文件中。
    • 手动建立第一个连接ssh user@serverB并查看连接是否正常工作。
    • 对服务器 C 执行相同操作 - 将服务器 B 的公钥保存在服务器 C/home/user/.ssh/authorized_keys文件中。
    • 手动检查连接。
  4. 现在您必须重定向所需的端口autossh- 但首先让我们手动检查一下:
    • 使用以下方式从本地电脑连接到 A 服务器ssh user@serverA
    • 在服务器 A shell 上 -ssh使用以下端口将连接从服务器 A 转发到服务器 Bssh -R <portX>:localhost:22 user@serverB
    • 在你的服务器 B shell 上- 端口转发服务器A ssh隧道与ssh -R <portY>:localhost:<portX> user@serverC
    • 现在在您的本地电脑上打开另一个终端(不关闭现有终端)并尝试使用重定向隧道,该隧道ssh user@serverC -p <portY>将按照特定顺序通过服务器 C 和 B 连接到服务器 A。
  5. 现在,隧道似乎运行良好,我们可以通过创建服务来自动化该过程autossh(这是我正在使用的):
[Unit]
Description=Keeps a tunnel to 'VPS' open
After=network-online.target

[Service]
User=root
ExecStart=/usr/bin/autossh -M portZ -i /root/.ssh/id_ed25519 -o "ExitOnForwardFaliure=yes" -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -R portX:127.0.0.1:22 [email protected] 
Environment=AUTOSSH_GATETIME=0
Restart=always
RestartSec=3
StartLimitIntervalSec=0
StartLimitAction=reboot
StartLimitBurst=0
[Install]
WantedBy=multi-user.target

现在,如果您想scp从服务器 A 复制某些内容到您的计算机中,只需在本地 PC 终端上运行以下命令:

  • scp -P <portY> user@serverC:/path/path/filename localpcpath/path/.

注意:我的回答假设您已经创建ssh keys并且您的sshd_config文件配置良好。

相关内容