OpenSSH for windows安裝與設置
OpenSSH在windows下的安裝與設置與在Linux下有所不一樣,本文重點對這些差別作一點說明。首先,咱們簡單的介紹一下整個安裝過程。
OpenSSH的安裝很是簡單,首先在這裏(http://sshwindows.sourceforge.net/)下載它的安裝包,按照提示操做便可。
OpenSSH的安裝能夠分爲客戶端和服務器端兩部分,你能夠在安裝嚮導中選擇只安裝某一部分。在所有安裝的狀況下,安裝嚮導完成後,客戶端就已經可用了。
不過爲了使用密鑰進行服務器登陸,安裝完成後的第一件事就是生成本身的密鑰對。打開一個命令行窗口,若是你準備生成運行SSH1的服務器的密匙,輸入如下命令:
ssh-keygen -t keytype
若是服務器運行的是SSH2,則生成密鑰時須要加-d選項。命令以下:
ssh-keygen -d -t keytype
這裏keytype能夠是dsa, rsa,或rsa1,按照提示選擇密鑰存放的地點和文件名,密鑰對默認爲存儲在windows我的設置目錄下的.ssh目錄下。在建立密鑰的過程當中,會詢問密鑰保護密碼,若是你不須要密碼,能夠直接輸入回車鍵跳過。但這樣任何取得你私鑰的人均可以利用它以你的身份在服務器上登陸。
爲了使用生成的密鑰進行登陸,接下來須要作的事就是把你的公鑰上傳到須要登陸的服務器。不管你用哪一種方法生成的密鑰,都會生成一對文件,其中公鑰以.pub結尾。將.ssh目錄中的公鑰上傳到服務器中,而後在服務器(假定是Linux服務器)上進入登陸賬戶的家目錄,輸入下面的命令:
cat publickeyname >> authorized_keys
publickeyname是你的公鑰文件的文件名。若是它不在當前目錄裏,還要加上到文件的引用路徑。
若是用SSH登陸的服務器是一臺windows服務器,可使用如下命令:
copy /b authorized_keys + publickeyname authorized_keys
至此,你已經可使用基本密鑰的方法登陸SSH服務器了,OpenSSH提供了下面這些基本命令行的命令:
ssh <user@servername>
scp <localfilename> <user@servername>:<destinationdirectory>
sftp <user@servername>
關於這些命令的詳細使用方法咱們會在另外一篇文章晨介紹。
除了客戶端,OpienSSH套件還包含了服務器端,在安裝程序結束後,服務器端還不能馬上使用,須要作一些進一步的設置。
咱們知道,OpenSSH原來是在Linux環境下使用的,它使用的用戶密碼和組的信息通常從服務器上的passwd和group文件中取得,而在windows環境下用戶信息存放的位置顯然是不一樣的。前面咱們也提到OpenSSH for windows其實是Cygwin套件裏的OpenSSH軟件包,所以,它在windows下的使用也要依賴於Cygwin創建起的Linux仿真環境。
爲了讓OpenSSH的服務器正常運行,首先要在Cygwin仿真環境中創建/etc/passwd和/etc/group文件,在安裝好OpenSSH for windows後,程序會將OpenSSH的安裝目錄作爲Cygwin仿真系統根目錄,並在/bin下存放各執行文件,在/etc下存放配置文件以符合Linux程序的環境要求。所以,在安裝好程序後,咱們須要打開命令行窗口,進入OpenSSH安裝目錄下的bin目錄,運行以下命令生成所需的passwd和group文件。
mkgroup -l >> ..\etc\group (local groups)
mkgroup -d >> ..\etc\group (domain groups)
mkpasswd -l [-u ] >> ..\etc\passwd (local users)
mkpasswd -d [-u ] >> ..\etc\passwd (domain users)
這樣能夠把域和本機的組與用戶信息導入到Cygwin的賬戶和組文件中去。
而後運行以下命令啓動OpenSSH服務。
net start opensshd
如今,你就能夠在其它機器上利用SSH登陸本機了。
在windows系統下使用OpenSSH,須要注意下面這些問題:
一、 StrictModes問題
有時運行在windows系統上的OpenSSH服務器會沒法識別登陸系統使用的公鑰(特別是在一些Windows XP系統上),若是出現這樣的問題,能夠進行以下處理。
將SSHD服務器的配置文件sshd.conf中的StrictModes選項設置爲關閉便可以解決這個問題。
二、 Windows路徑問題
在使用scp和sftp以及設置passwd文件中的用戶登陸目錄裏,咱們都會遇到目錄問題,咱們知道linux的文件系統與windows的組織結構有很大差別,因爲OpenSSH的使用環境主要是在Linux下,這些地方的路徑模式也用的是Linux模式。在這些地方爲了訪問Cygwin虛擬根之外的目錄,Cygwin提供了一種目錄轉換機制,在目錄前加/cygdrive/DRIVELETTER/引用指定盤符的目錄。這裏DRIVELETTER是指目錄所在的盤符,好比訪問C盤的winnt\system32目錄用如下目錄引用/cygdrive/c/winnt/system32。它實際提供了一種兩類目錄結構之間的映射。