由於要在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 (更改文件的屬性)