2013-01-07 187 views
0

我已經通過一些關於通過例如putty設置SSH隧道的基礎知識。 一個問題:如何讓這兩個SSH端根據證書相互認證? 例如,使用遠程訪問VNC SSH隧道...ssh隧道驗證:如何?

VNC == SSH (A) ===== SSH (B) === VNC 

欲甲乙相互驗證。有爭議的是,VNC可以有自己的密碼來保護。但這不是重點。我可以在A和B上運行許多應用程序,這些應用程序不一定具有usr/pwd保護。

我檢查了膩子配置,似乎沒有使用證書的選項。有人建議stunnel,但我想看看是否可以直接使用SSH進行操作。感謝您的建議。

回答

1

您需要使用證書而不僅僅是ssh密鑰的任何特定原因?我知道的唯一原因是,主機管理員無法管理擁有大量登錄用戶的主機上的authorized_keys文件的複雜配置。

OpenSSH在5.4版本中引入了證書,因此請確保您至少在服務器端運行該版本。客戶端也必須支持SSH證書,目前還不清楚膩子是否支持它。但是,它確實支持ssh密鑰,除非您特別需要證書,否則應該只需基於密鑰的身份驗證。

這裏是SSH證書很好看的:http://blog.habets.pp.se/2011/07/OpenSSH-certificates

如果你只是需要的方式登錄,而不提示輸入密碼,那麼就使用SSH密鑰(這是無論如何證書使用的)。

你這樣說:

我想A和B相互進行身份驗證。

無論您使用密鑰還是證書,您都已經獲得了ssh協議本身。當客戶端連接到服務器時,它將主機密鑰與其本地文件known_hosts進行比較。如果這是您第一次訪問該服務器,它會問您是否要接受該服務器。如果服務器的密鑰在您登錄後發生了變化,那麼您會收到中間人警告,並根據您的客戶端配置,詢問您是繼續還是繼續執行還是沒有問題。

這是服務器向客戶端驗證自身的過程,發生在客戶端嘗試向服務器進行驗證之前發生。

+0

非常感謝。對於服務器認證,證書比主機密鑰「更強」(並且可以說更方便)。對於客戶端身份驗證,證書提供了「少耦合」機制:您不需要設置用戶帳戶或將公鑰文件複製到服務器上,這適用於更多對等類型的場景(根據我的需要工作)。在此之前,我使用SSL認證流程加上我自己的tcp-tunneling代碼。用SSH,我想看看後面的部分是否可以避免。任何想法? – user180574

+0

就像我說的那樣,管理員更容易,特別是在大型設置上。我會爭辯說,這不是一個更強大的方法,但那不是在這裏也不在那裏。至於你想要做什麼,A和B都相互認證。問題的第二部分是什麼? –

+0

我想我現在可以從你的幫助中更好地理解SSH。再次感謝。 – user180574