理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> UNIX >> rsh
このエントリーをはてなブックマークに追加

rshの設定と使い方

作成日:2010.4.13
環境:Vine Linux 5.1

rshを用いるとリモートホストでシェルコマンドを実行することができます.

$ rsh 192.168.1.100 mkdir hoge
また,引数にコマンドを付けずに,ホスト名だけ指定するとrloginが実行されてリモートホストにログインすることができます.
$ rsh 192.168.1.100
しかし,rshはパスワードを暗号化せずにネットワーク上に流してしまうのでセキュリティのの観点からあまり使われなくなっています. Vine Linux 5.1でも標準的なインストールでは使用できないようになっています.

デーモン xinetd のインストール

rshやtelnet, ftpなどによるアクセスを管理しているのがxinetdというデーモンなので,もしインストールされていなければインストールします.Vine Linuxの場合は

# apt-get install xinetd
とします.さらに,rshのサーバもインストールする必要があります.
# apt-get install rsh-server
ネットワークに繋がっていない環境ならば,xinetd-2.3.14-1vl5.x86_64.rpm などを何らかの方法で取得し,rpmコマンドでインストールします.

rsh-serverをインストールすると/etc/xinetd.d/rsh, rlogin, rexecが出来るので,これらをファイルを開いて次のようにyesnoに書き換えます.

disable = no
次に,xinetdを起動します.
# /etc/rc.d/init.d/xinetd start
xinetdをシステムの起動時に,自動的に起動するようにするには
# chkconfig --level 35 xinetd on
とします.インストール時に既にonになっていれば変更の必要はありません. rshとrloginの自動起動がonになってるかどうかも念のため確かめておきます.
# chkconfig --list rsh
# chkconfig --list rlogin

rshのアクセス制御

特定のリモートホストからのみrshによるアクセスを許可する場合には,TCP Wrapperの設定ファイル/etc/hosts.allow, hosts.denyを用います.例えば 192.168.1.10からのみアクセスを許可したい場合には,/etc/hosts.allow

ALL:192.168.1.10
と書き,/etc/hosts.deny
ALL:ALL
と書きます.これで全てのアクセスを不許可とした上で,hosts.allowに書かれたホストからのアクセスのみを許可します.192.198.1.で始まる全てのホストからのアクセスを許可する場合,example.comに属する全てのホストからのアクセスを許可する場合などには,
ALL:192.168.1.
ALL:*.example.com
とすることもできます.

パスワード無しでrsh

複数のホストのユーザー名が同じでパスワードによる認証が必要がない場合には,/etc/hosts.equivにホスト名を書いておきます.ユーザー毎に指定する場合には,~/.rhostsに書きます.

192.168.1.1
192.168.1.2
192.168.1.3
/etc/hosts.equiv~/.rhostsの両方がある場合には後者が優先されます.

rootもパスワード無しでrsh

rootでrshを行う場合には /etc/hosts.equiv は参照しないので,/root/.rhosts にホスト名を書いておく必要があります.

さらに/etc/securettyrshrloginを追加します.

# echo rsh >> /etc/securetty
# echo rlogin >> /etc/securetty