gate-toroku-system | インストールの手引き | 登録サーバ | その他のサーバ
2001年3月9日
gate-touroku-system 開発チーム
$Id: ssh-nopass-potato.html,v 1.11 2007/05/19 09:37:03 odakker Exp $
この文章は ssh (Secure shell) を導入しているホスト間でパスワードを 入力せずにログインを可能にする方法を取り扱う. Debian GNU/Linux 2.2 (potato版) を対象とし,動作確認を行っている. なお, プロトコルは SSH1 を用いていることを仮定している。 SSH2 を用いてのノンパスログインを行う場合には sshを用いたノンパスワードログイン (SSH2版)を参考にすること。
gate登録システムでは、gateユーザーがパスワード無しで ssh ログインできなければならない。この文章では、簡単な手順に ついてのみ記す。
ログイン名 username がローカルホスト (local.ep.sci.hokudai.ac.jp) からリモートホスト (remote.ep.sci.hokudai.ac.jp) へパスワード 無しの ssh ログインを可能するには以下のファイルに決められた情報 が記述されている必要がある.
- ローカルホスト (登録サーバー)
/home/username/.ssh/known_hosts にリモートホストの公開鍵
- リモートホスト (その他のサーバー)
/home/username/.ssh/known_hosts にローカルホストの公開鍵
/home/username/.shosts にノーパスログインの許可を与える
ローカルホストのアドレスと(リモートでの)ログイン名なおローカル/リモートホストの公開鍵は /etc/ssh/ssh_host_key.pub として置かれている.
ただし known_hosts での表記と微妙に違うこと に注意が必要.また .shosts は他人に読まれてはならない.
potato における ssh のデフォルトの挙動は, ネットワーク上 での危険を配慮してかなりかたく作られている.
したがって パスワード認証無しの利用においては, いくつかのケア が必要である.以下の項目を確認し、変更する。
[3.1] /usr/bin/ssh の s ビット
/usr/bin/ssh の s ビットが立っているか確認する.
$ ls -lg /usr/bin/ssh
-rwsr-xr-x 1 root root 107548 Jul 12 19:52 /usr/bin/sshs ビットが立っている ( 所有者の実行権限が「s」 になっている ) 場合は、次の [3.2] パスワードフィールド へ進む s ビットが立っていない場合は、以下の手順に従って変更する。
[3.1.1] 手順
suidmanager を apt-get でインストールする。
# apt-get install suidmanagerインストールしたら、以下のコマンドを打つ。
# suidregister /usr/bin/ssh root root 4755sビットが立ったかどうか確認する。
$ ls -l /usr/bin/ssh
[3.2] パスワードフィールド
gateユーザーのパスワードフィールドが、 "*"になっているか確認する。
# grep gate /etc/shadow
gate:*:01055:0:98979:1:::"*"になっている場合は、 次の [3.3] .shosts 認証を有効にする へ進む。
"*"になっていない場合は、 以下の手順に従い、変更する。
[3.2.1] 手順
gateユーザーのパスワードフィールドを "*" に書きかえる.
# vi /etc/shadow
gate:*:01055:0:98979:1:::
[3.3] .shosts 認証を有効にする
[3.3.1] /etc/ssh/sshd_config の中の以下の項目を変更する。
# vi /etc/ssh/sshd_configIgnoreRhosts yes を no に変更し,
RhostsRSAAuthentication no を yes に変更する.
[3.3.2] ssh を再起動する
# /etc/init.d/ssh restart
上記の項目を確認・変更したら、以下の作業を行う。
[4.1] リモートホスト (登録サーバー以外) で行うこと
[ep local] EP サーバでは grey, yellow, blue, white, green がここで言う「リモートホスト ( remote ) 」に当たり、 orange が「ローカルホスト ( local ) 」に当たる。 以下ではその部分を差し替えて作業を行ってほしい。
[4.1.1] リモートホストにおいてgateになる。
username@remote:~$ sudo -u gate -s -H[4.1.2] /home/gate/へ移動
gate@remote:~$ cd /home/gate/[4.1.3] .shostsを作成する
gate@remote:~$ vi .shosts以下の内容を書き込む。
local.ep.sci.hokudai.ac.jp gate
[ep local] EP サーバにおける登録サーバ ( ローカルホスト ) は orange なので,
orange.ep.sci.hokudai.ac.jp gate
と書き込めばよい。
※ ただし、ドメイン名を書き込む際には DNS サーバによって正引き「ドメイン名 →IPアドレス」 が行われているだけでなく、 逆引き「IPアドレス →ドメイン名」 が行われていなければならない。 もしも DNS サーバによる正引き、逆引きが行われないようならば、 IPアドレスを直接書き込むなどする事。
[4.1.4] .shosts を他人に見れないようにする。
gate@remote:~$ chmod 600 .shosts[4.1.5] 既存のローカルホストの公開鍵を消去する。
以下のコマンドで、ローカルホストの公開鍵が既に存在するのか しらべる。
gate@remote:~$ grep local /home/gate/.ssh/known_hosts下記のような出力が得られた場合は以下の手順に従い、 この公開鍵を削除する。
local.ep.sci.hokudai.ac.jp 1024 37 1298…
…10849749128912890448718128901000以上のような出力が得られず、known_hosts に ローカルホストの公開鍵が無いことが確認できた場合は [4.1.7] ローカルホストへssh接続を試みる。 へ進む。
[4.1.6] 公開鍵削除の手順
/home/gate/.ssh/へ移動する。
gate@remote:~$ cd /home/gate/.ssh/known_hosts をエディタで編集する。
gate@remote:~$ vi known_hosts
ローカルホストの公開鍵である以下の一行を消す。
local.ep.sci.hokudai.ac.jp 1024 37 1298…
…10849749128912890448718128901000[4.1.7] ローカルホストへssh接続を試みる。
gate@remote:~$ ssh local.ep.sci.hokudai.ac.jpすると、ローカルホストの公開鍵は無いため、 以下のようなメッセージが出る。
The authenticity of host 'local.ep.sci.hokudai.ac.jp' can't be established.
Key fingerprint is 1024 4d:c5:e9:ed:05:df:49:8a:93:d4:e9:cb:57:3a:d2:5b.
Are you sure you want to continue connecting (yes/no)?これには「yes」と答える。 これでローカルホストの現在の公開鍵が .ssh/known_hosts に 書き込まれる。 今度は削除しないように。
その後、パスワードを聞かれるが、gate ユーザにはパスワードは 設定されていないので接続できないがこれで良い。 (リモートからローカルへ接続できる必要はない。)
[4.2] ローカルホスト (登録サーバー) で行うこと
[ep local] EP サーバでは orange がここで言う「ローカルホスト」に当たる。
[4.2.1] gateユーザになる。
username@local:~$ sudo -u gate -s -H[4.2.2] 既存のリモートホストの公開鍵を消去する。
以下のコマンドで、リモートホストの公開鍵が既に存在するのか しらべる。
gate@local:~$ grep remote /home/gate/.ssh/known_hosts下記のような出力が得られた場合は以下の手順に従い、 この公開鍵を削除する。
remote.ep.sci.hokudai.ac.jp 1024 37 4971…
…90448718128901000108497491289128以上のような出力が得られず、known_hosts に リモートホストの公開鍵が無いことが確認できた場合は [4.2.4] リモートホストへssh接続を試みる。 へ進む。
[4.2.3] 公開鍵削除の手順
/home/gate/.ssh/へ移動する。
gate@local:~$ cd /home/gate/.ssh/known_hosts をエディタで編集する。
gate@local:~$ vi known_hosts
ローカルホストの公開鍵である以下の一行を消す。
remote.ep.sci.hokudai.ac.jp 1024 37 4971…
…90448718128901000108497491289128[4.2.4] リモートホストへssh接続を試みる。
gate@local:~$ ssh remote.ep.sci.hokudai.ac.jpすると、さきほどリモートホストの公開鍵を削除したため、 以下のようなメッセージが出る。
The authenticity of host 'remote.ep.sci.hokudai.ac.jp' can't be established.
Key fingerprint is 1024 cd:8e:16:a9:a9:b0:44:55:06:e3:39:d2:13:de:e9:3c. Are you sure you want to continue connecting (yes/no)?これには「yes」と答える。 これでリモートホストの現在の公開鍵が .ssh/known_hosts に 書き込まれる。 今度は削除しないように。
すると、今度はパスワードを聞かれる事なく、リモートホストへ ログインできるはずである。
gate@remote:~$
以上で、遠隔起動が可能になり、データベースサーバからその他のサーバ を動かす事が可能になった。