Linux的rsh配置rhost

來源:互聯網
上載者:User

 

  參考: redhat linux下配置rsh和rcp: http://linux.chinaunix.net/techdoc/net/2008/06/30/1014112.shtml                                                                                                                                     1:安裝前準備:  機器A:192.168.0.104(machine_a) (安裝rsh server)  機器B:192.168.0.106(machine_b) (rsh client )    2: 首先確認機器A是否安裝rsh包:  [root@mg04 root]# rpm -aq |grep rsh  rsh-0.17-14  rsh-server-0.17-14  如果沒有安裝以上兩個包,請找到相關軟體安裝(如果是LINUX,可以從安裝碟中找到)  安裝包:  rpm -ivh rsh-0.17-5 (linux 作業系統)  rpm -ivh rsh-server-0.17-5 (linux 作業系統)    或者在root下使用yum install rsh 和 yum install rsh-server來自動安裝。 (使用yum安裝rsh-server的時候xinetd也會被自動安裝)   3:確認機器A是否啟動rsh 服務:  方法一:  使用命令setup,查看service是否將 rsh/rlogin/rexec 加上*,如果加上*表示可以啟動。  /etc/rc.d/init.d/xinetd restart 或者 service xinetd restart

 

 方法二: 

或者使用chkconfig檢查rsh/rlogin/rexe是有啟動。 

 

 rsh 屬於xinetd服務,可以直接修改/etc/xinetd.d/rsh指令檔來配置。  service shell  {  disable = no  socket_type = stream  wait = no  user = root  log_on_success += USERID  log_on_failure += USERID  server = /usr/sbin/in.rshd  } 

對/etc/xinetd.d/rlogin 和/etc/xinetd.d/rexec進行類似的設定。 

 當然方法很多,目的就是使用rsh/rlogin/rexec服務能啟動。  /etc/rc.d/init.d/xinetd restart 

 

 檢查是否啟動: rsh server 監聽和TCP 是514。  [root@mg04 root]# netstat -an |grep 51 tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN  如果能看到514在監聽說明伺服器已經啟動。 

 

 4: 配置機器A的hosts檔案/etc/hosts例如:(貌似不能直接使用ip來rsh)127.0.0.1               localhost.localdomain localhost ::1             localhost6.localdomain6 localhost6 192.168.0.104   machine_a.localdomain machine_a 192.168.0.106  machine_b.localdomain machine_b

  

5: 配置機器A的rsh server: 

  修改/etc/securetty檔案:
  echo rsh >>/etc/securetty 

  echo rlogin >>/etc/securetty
  echo rexec >>/etc/securetty  

  如果打算用AAA作為rsh使用者的話:   先用AAA登入到機器A中進行以下操作:  cd ~/  echo "machine_a AAA" >>.rhosts  #允許machine_a 以AAA訪問 ,即允許從rshserver所在的機器運行rshclient。 echo "machine_b AAA" >>.rhosts  #允許machine_b以AAA訪問。

 echo +AAA >>.rhosts 允許所有的機器以AAA訪問,貌似linux下不起作用。

 重啟rsh server. (service xinetd restart)  5:測試和注意的問題: 
 rshserver機器作為rshclient的機器測試: rsh -l AAA localhost ps -ef 或者 rsh -l AAA machine_a ps -ef 登入到B機器machine_b進行測試: rsh -l AAA machine_a ps -ef  看是否能看到結果。如果看到  rsh -l AAA machine_a ps -ef  Permission denied.  這是由於權許可權問題,一般是由於 .rhosts沒有配置正確。.rhosts一般位於  rsh server伺服器相對應帳號目錄下比如AAA(與.bash_profile在同一目錄)  rsh在執行命令有時會找不到。rsh 在調用命令是最好使用絕對路徑。預設搜尋路徑為:  [root@mg04 etc]# rsh -l AAA 192.168.0.4 env |grep PATH  PATH=/usr/bin:/bin  

 

