為多個使用者將 SSH 轉發到 Telnet 的 Windows Server 埠
我使用專門的數據庫框架(Intersystems Caché)進行了多次安裝,該框架包含在埠 23 上執行的自己的 Telnet 伺服器。雖然該產品確實在 Windows Server 2008、AIX 和 Linux(特別是 RedHat Enterprise Linux)上執行,但我支持的安裝僅使用 Windows Server 2008 作業系統。這是該產品目前唯一支持的命令行系統;不支持 SSH 或任何其他形式的加密介面。Telnet 介面 - 取決於設施的大小 - 一次最多可以為數百個使用者/會話提供服務。我對這種未加密的通信感到不舒服,我想在伺服器上設置一個外部(框架)系統以允許加密。
我想做的是限制 Caché 的 telnet 埠僅在 localhost (127.0.0.1) 上偵聽埠 23,並在伺服器本身上設置一個 SSH 伺服器守護程序,以在埠 22 上回答來自整個網路的所有請求並轉發這些請求向 localhost 上的埠 23 請求,從而允許產品的加密命令行通信,即使它不直接支持它。
幾天來,我一直在通過標準的 Google 搜尋(而且我很擅長說 Google)以及在 serverfault/stackoverflow 上對此進行研究,但沒有成功。我發現的所有範例 1) 為許多使用者/會話進行直接埠轉發而不加密,或者 2) 僅描述如何為單個使用者/會話進行 SSH 埠轉發/隧道。
根據上面的 #2,嘗試設置數百個單獨的轉發 SSH 隧道將是一場管理噩夢;我需要一個在單個埠上處理多個會話和使用者的伺服器端解決方案。對於我所做的研究,在 Windows 伺服器上設置 OpenSSH 伺服器守護程序似乎是最好的選擇(我嘗試過 - 不成功 - 配置 sshd_config 以支持這種情況)但如果有更好的選擇,我願意所有建議。
我也考慮過設置一個小型 Linux 虛擬機來進行翻譯,但是這些設施沒有任何人精通 Linux 管理,我們仍然有幾個設施在物理(非虛擬)環境中執行產品,因此輔助 Linux虛擬解決方案不會使這些站點受益。
** 我忘了提及:由於基於 Caché 的應用程序在 Windows 伺服器本身之外有自己的安全系統,因此該應用程序的許多個人使用者沒有基於 Windows 的伺服器登錄憑據。SSH 隧道不應該嘗試在伺服器本身上啟動 shell,它應該只動態加密/解密並創建到 Telnet 埠的隧道。我希望我已經解釋得足夠好;如果沒有,請告訴我,我會嘗試更清楚地解釋它。
任何幫助都將不勝感激。謝謝你的時間!
由於您似乎主要專注於進行加密的 telnet 會話,因此我對替代方案的建議是使用stunnel之類的工具。Stunnel 是一個 TLS 代理,它允許您在簡單的 tcp 協議(如 telnet)之上添加 TLS/SSL。您可以獲得證書提供的加密和身份驗證的所有好處。
stunnel 的挑戰在於支持 TLS 的 telnet 客戶端並不多。解決這個問題的一種方法是在客戶端機器上安裝 stunnel。Stunnel 可以在任一方向工作。它可以添加或剝離 TLS。因此,您的客戶可以使用他們的 telnet 客戶端連接到他們的本地 stunnel 實例。他們的本地 stunnel 實例將建立一個到您的伺服器的 TLS 隧道,這將與數據庫伺服器建立連接。