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

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

- gate登録システム用 -

2007年5月19日
gate-touroku-system 開発チーム
$Id: ssh-nopass-sarge.html,v 1.2 2007/05/19 09:37:03 odakker Exp $


  1. はじめに
  2. 概説
  3. Debian 3.1 のリモートホスト において必要な設定項目
  4. Debian 3.1 のローカルホスト において必要な設定項目
  5. gateユーザーとして必要な設定項目

1. はじめに

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

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


2. 概説

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


3. Debian 3.1 のリモートホストにおいて必要な設定項目

sarge における ssh のデフォルトの挙動は, ネットワーク上 での危険を配慮してかなりかたく作られている。
したがって パスワード認証無しの利用においては、いくつかのケア が必要である。 なお、以下の設定ではローカル、リモート共に SSH2 を用いていることを前提としてる。注意して欲しい。

以下の項目を確認し、変更する。

[ep local] EP サーバでは grey, yellow, blue, white, green, brown がここで言う「リモートホスト」に当たり、 orange が「ローカルホスト) 」に当たる。


[3.1] ssh デーモンにおいて .shosts 認証を利用可能にする

[3.1.1] /etc/ssh/sshd_config の中の以下の項目を変更する。

# vi /etc/ssh/sshd_config

IgnoreRhosts yesno に変更し,

HostbasedAuthentication noyes に変更する.

[3.1.2] ssh を再起動する

# /etc/init.d/ssh restart

4. Debian 3.1 のローカルホストにおいて必要な設定項目

[ep local] EP サーバでは grey, yellow, blue, white, green, brown がここで言う「リモートホスト」に当たり、 orange が「ローカルホスト) 」に当たる。

[4.1] /usr/bin/ssh, /usr/bin/ssh-keygen の s ビット

ローカルホストの /usr/bin/ssh, /usr/bin/ssh-keygen の s ビットが立っているか確認する.

$ ls -lg /usr/bin/ssh /usr/bin/ssh-keygen

-rwsr-xr-x 1 root root 230248 Jul 12 19:52 /usr/bin/ssh
-rwsr-xr-x 1 root root 151496 Jun 20 01:23 /usr/bin/ssh-keygen

s ビットが立っている ( 所有者の実行権限が「s」 になっている ) 場合は、次の [4.2] ssh コマンドにおいて .shosts 認証を有効にする へ進む
s ビットが立っていない場合は、以下の手順に従って変更する。

[4.1.1] 手順

以下のコマンドで, /usr/bin/ssh, /usr/bin/ssh-keygen に s ビットを立てる。

# chmod 4775 /usr/bin/ssh /usr/bin/ssh-keygen

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

$ ls -lg /usr/bin/ssh /usr/bin/ssh-keygen


[4.2] ssh コマンドにおいて .shosts 認証を有効にする

[4.2.1] /etc/ssh/ssh_config の中に設定を追加する。

# vi /etc/ssh/ssh_config

として/etc/ssh/ssh_configを編集し, 以下の 2 行を追加する。

      HostbasedAuthentication yes
      PreferredAuthentications hostbased,publickey,password
    

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

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

[5.1] リモートホスト (登録サーバー以外) で行うこと

[ep local] EP サーバでは grey, yellow, blue, white, green, brown がここで言う「リモートホスト ( <remote> ) 」に当たり、 orange が「ローカルホスト ( <local> ) 」に当たる。 以下ではその部分を差し替えて作業を行ってほしい。

[5.1.1] .shosts の作成

・ リモートホストにおいてgateになる。

username@<remote>:~$ sudo -u gate -s -H

・ /home/gate/へ移動

gate@<remote>:~$ cd /home/gate/

・ .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アドレスを直接書き込むなどする事。

・.shosts を他人に見れないようにする。

gate@<remote>:~$ chmod 600 .shosts

[5.1.2] 既存のローカルホストの公開鍵を消去する。

以下のコマンドで、ローカルホストの公開鍵が既に存在するのか しらべる。

gate@<remote>:~$ grep <local> /home/gate/.ssh/known_hosts

下記のような出力が得られた場合は以下の手順に従い、 この公開鍵を削除する。

<local>.ep.sci.hokudai.ac.jp, ssh-rsa AAAB3N…
         …u7gVFln6pKNeudEG9ocCetJ2VgElUsv8sboz15M

以上のような出力が得られず、known_hosts に ローカルホストの公開鍵が無いことが確認できた場合は [5.1.4] ローカルホストの公開鍵の入手 へ進む。

[5.1.3] 公開鍵削除の手順

/home/gate/.ssh/へ移動する。

gate@<remote>:~$ cd /home/gate/.ssh/

known_hosts をエディタで編集する。

gate@<remote>:~$ vi known_hosts

ローカルホストの公開鍵である以下の一行を消す。

<local>.ep.sci.hokudai.ac.jp, ssh-rsa AAAB3N…
         …u7gVFln6pKNeudEG9ocCetJ2VgElUsv8sboz15M

[5.1.4] ローカルホストの公開鍵の入手

以下のように、ローカルホストへ ssh 接続を試みる。 なお、ローカルホストは FQDN (フルドメイン) で指定すること。

gate@<remote>:~$ ssh <local>.ep.sci.hokudai.ac.jp

すると、ローカルホストの公開鍵は無いため、 以下のようなメッセージが出る。

The authenticity of host '<local>.ep.sci.hokudai.ac.jp (133.87.45.**)'
can't be established. RSA key fingerprint is 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 ユーザにはパスワードは 設定されていないので接続できないがこれで良い。 (リモートからローカルへ接続できる必要はない。)


[5.2] ローカルホスト (登録サーバー) で行うこと

[ep local] EP サーバでは orange がここで言う「ローカルホスト」に当たる。

[5.2.1] gateユーザになる。

username@<local>:~$ sudo -u gate -s -H

[5.2.2] 既存のリモートホストの公開鍵を消去する。

以下のコマンドで、リモートホストの公開鍵が既に存在するのか しらべる。

gate@<local>:~$ grep <remote> /home/gate/.ssh/known_hosts

下記のような出力が得られた場合は以下の手順に従い、 この公開鍵を削除する。

<remote>.ep.sci.hokudai.ac.jp, ssh-rsa CBA4BN…
         …sv8sboz15MFln6pKu7gVCetJ2VgElUNeudEG9oc

以上のような出力が得られず、known_hosts に リモートホストの公開鍵が無いことが確認できた場合は [5.2.4] リモートホストの公開鍵の入手 へ進む。

[5.2.3] 公開鍵削除の手順

/home/gate/.ssh/へ移動する。

gate@<local>:~$ cd /home/gate/.ssh/

known_hosts をエディタで編集する。

gate@<local>:~$ vi known_hosts

ローカルホストの公開鍵である以下の一行を消す。

<remote>.ep.sci.hokudai.ac.jp, ssh-rsa CBA4BN…
         …sv8sboz15MFln6pKu7gVCetJ2VgElUNeudEG9oc

[5.2.4] リモートホストの公開鍵の入手

以下のように、リモートホストへ ssh 接続を試みる。 なお、リモートホストは FQDN (フルドメイン) で指定すること。

gate@<local>:~$ ssh <remote>.ep.sci.hokudai.ac.jp

すると、さきほどリモートホストの公開鍵を削除したため、 以下のようなメッセージが出る。

The authenticity of host '<remote>.ep.sci.hokudai.ac.jp (133.87.45.**)' can't be established.
RSA key fingerprint is 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