如何在Windows上建立ssh伺服器
1. ssh簡介以及本例的應用情境
① ssh的簡介
SSH是一個用來替代TELNET、FTP以及R命令的工具包,主要是想解決口令在網上明文傳輸的問題。為了系統安全和使用者自身的權益,推廣SSH是必要的。 SSH是英文Secure Shell的簡寫形式。通過使用SSH,你可以把所有傳輸的資料進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。
② 本例的應用情境
使用者在client(Linux)上通過ssh遠程執行server(Windows)上的命令,比如c:\test.bat
註:Linux版內建ssh Server且預設啟動,具體設定方法請參見google。
2. ssh伺服器的安裝(Windows)
ssh伺服器軟體有許多中,我們這裡使用的是免費的freeSSHd。
① 首先從官方網站下載軟體並安裝(http://www.freesshd.com/)
② 安裝完成後進入配置介面(Server Status),確認SSH server執行狀態
③ 進入Users介面,設定一個訪問的使用者賬戶(比如wust)
這裡我們建立一個叫wust的使用者,認證有3種方式可以選擇。從以後通過ssh運行命令的方便(無需輸入密碼)考慮,我們選擇Public key認證方式。選擇Password方式的話,每次訪問需要輸入密碼,此種方式較為繁瑣而且安全性不高。然後開放其Shell許可權。
④ 進入認證介面,確認Public key認證方式屬於啟用狀態(選擇Allowed或Required)
此時ssh伺服器端的基本設定已經OK,可進一步進行更加詳細的設定(比如訪問限定等),此處不再介紹。
注意:伺服器端如果有防護牆時應該開發TCP 22號連接埠最為ssh串連使用。
3. ssh用戶端的設定(Linux)
由於我們的用戶端採用的是Linux,所以不用安裝用戶端軟體,系統內建的就有。
我們需要在Linux上建立一個共有和私人的金鑰組,私人密鑰放到用戶端(Linux)上,共有密鑰放到伺服器端(Windows)上。在Linux上通過ssh-keygen命令來建立。
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): [直接斷行符號]
Enter passphrase (empty for no passphrase): [直接斷行符號]
Enter same passphrase again: [直接斷行符號]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53
其中,/root/.ssh/id_rsa為私人密鑰,/root/.ssh/id_rsa.pub為共有的密鑰。
此時,需要把共有密鑰放到伺服器端(Windows)進行儲存,以便於伺服器端進行安全檢查。
我們通過認證介面找到存放共有密鑰的地址(Public key folder)。
如所示,然後在c:\Program Files\freeSSHd目錄下建立以登入使用者名稱為名字的文字檔,此處舉例為wust檔案。並將/root/.ssh/id_rsa.pub檔案中的內容拷貝到c:\Program Files\freeSSHd\wust檔案中。
至此,用戶端和伺服器端的密鑰設定已經完成,可以通過如下命令進行遠端命令執行。
ssh wust@122.205.xx.xxx "c:\test.bat"
這條命令將執行伺服器端的C盤下的test.bat檔案,並把結果返回,整個操作不需輸入密碼。
4. ssh用戶端的設定(Windows)
由於Windows不附帶ssh的用戶端和伺服器端,我們這裡找一個免費的用戶端軟體PuTTY。
PuttY首頁:http://www.chiark.greenend.org.uk/~sgtatham/putty/
各種用戶端的比較:http://en.wikipedia.org/wiki/Comparison_of_SSH_clients
在Putty首頁,我們下載putty.zip(含除了PuTTYtel以外的所有檔案),然後解壓會發現一個叫plink.exe的檔案,這就是我們的ssh用戶端命令列軟體。
我們首先要成一個共有和私人的金鑰組,使用putty.zip中附帶的PUTTYGEN.exe產生。
啟動PUTTYGEN.exe後可以見到介面,點擊[Generate]即可產生所需金鑰組。
注意:由於是採用隨機演算法產生,需要不停地在對話方塊上移動滑鼠進度條才會增加,否則將保持不變。
密鑰產生完畢後,可以把私人密鑰進行儲存,為了登入簡單起見不對私密金鑰進行加密,提示沒有passphrase選擇忽略即可。假設我們這裡把私密金鑰儲存為pri_key.ppk。
我們把公開金鑰放在freeSSHd端(ssh伺服器端)進行儲存,具體儲存方法參見【ssh用戶端的設定(Linux)】。
在Windows用戶端,執行如下命令進行ssh串連,並不需要輸入密碼即可通過密鑰進行自動認證。
plink -i pri_key.ppk wust@122.205.xxx.xx
註:第一次串連時將出現“The server's host key is not cached in the registry… ”提示,我們選擇確定就可以了,以後就不會再出現了。
完。