gate-toroku-system | インストールの手引き | 登録サーバ | その他のサーバ

sshを用いたノンパスワードログイン (SSH1版)

- gate登録システム用 -

2001年3月9日
gate-touroku-system 開発チーム
$Id: ssh-nopass-potato.html,v 1.11 2007/05/19 09:37:03 odakker Exp $


  1. はじめに
  2. 概説
  3. Debian GNU/Linux 2.2 (potato版) において必要な設定項目
  4. gateユーザーとして必要な設定項目

1. はじめに

この文章は ssh (Secure shell) を導入しているホスト間でパスワードを 入力せずにログインを可能にする方法を取り扱う. Debian GNU/Linux 2.2 (potato版) を対象とし,動作確認を行っている. なお, プロトコルは SSH1 を用いていることを仮定している。 SSH2 を用いてのノンパスログインを行う場合には sshを用いたノンパスワードログイン (SSH2版)を参考にすること。

gate登録システムでは、gateユーザーがパスワード無しで ssh ログインできなければならない。この文章では、簡単な手順に ついてのみ記す。


2. 概説

ログイン名 username がローカルホスト (local.ep.sci.hokudai.ac.jp) からリモートホスト (remote.ep.sci.hokudai.ac.jp) へパスワード 無しの ssh ログインを可能するには以下のファイルに決められた情報 が記述されている必要がある.


3. Debian GNU/Linux 2.2 (potato版) において必要な設定項目

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/ssh

s ビットが立っている ( 所有者の実行権限が「s」 になっている ) 場合は、次の [3.2] パスワードフィールド へ進む
s ビットが立っていない場合は、以下の手順に従って変更する。

[3.1.1] 手順

suidmanager を apt-get でインストールする。

# apt-get install suidmanager

インストールしたら、以下のコマンドを打つ。

# suidregister /usr/bin/ssh root root 4755

sビットが立ったかどうか確認する。

$ 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_config

IgnoreRhosts yes を no に変更し,

RhostsRSAAuthentication no を yes に変更する.

[3.3.2] ssh を再起動する

# /etc/init.d/ssh restart

4. gateユーザーとして必要な設定項目

上記の項目を確認・変更したら、以下の作業を行う。

[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:~$         

以上で、遠隔起動が可能になり、データベースサーバからその他のサーバ を動かす事が可能になった。


管理人: gate@ep.sci.hokudai.ac.jp