在windows下安裝SSH

 

由於要在windows下使用集羣系統,因此需要有遠程登陸和管理的工具,所以就找來OpenSSH for Windows,根據網上的資料在WinXP系統內進行的反覆的嘗試,但總是隻能進行基於密碼的遠程登陸,無法採用基於密鑰的無密碼登陸,這樣就必須在每次登陸的時候輸入密碼,既不安全也不便於實現自動化管理。

索性就改用cygwin實現的openssh,居然沒有費什麼勁就設置好了,想一想估計是因爲OpenSSH for Windows的版本太舊了(最新的v3.81也是2003年的東西了),在WinXP上存在些兼容性的問題,加上需要手動修改其安裝目錄下的/etc/sshd_conf文件中的一些配置,不太好使也是難免的了。

在WinXP上通過cygwin實現openssh就要簡單的多了,主要包括兩個部分,首先配置SSH服務器,然後就可以通過在其中建立組與用戶密碼來實現基於密碼的遠程登陸,另外一部分就是通過在本地生成密鑰對並上傳給SSH服務器來實現基於密鑰的遠程登陸。

當然一切都是從cygwin的安裝開始的,無論在服務器端還是遠程的客戶端都是必須要做的。安裝的時候需要注意,除了缺省的那些包之外,還需要安裝/libs/zlib/net/openssh/net/tcp_wrappers,這幾個包不屬於缺省安裝的內容,因此需要在安裝界面中手動選擇。

配置SSH服務器

1. 配置ssh主機,在cygwin的控制檯中輸入如下命令:

ssh-host-config

當屏幕顯示關於“privilege seperation”,輸入yes後回車;

當屏幕顯示關於“create local user sshd”,輸入yes後回車;

當屏幕顯示關於“install sshd as a service”,輸入yes後回車;

當屏幕顯示關於“CYGWIN=”,輸入ntsec tty後回車;

當屏幕提示“Host configuration finished. Have fun!”時,就說明已經正常的完成了ssh主機的配置。

2. 啓動ssh服務,也就是啓動ssh的服務器功能,在cygwin的控制檯中輸入如下命令:

net start sshd

或者

cygrunsrv start sshd

屏幕提示“CYGWIN sshd服務已經啓動成果。”,或者沒有任何錯誤提示(對於cygrunsrv命令而言),說明ssh服務已經正常啓動。

3. 創建用戶組與密碼,在cygwin的控制檯中輸入如下命令:

mkpasswd cl > /etc/passwd

mkgroup --local > /etc/group

至此服務器的配置已經完成,可以基於用戶與密碼實現從遠程登陸SSH服務器。

通過密碼登陸SSH服務器

在cygwin的控制檯輸入如下命令:

ssh username@hostname

其中hostname爲建立SSH服務器的計算機IP地址或機器名,username爲用於登陸該計算機的用戶名稱,如果根據前面的服務器配置步驟,應當就是該計算現有的某個賬戶名稱。

如果是所用的客戶端計算機是第一次登陸SSH服務器,命令行中會提示“Are you sure you want to continue connecting (yes/no) ?,只要輸入yes即可,SSH服務器會自動將這次的登陸信息存儲在/.ssh/known_host文件中。

接着屏幕中會提示輸入登陸賬戶的密碼,也就是ssh服務器中登陸賬戶的密碼,當顯示“Fanfare!!! You are successfully logged in to this server!!!時,說明已經成功登陸到ssh服務器計算機內了,需要注意的是,此時在當前控制檯內輸入的命令都將在ssh服務器計算機裏運行。

如果要退出登陸,只要在命令行中輸入

exit

即可,屏幕中會顯示“logout Connection to [hostname] closed.

通過密鑰登陸ssh服務器

1. 在客戶端計算機上安裝好包含openssh的cygwin;

2. 爲客戶端生成rsa密鑰,在cygwin命令行中輸入:

ssh-keygen t rsa

對於提示輸入密鑰文件名或密鑰的包含密碼時都可以直接回車,從而將無密碼保護的密鑰保存在缺省文件中,兩個密鑰文件都保存在客戶端當前用戶的cygwin賬戶目錄的/.ssh文件夾中,其中公鑰的名稱比私鑰的名稱只多一個pub後綴。

3. 將客戶端的公鑰上傳到ssh服務器,這時可以通過前面已經成功的基於密碼的方式完成文件的上傳,即在客戶端的cygwin命令行中輸入如下命令:

cd ~/.ssh

scp id_rsa.pub username@hostname:~/.ssh/newkey

4. 在ssh服務器中將客戶端的公鑰添加到authorized_keys中,在服務器的cygwin命令行中輸入如下命令:

cd ~/.ssh

ls        (這時可以在目錄中看到newkey文件)

cat newkey >> authorized_keys

rm newkey

chmod 600 authorized_keys  (更改文件的屬性)

5. 這時已經可以從客戶端通過密鑰對登陸到ssh服務器上了,只需在客戶端的cygwin命令行中輸入:

ssh username@hostname

在沒有密碼輸入提示的情況下,應該可以看到“Ranfare!!! ……”,這說明已經成功登陸,如果在此時繼續輸入

whoami

可以看到在服務器上的登陸用戶名。

需要注意的事情

1. 由於cygwin不能直接支持包含空格的文件路徑,因此在cygwin中執行的應用盡量不要有包含空格的路徑,如果一定要用,需要在空格前添加“/”來標註;

2. windows的賬戶一定要有密碼,否則只能通過修改sshd_conf來允許無密碼的賬戶登陸;

3. 默認的sshd服務不允許其與桌面進行交互,因此當通過ssh執行基於窗口的命令時,將無法看到創建的窗口,而只能在“任務管理器”中看到該進程已經被創建。爲此,可通過進入“控制面板-管理工具-服務”窗口中打開“CYGWIN sshd”服務,在其彈出窗口的“登陸”屬性頁中選中“允許服務與桌面交互”複選框,如果此時在客戶端輸入

ssh username@host notepad

將可以看到對話框窗口能夠正常彈出。

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章