第2章 OpenSSH をインストールする

Last Modified: Mon Nov 8 03:16:18 UTC 2010

この章では OpenSSH のインストールを扱います。 本書が発行されている時点 (2006年) で 普及している多くの UNIX 系オペレーティングシステム (表 openssh-systems) では、 OpenSSH はパッケージとして最初から含まれており、 本書の説明はほぼそのままあてはまります。 そのため、最新のセキュリティアップデートさえ行っていれば、 特に新しい機能を使いたいのでない限り OpenSSH を自分で インストールをする必要はありません。 しかし、最新のバージョンにのみ含まれる特定の機能を利用したい場合もあるでしょう。 この章では最新の OpenSSH をインストールする方法や、 古い OpenSSH をアップデートする方法を説明します。

表 openssh-systems. OpenSSH が標準で含まれているオペレーティングシステム
(*): デフォルトでは sshd サーバデーモンなし

最初に、システムにインストールされている OpenSSH (またはその派生版) について調べてみましょう。インストールやアップデートの必要がなければ、 本章を飛ばして 3 章へ読み進めることもできます。また、 多くのオペレーティングシステムでは最新バージョンの OpenSSH が バイナリパッケージとして配布されているので、これらのパッケージを 利用するのもいいでしょう (表 binary-packages 参照)。
表 binary-packages. 各オペレーティングシステム用のバイナリパッケージ
オペレーティングシステム 配布サイト
Red Hat OpenSSH 公式サイト (http://www.openssh.com/portable.html)
Solaris Freeware for Solaris (http://www.sunfreeware.com/)
Mac OS X Fink (http://fink.sourceforge.net/)
DarwinPorts (http://darwinports.opendarwin.org/)

逆に「どうもソースコードからのインストール(またはアップデート)が必要だ」と感じたら、 次は環境や希望に応じてインストールあるいはアップデート方法を決定します。

以下に各オペレーティングシステムごとの代表的なインストール方法を示します:

お使いのシステム用に最新の OpenSSH パッケージが用意されている場合は 既存の OpenSSH を上書きできますが、 ソースコードからインストールするときにシステムの OpenSSH を上書きすべきではありません。 オペレーティングシステムによっては、特定のバージョンの OpenSSH に別のソフトウェアが 依存している場合があり、システム OpenSSH を新しいバージョンに変えると予期しない動作が生じることがあります。 また、そのオペレーティングシステムのパッケージ管理システムとも整合性がとれなくなってしまいます。 したがって、こうした場合には、通常システムのソフトウェアが入っている場所 (/usr) とは 別の場所 (/usr/local) にオプションとしてインストールします (図 openssh-config-tree)。 どうしても上書きしたい場合、そのシステムから OpenSSH が完全に消去できるのであれば、 消去したうえで同じ場所に OpenSSH をインストールしてください。


図 openssh-config-tree. OpenSSH をインストールするディレクトリ
アップデート時の注意
システムの OpenSSH が残っている状態で、その設定ファイルを 新しい OpenSSH 用の設定ファイルで上書きすべきではありません。 古いバージョンの OpenSSH で使っていた設定ファイルやホスト鍵ファイルは そのまま新しいバージョンでも使えますが、新しいバージョンの設定ファイルに 追加された項目は、古いバージョンの OpenSSH ではエラーを起こすことがあるからです。

また、そのシステムの OpenSSH サーバデーモンをすでにユーザが利用している場合、 決してそのホスト鍵 (ssh_host_rsa_keyssh_host_dsa_key 等のファイル) を上書きしないよう注意してください。ホスト鍵が変更されると、そこにログインしているユーザには 「そのホストが別のものに変わった (何者かがなりすましをしている)」ように 見えてしまいます (3.2. ホスト認証のしくみ 参照)。 ホスト鍵は一度生成したらよほどの事情がない限り変更すべきではありません。 もっとも将来的に計算機の能力が進歩して、より暗号強度のある長いホスト鍵に入れかえる必要性は 出てくるかもしれませんが、そのときにはマシンそのものが古くなっているはずで、 新しいマシンの導入を考えたほうがよいかもしれません。

OpenSSH をインストールあるいはアップグレードする場合、 まず現在インストールされている OpenSSH に関する情報を調べ、 オペレーティングシステムによって異なる方法をとる必要があります。 その後、おおまかな手順は次のようになります:

インストールまたはアップグレードの手順

  1. 新規に OpenSSH をインストールする場合:
    1. OpenSSH の設定ファイルの位置を確認し、メモしておく。
    2. ソースコードからコンパイルし、インストールする。
    3. インストール後に新しい sshd デーモンを起動する。
  2. 古い OpenSSH を上書きアップグレードする場合:
    1. OpenSSH の各プログラムと設定ファイルの位置を確認し、メモしておく。
    2. パッケージをダウンロードする。あるいは、正しいオプションをつけソースコードからコンパイルする。
    3. 古い sshd デーモンを止め、アップグレードする。
    4. インストール後に新しい sshd デーモンを起動する。

2.1. 現在インストールされている OpenSSH のバージョン番号を調べる

行先案内板

2.1.1. 一般的な調べ方

現在インストールされている OpenSSH のバージョンを調べるのに一番てっとり早い方法は、以下のコマンドを実行してみることです:

$ which ssh (ssh のパス名を表示する)
/usr/bin/ssh
$ ssh -V (ssh クライアントのバージョンを表示する)
OpenSSH_4.3p2, OpenSSL 0.9.7e-p1 25 Oct 2004

これにより、ssh コマンドがインストールされている位置と そのバージョン番号を知ることができます。

また、sshd サーバデーモンのバージョン番号 (通常、これは sshコマンドのバージョン番号と同じはずです) を知りたい場合は、telnet コマンドを使って ローカルホストに接続してみるという手もあります:

$ telnet localhost 22
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-1.99-OpenSSH_4.3

ここで表示される SSH-1.99 はこのサーバがサポートしているプロトコル番号で、 OpenSSH_4.3 がソフトウェアのバージョンを表しています。 [脚注: この場合、OpenSSH-4.3p2 などの p2 はつきません。]

2.1.2. Red Hat で OpenSSH のバージョンを調べる

Red Hat では、以下のようにしてインストールされている パッケージとその関連ファイルを調べることもできます (下線部がバージョン番号です) :

$ rpm -qa | grep -i openssh (インストールされているパッケージのうち、名前に "openssh" を含むものを検索)
openssh-4.3p2-1
openssh-server-4.3p2-1
openssh-clients-4.3p2-1
openssh-askpass-4.3p2-1
openssh-askpass-gnome-4.3p2-1
$ rpm -ql openssh (パッケージ openssh に所属するファイルを表示)
/etc/ssh
/etc/ssh/moduli
/usr/bin/scp
/usr/bin/ssh-keygen
/usr/libexec/openssh
/usr/libexec/openssh/ssh-keysign
...

Red Hat 系の Linux では、OpenSSH は openssh-serveropenssh-clients など いくつかのパッケージに分かれて管理されています。したがって、インストール時にもこれと同じ構成の パッケージを作成する必要があります。

2.1.3. Solaris で OpenSSH のバージョンを調べる

Solaris の場合、デフォルトでは "Sun SSH" と呼ばれる OpenSSH の改造版がインストールされています。

$ pkginfo -i | grep -i ssh (インストールされているパッケージのうち、名前に "ssh" を含むものを検索)
system      SUNWsshcu                        SSH Common, (Usr)
system      SUNWsshdr                        SSH Server, (Root)
system      SUNWsshdu                        SSH Server, (Usr)
system      SUNWsshr                         SSH Client and utilities, (Root)
system      SUNWsshu                         SSH Client and utilities, (Usr)
$ pkgchk -l SUNWsshcu (パッケージ SUNWsshcu に関連するファイルを表示)
Pathname: /usr
Type: directory
...

FreeBSD や Mac OS X では、OpenSSH は独立したパッケージではなく 基本システムとして組み込まれています。

2.2. OpenSSH のファイル構成

行先案内板

2.2.1. プログラムのファイル構成を調べる

ほかの UNIX プログラムと同様、 OpenSSH もシステム上の決まったディレクトリにインストールされます。 表openssh-pathnames に各プログラムがインストールされる標準的なパス名を示しました。 ここで PREFIX は OpenSSH がインストールされる基底となる パス名のことで、OpenSSH が標準で含まれているオペレーティングシステムでは これはすべて /usr になっています。 OpenSSH をソースコードからインストールした場合、 これはデフォルトで /usr/local になります。 なお、ここに示したパス名はあくまで一例であり、 ディストリビューションによっては一部のパス名が異なっていることがあります。
表 openssh-pathnames. OpenSSH のプログラムとその標準的なパス名 (カッコで囲まれているものはユーザが直接は実行しないもの)
PREFIX/bin/ssh (slogin)OpenSSH クライアント プログラム
PREFIX/bin/scpファイルコピー プログラム
PREFIX/bin/sftpファイル転送プログラム (SFTP)
PREFIX/bin/ssh-keygen公開鍵・秘密鍵 管理ユーティリティ
PREFIX/bin/ssh-agent認証エージェント
PREFIX/bin/ssh-add認証エージェントの鍵管理ユーティリティ
PREFIX/bin/ssh-keyscan認証エージェントの鍵管理ユーティリティ
PREFIX/sbin/sshdOpenSSH サーバ デーモン
(PREFIX/libexec/sftp-server)(SFTP サーバモジュール)
(PREFIX/libexec/ssh-keysign)(ホスト認証用プログラム)
(PREFIX/libexec/ssh-rand-helper)(乱数生成用プログラム)
(PREFIX/libexec/ssh-askpass)(認証用パスワード確認プログラム)
注意
ユーザがここに書かれているプログラムすべてを「コマンド」として 実行するわけではありません。とくに PREFIX/libexec/以下にある プログラムは通常ユーザが実行することはまれで、これらはすべてそれ以外の プログラム (クライアントあるいはサーバプログラム) から必要に応じて呼び出されます。

2.2.2. 設定ファイルのファイル構成を調べる

次に OpenSSH の設定ファイルの構成を示します (表 openssh-configs)。 SYSCONFDIR は、ほとんどオペレーティングシステムでは /etc/ssh になっています。 [脚注: Mac OS X では /etc です。] ただしソースコードからインストールした場合は PREFIX/etc と同じになります。 ソースコードから新規に OpenSSH をインストールする場合、システムの OpenSSH と 設定ファイルを共有したい場合は configure (2.4.1. configure スクリプトの実行と make 参照) のときに、 この SYSCONFDIR をシステムと同じにする必要があります。
表openssh-configs. OpenSSH の設定ファイルと鍵ファイル
SYSCONFDIR/ssh_configOpenSSH クライアント設定ファイル (すべてのユーザ用)
SYSCONFDIR/sshd_configOpenSSH サーバ設定ファイル
SYSCONFDIR/ssh_host_keyホスト秘密鍵 (SSH1 プロトコル用)
SYSCONFDIR/ssh_host_key.pubホスト公開鍵 (SSH1 プロトコル用)
SYSCONFDIR/ssh_host_rsa_keyホスト RSA 秘密鍵 (SSH2 プロトコル用)
SYSCONFDIR/ssh_host_rsa_key.pubホスト RSA 公開鍵 (SSH2 プロトコル用)
SYSCONFDIR/ssh_host_dsa_keyホスト DSA 秘密鍵 (SSH2 プロトコル用)
SYSCONFDIR/ssh_host_dsa_key.pubホスト DSA 公開鍵 (SSH2 プロトコル用)
SYSCONFDIR/moduliDH 鍵交換アルゴリズムで使われる素数の一覧
一口メモ
たいていの場合、システムの OpenSSH では
  • よく使うプログラムは /usr/bin
  • 設定ファイルは /etc/ssh
  • サーバデーモンは /usr/sbin
  • 補助プログラム (ユーザは直接実行しない) は /usr/libexec (あるいは /usr/libexec/openssh)
に入っていると考えてよいでしょう。

このほかにもマニュアルページが格納されるディレクトリや /etc/rc.d などの起動スクリプトがあります。 起動スクリプトについては 2.5. インストール (アップデート) とサーバデーモンの開始 節で説明します。

2.3. ソースコードの入手と正真性検査

2.3.1. ソースコードの入手

ソースコードからコンパイルする場合は、 まず OpenSSH のサイトの「移植版 OpenSSH (portable OpenSSH)」のページ [脚注: http://www.openssh.com/ja/portable.html] を開き、ダウンロードします。tar.gz パッケージは "openssh-4.3p2.tar.gz" などの名前になっており、 各ミラーサイトの /pub/OpenBSD/OpenSSH/portable/ というディレクトリにあります。 このソースコードには、Red Hat および Solaris 用のパッケージを 作成する補助スクリプトがついています。

また、OpenSSH のコンパイルには暗号化をおこなう OpenSSL ライブラリと データ圧縮のための zlib ライブラリが必要です。これらはほとんどのシステムに含まれていますが、 脆弱性があるバージョンもあるので、必ず最新のバージョンにアップデートするようにしてください。 もし何らかの理由でこれらのライブラリが含まれていない場合は、 OpenSSL 配布サイト [脚注: http://www.openssl.org/] や zlib 配布サイト [脚注: http://www.zlib.net/] などから入手し、 インストールしてください。

2.3.2. ダウンロードしたパッケージの正真性を確認する

実は OpenSSH は、2002年に公式サイト上の配布パッケージが何者かによって バックドアを内蔵した「トロイの木馬」に入れ替えられたという歴史をもっています。 [脚注: また、2004年には OpenSSH に関する偽のセキュリティホール情報が流されました。 どうも OpenSSH には敵が多いようです。] そのため、ダウンロードした tar.gz パッケージが 「本物の」OpenSSH 配布ファイルかどうか確かめたい方もいるでしょう。 移植版 OpenSSH のパッケージは責任者である Damien Miller 氏によって 電子署名されており、GnuPG がインストールされていれば 以下の手順でパッケージが偽物かどうか判定することができます。 [脚注: http://www.gnupg.org/ ]

  1. Keyserver のサイト [脚注: http://www.keyserver.net/ ] で Damien Miller氏 (djm@mindrot.org) の公開鍵を入手します。 検索ボックスに Miller氏のメールアドレス "djm@mindrot.org" を入力し、 見つかった鍵のうち KeyID が "86FF9C48" の公開鍵をダウンロードします。
  2. ダウンロードした公開鍵を GnuPG のデータベースに import します。 公開鍵が pubkey.asc という名前で保存されていた場合は以下のように入力します:
    $ gpg --import pubkey.asc
    gpg: WARNING: using insecure memory!
    gpg: please see http://www.gnupg.org/faq.html for more information
    gpg: key 86FF9C48: public key "Damien Miller (Personal Key) <djm@mindrot.org>" imported
    gpg: Total number processed: 1
    gpg:               imported: 1
    gpg: 3 marginal(s) needed, 1 complete(s) needed, classic trust model
    gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
    
  3. OpenSSH をダウンロードしたサイトから、署名ファイル (パッケージの名前が openssh-4.3p2.tar.gz ならば、openssh-4.3p2.tar.gz.asc) をダウンロードします。
  4. 以下のように実行して "Good signature" というメッセージが出たら確認成功です。 "Bad signature" というメッセージが出た場合はファイルが改ざんされています。
    $ gpg --verify openssh-4.3p2.tar.gz.asc openssh-4.3p2.tar.gz
    gpg: WARNING: using insecure memory!
    gpg: please see http://www.gnupg.org/faq.html for more information
    gpg: Signature made Fri Feb 10 19:08:05 2006 EST using DSA key ID 86FF9C48
    gpg: Good signature from "Damien Miller (Personal Key) <djm@mindrot.org>"
    gpg: WARNING: This key is not certified with a trusted signature!
    gpg:          There is no indication that the signature belongs to the owner.
    Primary key fingerprint: 3981 992A 1523 ABA0 79DB  FC66 CE8E CB03 86FF 9C48
    

2.4. ソースコードからのコンパイルとパッケージの作成

行先案内板

2.4.1. configure スクリプトの実行と make

ソースコードから手動でコンパイルするには、 ソースコードをダウンロードしたあとに ./configuremake を実行します。 このとき、システムの正しい位置にインストールするために configure にオプションを与えてやる必要があります。 表openssh-configure-options に OpenSSH をコンパイルするさいの代表的なオプションを示します。
表openssh-configure-options. OpenSSH の configure でよく使うオプション
--prefix=パス名インストール先の基底となるパス名 PREFIX を指定する。
省略時は /usr/local
--sysconfdir=パス名OpenSSH 設定ファイルを格納するディレクトリを指定する。
省略時は PREFIX/etc
--libexecdir=パス名OpenSSH 補助プログラムを格納するディレクトリを指定する。
省略時は PREFIX/libexec
--with-pamPAM のサポート。PAM のモジュールを使用したい場合に必要。
Mac OS X でパスワード認証を行うさいには必ず必要。
--with-tcp-wrappersTCP wrappers のサポート。
/etc/hosts.allow, /etc/hosts.deny を有効にしたいときに必要。
--with-md5-passowrdsMD5 形式のパスワードのサポート。
ほとんどのオペレーティングシステムでは必要。
--with-libedit[=パス名]libedit のサポート。
libedit は readline の互換ライブラリで、 これを使用すると sftp コマンド内で行編集が可能になる。
--without-zlib-version-checkzlib のバージョンを検査しない。

ほとんどのオペレーティングシステムでは、システムの OpenSSH は --prefix--sysconfdir に それぞれ /usr/etc/ssh を指定してコンパイルされています (Red Hat の場合は --libexecdir=/usr/libexec/openssh も必要です)。 システムと同じ場所にインストールする (上書きする) 場合は、 これらのオプションに同じ値を設定する必要があります。

注意すべきオプションのひとつに、--without-zlib-version-check があります。 これは zlib のバージョン検査を意図的に行わないようにするものです。 通常 configure はシステムにインストールされている zlib のバージョンを検査し、 それが脆弱性のあるバージョン (1.2.2 以前) の場合は続行を拒否します。 しかし多くのシステムではセキュリティ・アップデートにより zlib の脆弱性を回避したあとも、 互換性を保つために zlib のバージョン番号は以前のままにしておく傾向があります。 このような場合、最新のセキュリティ・アップデートを適用して システムの zlib にエラーがないことが確信できているのであれば、 このオプションをつけて configure の警告を回避してください。

これ以外のオプションについては configure --help を参照してください。

以下の例は、Red Hat Linux 上で MD5 パスワードと TCP wrappers を有効にした場合の configure の出力結果です:

$ ./configure --with-md5-passwords --with-tcp-wrappers
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
(... 中略 ...)
OpenSSH has been configured with the following options:
                     User binaries: /usr/local/bin   (コマンドがインストールされるパス名)
                   System binaries: /usr/local/sbin  (サーバデーモンがインストールされるパス名)
               Configuration files: /usr/local/etc   (設定ファイルがインストールされるパス名)
                   Askpass program: /usr/local/libexec/ssh-askpass
                      Manual pages: /usr/local/man/manX
                          PID file: /var/run
  Privilege separation chroot path: /var/empty
            sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
                    Manpage format: doc
                       PAM support: no
                 KerberosV support: no
                 Smartcard support: no
                     S/KEY support: no
              TCP Wrappers support: yes   (TCP wrappers がサポートされている)
              MD5 password support: yes   (MD5 形式のパスワードがサポートされている)
                   libedit support: no
       IP address in $DISPLAY hack: no
           Translate v4 in v6 hack: yes
                  BSD Auth support: no
              Random number source: OpenSSL internal ONLY

              Host: i686-pc-linux-gnu
          Compiler: gcc
    Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -std=gnu99
Preprocessor flags:
      Linker flags:
         Libraries: -lwrap  -lresolv -lcrypto -lutil -lz -lnsl  -lcrypt (使用するライブラリ)

configure の実行が終わると、どの機能が有効になっているかが yes あるいは no で表示されます。 欲しい機能が有効になっていなかったり、configure がエラーを出して途中で 止まってしまう場合は 7.1. インストール時のトラブル を参照してください。

2.4.2. バイナリパッケージを作成する

Red Hat の場合

OpenSSH のソースコードには Red Hat 用の RPM ファイルを作成するための .spec ファイルが付属していますので、これを使用します。

# cp openssh-4.3p2.tar.gz /usr/src/redhat/SOURCES
# tar zxf openssh-4.3p2.tar.gz
# rpmbuild -bb openssh-4.3p2/contrib/redhat/openssh.spec

この操作の後、/usr/src/redhat/RPMS/i386 に openssh の RPM パッケージができているはずです。

参考までに、この spec ファイルが使っている configure のオプションを示しておきます:

$ ./configure --prefix=/usr \
        --sysconfdir=/etc/ssh \
        --libexecdir=/usr/libexec/openssh \
        --datadir=/usr/lib/openssh \
        --with-tcp-wrappers \
        --with-rsh=/usr/bin/rsh \
        --with-default-path=/usr/local/bin:/bin:/usr/bin \
        --with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \
        --with-privsep-path=/var/empty/sshd \
        --with-md5-passwords \
        --with-pam

Solaris の場合

Solaris では、以下のようにしてソースファイルからパッケージを作成できます:

$ ./configure --with-pam --with-md5-passwords --with-tcp-wrappers=/usr/sfw
$ make package

この後、ソースコードのディレクトリ中には OpenSSH-OpenSSH_4.3p2-Solaris-sparc.pkg といった名前の パッケージファイルができているはずです。

2.5. インストール (アップデート) とサーバデーモンの開始

行先案内板

ソースコードから手動で OpenSSH をコンパイルする場合、 コンパイルが終了したら、make install を実行することにより OpenSSH の各プログラムと設定ファイルが所定の場所にインストールされます。 パッケージを作成してインストールした場合は、 各オペレーティングシステムによって自動的に実行される動作が違います。

2.5.1. make install でインストールする場合

ソースコードのディレクトリで make install を実行すると、 各プログラムファイルがインストールされたあとに、 configure で指定した SYSCONFDIR に デフォルトの設定ファイルがコピーされます。 ここですでに設定ファイルが同じディレクトリ中に存在していた場合は、 前の設定ファイルがそのまま使われ、上書きはされません。 また、ホスト鍵が存在していない場合は自動的に生成されますが、 すでにホスト鍵が存在している場合にはそれがそのまま使われます。

FreeBSD の場合

システム起動時に sshd サーバデーモンを 開始させるスクリプトは /etc/rc.d/sshd にあります。 ただし、デフォルトではこれは /usr/sbin/sshd を実行するように 設定されているので、/usr/local以下に独自にインストールした デーモンを実行するには、/etc/rc.conf ファイルを以下のように 書き換えてください:

sshd_enable="YES"                    # 起動時に sshd を開始する
sshd_program="/usr/local/sbin/sshd"  # サーバデーモンとして /usr/local/sbin/sshd を使用する

その後、サーバデーモンを開始します:

# /etc/rc.d/sshd start

Mac OS X の場合

Mac OS X では、sshd はデーモンとして走らせるのではなく、 xinetd から起動されるようになっています (設定は /etc/xinetd.d/ssh に記されています)。 sshd は ラッパスクリプト /usr/libexec/sshd-keygen-wrapper 経由で 起動されるようになっており、このスクリプトは最初に起動したとき、 ホスト鍵を自動的に生成します。

システムとは異なるバージョンの OpenSSH を /usr/local 以下などに インストールした場合は、/usr/sbin/sshd のかわりに /usr/local/sbin/sshd などを起動するよう このラッパスクリプトを修正します。 具体的には /usr/libexec/sshd-keygen-wrapper スクリプトの最終行にある、

exec /usr/sbin/sshd $@
の部分を、以下のように書き換えます。
exec /usr/local/sbin/sshd $@

この後、システム環境設定の「共有」パネルから、 「リモートログイン」の設定を「開始」にすれば sshd が開始します。

2.5.2. バイナリパッケージをインストールする場合

Red Hat の場合

Red Hat では 2.4.2. バイナリパッケージを作成する で作成したバイナリパッケージでシステムの OpenSSH をアップデートできます。 rpm コマンドの -U オプションを使って、 システムの OpenSSH をアップデートしてください。

# rpm -U openssh*-4.3p2-*.rpm

設定ファイルは /etc/ssh にコピーされます。 すでに設定ファイルが存在していた場合は、 新しいバージョン用の sshd_config ファイルが /etc/ssh/sshd_config.rpmnew として作成され、 前の設定ファイルはそのまま残ります。 また、ホスト鍵が存在していない場合は自動的に生成され、 sshd サーバデーモンが起動している場合は、 自動的に新しいバージョンが再起動されます。

インストール後、起動時にサーバデーモンを有効にするには以下のように実行します:

# chkconfig sshd on     (起動時に sshd を開始するよう設定)
# service sshd start    (いますぐ sshd を開始する)

Solaris の場合

Solarisでは、2.4.2. バイナリパッケージを作成する で作成したパッケージを pkgadd コマンドでインストールしてください。

# pkgadd -d OpenSSH-OpenSSH_4.3p2-Solaris-sparc.pkg OpenSSH

設定ファイルは /usr/local/etc/ssh にコピーされます。 すでに設定ファイルが存在していた場合は、 前の設定ファイルがそのまま使われ、上書きはされません。 また、ホスト鍵が存在していない場合は自動的に生成されますが、 すでにホスト鍵が存在している場合にはそれがそのまま使われます。

インストール後、次のようにしてサーバデーモンを起動します:

# /etc/rc.d/opensshd start

2.5.3. サーバデーモンが動いていることを確認する

さて、無事にインストールが完了し、 sshd_config 設定ファイルと ホスト鍵ファイルが最低ひとつ存在していれば sshd サーバデーモンは正しく走っているはずです。

サーバデーモンが動いていることを確認するには、 ps コマンドを使うという手もありますが、 telnet コマンドを使ってローカルホストに接続してみるのが確実でしょう (2.1. 現在インストールされている OpenSSH のバージョン番号を調べる 参照)。 もし、ここで期待しているバージョンとは別のバージョン番号が 表示されたら、どこかシステムの別の場所にあるサーバデーモンが 間違って実行されていることがわかります。

サーバデーモンがうまく起動しない場合は 7.2. サーバが起動しない を参照してください。

2.5.4. デフォルト設定を確認する

OpenSSHを新規にインストールした場合の設定ファイルや、 ほとんどのディストリビューションで提供されている OpenSSH の設定ファイルは、 たいていデフォルトで安全なように作られています。しかし、 ディストリビューションごとの都合により、設定の一部が 変更されている場合もあるため、サーバを実際に外部に公開する前には かならず sshd_config 設定ファイルの内容を確認するようにしてください (5.2. sshd を安全に設定する 参照)。
コラム - sudo の勧め

sudo コマンドは root 権限で特定のコマンドを走らせたいときに 使うもので、ほとんどのオペレーティングシステムに標準で含まれています。 筆者はこの sudo をよく利用しています。 sudo の設定ファイル (/etc/sudoers) に、

%wheel          ALL = (ALL) ALL
のような一行を追加しておき、root権限を必要とする ほとんどの作業は su ではなく sudo を 使うようにしています。

sudo のいいところは、実行したコマンドをすべて ログに記録してくれることです。実行日時やそのときのカレントディレクトリなども 同時に記録されるので、あとで自分の作業を思い出す助けになります。

ただし、sudo のすべてが気に入っているわけではありません。 sudo は、設定ファイルの書き方によっては、 特定のユーザにある条件下で特定のコマンドだけを実行させるなどの使い方ができますが、 その文法はややこしく、人為的なミスが入りやすい、ひどい設計になっています。 しかも設定ファイルを間違えると sudo は 簡単にセキュリティホールの元になります。しかし複雑なことをさせず、 簡単な使い方をするぶんには便利なツールであるといえます。


Yusuke Shinyama