最近學習做叢集,需要用到mpich做並行計算,而這個mpich在做程式分發的時候又需要用到remote shell即所謂的rsh。
我的機器效能還算不錯,跑三個虛擬機器也沒問題,當然肯定會有點卡。我有兩個虛擬機器用的是openSUSE11.0的系統,一個用gnome案頭,另一個用KDE的,因為openSUSE為了讓使用者好用,所以很多功能都預先安裝了,比如xinetd,這個後面會說。第三個虛擬機器用ubuntu8.10。
要在openSUSE(node1和node2使用)上使用rsh基本不費事(以下是兩台機器都要做的):
1.安裝rsh
只需工作列-->電腦-->安裝軟體,然後選擇安裝rsh和rsh-server就行了,rsh只是用戶端而已
2.編輯必須的檔案
(1)/etc/hosts,添加類似於以下的內容:
192.168.9.128 node1 server
192.168.9.129 node2
192.168.9.130 node3
其中的ip地址是vmware自動給三台虛擬機器分配的,應為不需要外網訪問,所以不需要用橋接。這樣128那台機器就有了node1和server兩個別名,ping 192.168.9.128與ping node1效果一樣,這樣做可以方便其他配置。
(2)/etc/hosts.equiv,如果沒有就建立一個,該檔案用於rsh可信串連,不用輸密碼
node1
node2
node3
$p#
(3)/root/.rhosts,內容同上,用於root使用者使用rsh,上面那個檔案只適用於普通使用者
(4)/etc/securetty,在最後加入rsh,好像不加也能用
(5)/etc/xinetd.d/rsh,suse的這個檔案不同於redhat,裡面少了一項“disable=no”,得自己加上,如果在下面測試時你遇到“connection refused”這樣的提示,那就是因為這個“disable”沒處理好,
3.測試
在終端輸入chkconfig rsh on,確保rsh服務開啟
再輸入rsh node2 true應立即返回,無任何顯示(注意這是在node1那台機器上,若在node2上應輸入rsh node1 true)
這就說明安裝成功!
在ubuntu(node3使用)上安裝rsh就沒這麼順利了,首先是包管理工具裡面沒有rsh需要的兩個包,並且xinetd也沒有裝上
1.安裝xinetd
apt-get install xinetd
2.安裝rsh-client和rsh-server
在這裡下載:
http://packages.ubuntu.com/zh-cn/hardy/rsh-server
http://packages.ubuntu.com/zh-cn/dapper/rsh-client
然後直接雙擊安裝,很容易
3.編輯需要的檔案,步驟同suse的
4.關鍵步驟
當你在編輯必需的檔案時會發現有幾個檔案找不到,沒錯!安裝了rsh-client和rsh-server後,/etc/xinetd.d目錄下並沒有需要的rsh、rlogin和rexec檔案,這個時候node3能rsh到node1和node2,但是反之就不行,於是猜想是那個“disable”項的關係,因此直接在這個目錄下建立那三個檔案,內容分別與suse裡面的相應檔案相同
5.測試
ubuntu下沒有chkconfig命令,確實不方便,只能用/etc/init.d/xinetd restart附帶的把rsh重啟一下,然後再從node1和node2分別敲rsh node3 true,都成功,說明ubuntu上的也成功了
6.總結
其實關鍵就是建立檔案那步,rsh會按照那幾個檔案配置自己,預設的“disable”都為“yes”,沒有這項也當成了“disable=yes”,suse中一開始就是這種情況。