① ssh的簡介算法
SSH是一個用來替代TELNET、FTP以及R命令的工具包,主要是想解決口令在網上明文傳輸的問題。爲了系統安全和用戶自身的權益,推廣SSH是必要的。 SSH是英文Secure Shell的簡寫形式。經過使用SSH,你能夠把全部傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,並且也可以防止DNS欺騙和IP欺騙。安全
② 本例的應用場景服務器
用戶在client(Linux)上經過ssh遠程執行server(Windows)上的命令,好比c:\test.batssh
注:Linux版自帶ssh Server且默認啓動,具體設置方法請參見google。ide
ssh服務器軟件有許多中,咱們這裏使用的是免費的freeSSHd。工具
① 首先從官方站點下載軟件並安裝(http://www.freesshd.com/)ui
② 安裝完成後進入配置界面(Server Status),確認SSH server正在運行狀態google
③ 進入Users界面,設定一個訪問的用戶帳戶(好比xut)加密
這裏咱們創建一個叫xut的用戶,認證有3種方式能夠選擇。從之後經過ssh運行命令的方便(無需輸入密碼)考慮,咱們選擇Public key認證方式。選擇Password方式的話,每次訪問須要輸入密碼,此種方式較爲繁瑣並且安全性不高。而後開放其Shell權限。spa
④ 進入認證界面,確認Public key認證方式屬於激活狀態(選擇Allowed或Required)
此時ssh服務器端的基本設置已經OK,可進一步進行更加詳細的設置(好比訪問限定等),此處再也不介紹。
注意:服務器端若是有防禦牆時應該開發TCP 22號端口最爲ssh鏈接使用。
因爲咱們的客戶端採用的是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目錄下建立以登陸用戶名爲名字的文本文件,此處舉例爲xut文件。並將/root/.ssh/id_rsa.pub文件中的內容拷貝到c:\Program Files\freeSSHd\xut文件中。
至此,客戶端和服務器端的密鑰設置已經完成,能夠經過以下命令進行遠程的命令執行。
ssh xut@172.28.xx.xxx "c:\test.bat"
這條命令將執行服務器端的C盤下的test.bat文件,並把結果返回,整個操做不需輸入密碼。
因爲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 xut@172.28.xx.xxx c:\test.bat
(此時將執行服務器端的c:\test.bat腳本。)
注:第一次鏈接時將出現「The server's host key is not cached in the registry… 」提示,咱們選擇肯定就能夠了,之後就不會再出現了。