Ssh

使用 SSH2 密鑰對伺服器上的使用者(組)進行身份驗證並加密埠 8078?

  • October 23, 2011

我想使用 SSH 密鑰在執行 Jenkins 的伺服器上加密和驗證埠 8078(我將根據需要傳遞我們的公鑰或私鑰),並防止 8078 被 SSH 以外的任何東西訪問。我現在只有幾個開發人員使用這台機器。

問題:A/我是否需要防火牆來完成此操作以阻止 8078 進行非 SSH 訪問?B/ 通過埠 22 的解密請求在重定向到埠 8078 時會被防火牆看到嗎?B/ 當 SSH 伺服器將埠 22 上的未加密請求重定向到埠 8078 時,防火牆會看到什麼 IP/埠?C/對於非 Web 伺服器應用程序的加密和身份驗證,這是一個很好的長期解決方案嗎?D/ VPN 解決方案會更好嗎?

A) 一旦 SSH 伺服器在伺服器上監聽 8078,其他應用程序都不能,包括 Jenkins。B) 我很困惑:SSH 不會重定向未加密的請求。C)我假設您想要執行以下操作:

  1. 將 Jenkins 配置為在未加密的埠 8078 上執行,但在 localhost IP 127.0.0.1 上執行。不需要防火牆,因為外部沒有人可以連接該 IP。僅當 Jenkins 無法配置為綁定到 127.0.0.1 時,才需要防火牆。
  2. 使用自定義外殼創建一個特殊使用者帳戶,該外殼充當 127.0.0.1:8078 的 telnet 客戶端。您可以使用非常簡單的 bash 腳本來完成。授權所有公鑰使用該帳戶。
  3. 像往常一樣使用特殊使用者在埠 22 上連接到 SSH。連接將打開特殊的 telnet shell。

腳本如下所示:

#! /bin/bash
telnet localhost 8078

保存在 /usr/local/bin/jenkins-ssh 和

chmod a+x /usr/local/bin/jenkins-ssh
useradd jenkins-ssh
passwd jenkins-ssh (or don't, use pubkey only)
chsh jenkins-ssh -s /usr/local/bin/jenkins-ssh

D) VPN 解決方案的優勢在於它可以用於不止一項服務。但是您必須將服務綁定到內部 IP,該內部 IP 只有在啟動 VPN 服務後才可用,從而使啟動順序複雜化。

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