hosts.equiv和.rhosts檔案  http://linux.sheup.com/linux/linux2007.htm    遠端使用者啟動rlogin訪問你的本地主機,此時做如下安全性檢查:  1. 本地rlogind在本地/etc/passwd檔案中尋找遠端使用者名,沒有則拒絕訪問。 

 

 2. /etc/passwd中存在遠端使用者名,rlogind在/etc/hosts.equiv尋找遠程主機名稱,找到則允許訪問。 

 

 3. /etc/hosts.equiv無遠程主機名稱,rlogind在$HOME/.rhosts尋找遠程主機名稱,找到且該項後無使用者名稱則允許訪問,找到且該項後有使用者名稱,若遠端使用者名位於其中,則允許訪問。注意這裡的$HOME是與遠端使用者同名的本機使用者的主目錄。 

 

 4. 若通過了/etc/passwd的檢查,但沒有通過/etc/hosts.equiv或者$HOME/.rhosts的檢查,遠端使用者給出口令可以登入本機,但無法使用rcp、rsh等。反之則可以使用rcp或者rsh。 

 

 5. /etc/hosts.equiv中的+意味著任意主機,此時與/etc/hosts無關。netterm下rlogin除root外的所有使用者可以成功,solaris下簡單的rlogin hostname同netterm,但是rlogin -l username hostname不成功。這個事實說明netterm下rlogin的時候,指定的參數實際上是遠程主機的目前使用者名。還說明hosts.equiv檔案不支援rlogin -l username hostname,不支援root的rlogin。  6. rlogin -l username hostname和rlogin hostname的檢查有點細微的差別,首先在/etc/passwd的檢查中是以-l的參數為準的,沒有-l參數才使用遠程主機的目前使用者名,所謂目前使用者名是考慮了su出來的使用者。其次,$HOME也是先以-l參數為準。第三,$HOME/.rhosts檔案中的使用者名稱不是針對-l參數來的,而是針對遠程主機的目前使用者名來的,但是對於這個遠程主機的目前使用者名,並不要求出現在/etc/passwd檔案中。這第6條尤其重要,許多不成功的$HOME/.rhost就是因為對第6條的不瞭解。  7. $HOME/.rhosts檔案的許可權問題,chmod 0都沒有影響,不過當時是處理root使用者。對於一般使用者,一定要保證.rhosts檔案對於$HOME的屬主是可讀的。一般來說,這個檔案最好chmod 400。對於root,如果不希望某個使用者建立自己的.rhosts或者想替該使用者建立.rhosts後不允許該使用者自己修改,可以通過chown root .rhosts然後chmod 444 .rhosts實現。除了root,如果$HOME/.rhosts檔案的屬主和$HOME的屬主不一致,檢查將失敗。  8. $HOME/.rhosts檔案中每行只跟一個使用者名稱,若想多個指定,只好分多行指定使用者名稱。  9. sco unix下$HOME/.rhosts中若用+代表主機,與其他Unix系統不同,這裡的+沒有任何特殊的意義,所以檢查將失敗。但是使用者名稱仍然可以用+代表。並且sco unix下若root的.rhosts檔案go+w,則檢查失敗。  10. 建議man rhosts看看,各個系統有許多細微的差別。

 

完! 

 

其他注意:

2. 直接使用 rsh <host> 命令方式和使用 rsh <host> <cmd> 命令方式,其實本質上是不一樣的,前者實質上調用的是 rlogin 程式,而後者才是真正意義上的 remote shell。所以,前者對應的是 rlogin 服務的連接埠,為 513;後者對應的才是 remote shell 服務的連接埠 514。而使用 rsh <host> <cmd> 命令方式時,具體過程還是有些特殊的,那就是,本地機先連結服務端的 514 連接埠,然後服務端還要以約定好的連接埠(1021~1023)與用戶端相連,所以要順利執行該命令的話,即要求服務端允許 514 連接埠連結,還要求本地機允許1021~1023連接埠的連結,這樣就必須正確配置防火牆。如果沒有在本地機允許1021~1023連接埠,則會出現如下錯誤: poll: protocol failure in circuit setup
3. 網上有的說 rsh 串連不正常可以通過修改 /etc/securetty 檔案,添加 rsh 和 rlogin 兩行,並修改 /etc/pam.d/rsh 檔案,注釋掉 pam_rhosts_auth.so 那一行就可以。而事實證明,在沒有開放相應連接埠的情況下,這麼做了沒有用。而按我上面說的4步做了以後,不做這兩條也完全可以。所以,這兩條對我的系統完全不必要。

上面所說的只對普通使用者(非root)有效,若是對root使用者,上面的設定還不能實現無密碼訪問,甚至都可能連不上。對root使用者,應增加以下兩條:

1. 必須要在 /etc/securetty 中添加上 rsh 和 rlogin 才能分別使用兩個服務。

2. 必須要在 /root/.rhosts 中加入等價的主機名稱或IP,這些機子才能無密碼訪問該機器。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.