Linux

使用 NGINX 的反向代理 SSH。(執行 SSH 的 Docker 容器的子域)

  • October 13, 2021

TDLR : xase:22yase:22應該分別接受並引導到機器 x 和機器 y。NGINX只是通過反向代理來協調流量。

嗨,很棒的社區,來自瑞典的 Oscar。

目前設置

我有一台接受a.se的主機,我們稱主機為A。因此ssh root@a.se導致機器 A上埠 22的SSH服務。機器 A執行docker 容器s:機器 B和其他一些機器,讓我們一次只關註一個容器。

所需用途

我希望發生這種情況:

  1. 操作機器 B的使用者Bob無權訪問機器 A,因為該使用者不受信任。
  2. 使用者Bob使用 SSH連接到base:22並在****機器 B上獲得一個 shell 。

問題

我不知道如何配置這個。我想我正在尋找 SSH 的反向代理。我所有的其他端點都使用 NGINX 進行反向代理,因為這是我最擅長的,所以我正在研究ngx_stream_proxy_module,它基本上可以反向代理任何 TCP 連接。問題是我無法理解 NGINX 流代理應該如何區分a.seb.a.se讓我們說任何字元串n.a.se在哪裡。n

如果您對我的設置或問題本身有任何疑問,請添加評論,我將對此問題進行編輯。在此先感謝,非常感謝任何幫助和見解。

注意:主機執行 Debian 11,我擁有完全訪問權限。我更喜歡 Docker 作為容器管理器和 NGINX 來路由網路流量。

注意:我已經添加了一些最基本的資源的連結,這不是為了取笑潛在的幫助者,這對幫助將來閱讀此主題的其他人提出與我現在相同的問題太有幫助了。

可以使用主機 A 作為跳轉主機連接到容器。但是,這需要主機 A 上的使用者帳戶來實現此目的。

可以限制跳轉主機帳戶,使伺服器本身無法訪問。

限制可以在主機 A 中完成sshd_config

Match user bob
   X11Forwarding no
   AllowTcpForwarding
   ForceCommand ssh bob@<container>

設置完成後,您可以:

  1. ssh bob@example.com
  2. 給主機系統密碼
  3. SSH 守護程序將強制對容器執行 SSH 命令
  4. 給容器密碼

還可以在bob帳戶中的主機上創建一個密鑰對,用於對容器進行身份驗證。然後不需要第二個密碼。

引用自:https://serverfault.com/questions/1080325