Php

使用 ssh(隧道)進行安全 http 傳輸?

  • October 2, 2011

我有兩台通過 http 進行通信的伺服器。我希望這次轉移是安全的。

如何做到這一點?我不想使用 https(那需要 ssl 證書,對吧?)

[ SERVER-I ] –> [ SSH-ENDPOINT] -<->–<->–<->- HTTP -<->–<->–<->- [ SSH-ENDPOINT ] < –[伺服器-II ]

這樣的事情^^可能嗎?

一切皆有可能!ssh -C -L 8080:server-II:80 SSH-ENPOINT將在 ssh_endpoints 之間建立隧道。然後,您可以使用http://localhost:8080請求您的伺服器連接到另一個伺服器。另一方面,您需要另一條隧道。

如果您使用 SSL 證書的問題是它們需要花錢,那麼自簽名證書是免費的,並且提供完全相同的加密。教程很容易找到。

如果您使用 curl,您可以使用該-k選項不要求您的伺服器的 SSL 密鑰由 CA 簽名。此選項的 wget 版本是--no-check-certificate.

Dom 的解決方案起作用,但是您需要保持登錄狀態或從目前 shell 中取消 ssh 程序,否則當您斷開連接時隧道將消失。

一種方法是nohup在 ssh 命令前面使用。

另一種是後台 ssh 程序,然後不承認它。您可以通過鍵入~^z(這是波浪號後跟 ctrl-z)來後台 ssh 連接,然後使用bg它在後台再次啟動它disown並將 ssh 隧道與 shell 分開。

我不確定轉義序列如何與鍊式 ssh 連接一起工作。我懷疑在使用 ssh 在兩台伺服器之間建立隧道之前,您需要輸入~~^z是否使用 ssh 連接到 server1。

如果隧道死了,您可能還想使用Autossh之類的東西來重新啟動隧道。即使程序仍然存在,防火牆和隨機網路中斷也很容易導致隧道中斷。

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