OpenSSL/OpenSSH(SSH1) の設定に関するメモ(2003/02/05)
・Intel-Solaris8 2/02版 (SunOS 5.8)
・OpenSSL は、openssl-0.9.6h を使用
・OpenSSH は、openssh-3.4p1 を使用
・sshでのログイン方法をRSA認証(ホスト秘密キー)に対してのアクセスを行う事とします
OpenSSL とは、Secure Sockets Layer(SSL v2/v3)および Transport Layer Security(TLS v1)を実装した高機能なオープンソースのツールキットである。OpenSSL ツールキットには Apache 形式のライセンスが供与されているため、いくつかの簡単なライセンスの制約下でなら、入手や商用・非商用の利用は自由である。ライセンスの詳細は、LICENCE ファイルを参照すること。
OpenSSH とは、SSH の FREE バージョンである。OpenSSH には rlogin や telnet を置き換える ssh、rcp や ftp を置き換える scp などのプログラムが含まれている。
最新版は OpenSSH 3.4p1 である。これは SSH1プロトコル(1.3/1.5)、SSH2プロトコルをサポートしており、商用版の SSH1/2 と等価的に利用できる。配布や利用に制限のかかる部分はすべて OpenSSL のような外部のライブラリを使用するようになっている。このため、OpenSSH を利用するには OpenSSL が必要となる。
コンパイルには、Zlib および /dev/randam デバイス、および TCP_Wrappers(必須では、ありませんが)のインストールが必要です。インストールが終了すると。ssh(リモートホスト上でコマンドを実行)、slogin(リモートホストにログイン)、scp(リモートホストとの間でファイルをコピー)などのセキュアなコマンドが使えます。
下記のコマンドを実行してする。(結構、時間かかります) が、下線の部分は・・・・?
% cd /opt/local/src
% wget http://www.openssl.org/source/openssl-0.9.6h.tar.gz
% gzip -cd openssl-0.9.6h.tar.gz | tar xvf -
% cd openssl-0.9.6h
% ./Configure --prefix=/usr/local --openssldir=/etc/ssl shared solaris-x86-gcc
※上記赤い部分は、各マシン構成により指定が異なります
% make
% su
# make install
# strip /usr/local/bin/openssl
# make do_solaris-shared
# cp libcrypto.so.0.9.6 /usr/local/lib
# cp libssl.so.0.9.6 /usr/local/lib
# cd /usr/local/lib
# ln -sf libcrypto.so.0.9.6 libcrypto.so.0
# ln -sf libcrypto.so.0.9.6 libcrypto.so
# ln -sf libssl.so.0.9.6 libssl.so.0
# ln -sf libssl.so.0.9.6 libssl.so
※ Configure / configure 時に Perl を使用しますので、必ずちゃんとインストールしてくださいぃ。だめだと下記の様なエラーが出ることがあります。
% perl -v
ld.so.1: perl: 重大なエラー: libgdbm.so.2: open に失敗しました: ファイルもディレクトリもありません
OpenSSH サイトより、Linux版のモジュールをダウンロードし展開する。
% cd /opt/local/src
% wget ftp://ftp.kddlabs.co.jp/OpenBSD/OpenSSH/portable/openssh-3.4p1.tar.gz
% gzip -cd openssh-3.4p1.tar.gz | tar xf -
% cd openssh-3.4p1
% ./configure --prefix=/usr/local \
--sysconfdir=/etc/ssh --with-cflags=-O3 \
--with-tcp-wrappers --with-egd-pool=/var/run/egd-pool
% make
% su
# make install
※ sshd ユーザが作成されていないと WARNING が表示されるが気にしない気にしない! by あとで作成
※ /dev/randam デバイスがインストールされていないと configure 終了時に以下のメッセージが表示されます。
WARNING: you are using the builtin random number collection
service. Please read WARNING.RNG and request that your OS
vendor includes kernel-based random number collection in
future versions of your OS.
1) sshd アカウントを作成します。このユーザが無いと openssh が実行されません。注意点として、root のグループで作成します。
# groupadd sshd
# useradd -g root -d /export/home/sshd -s /bin/tcsh -m sshd2) rootアカウントでログインし、SSH経由でログインするときの認証方法を設定します。 /etc/ssh/sshd_config 内の項目を以下の様に修正する。
Protocol 1,2 ← TTSSH は、ssh2(Protocol 2)をサポートしていません
PermitRootLogin no ← rootのログインを無効
IgnoreRhosts no ← r系コマンドを無効
RhostsAuthentication no ← rhostの認証を無効
RhostsRSAAuthentication no ←
RSAAuthentication yes ←
PasswordAuthentication no ← yes にすると、テキスト認証が可能です
IgnoreUserKnownHosts yes ←
1) sshを自動起動する様に設定します。
# cd /etc/init.d
# vi openssh
# chmod +x openssh
# ln -s /etc/init.d/openssh /etc/rc3.d/S49openssh★ sshd ユーザを作成していないと、次の様なエラーが表示されます。
Privilege separation user sshd does not exist
OpenSSH starting.
1) ログインすべきユーザ(ここでは hoge)で、以下のコマンドを実行します。
% ssh-keygen -t rsa1
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home2/hoge/.ssh/identity):
Created directory '/home2/hoge/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home2/hoge/.ssh/identity.
Your public key has been saved in /home2/hoge/.ssh/identity.pub.
The key fingerprint is:
30:51:ff:5f:b8:33:99:41:ff:ff:ff:ee:c4:b3:4e:34 hoge@ns※ passphrase とは、RSA認証時に要求される文字列を指し、ここで例としている hoge ユーザのパスワードでは、ない事に注意する。
※ ここでは passphrase に 「hogehoge」と設定した。
※ "-c" オプションで、コメントをつけると複数存在するキーの区別がつきやすくなります。2) クライアント認証時に対するファイルの設定を行います。
% cat ~/.ssh/identity.pub > ~/.ssh/authorized_keys
% chmod 600 ~/.ssh/authorized_keys3) クライアントに秘密鍵( ~/.ssh/identity )をファイル転送した後は、サーバ側の秘密鍵を削除します。これは、セキュリティ好ましくないための処置です。
※) "-p" オプションを指定することによりパスフレーズのみを変更することも可能です。
1) 上記説明で作成した秘密鍵( ~/.ssh/identity )を、接続するクライアントに ftp等をして任意の場所にコピーします。でもって属性も 600(ここ重要!) にします。(名前を変えておいた方がいいかも。で、ここでは host_hoge って名前でコピーします)
% mv identity host_hoge
% chmod 600 host_hoge2) コマンドラインから ssh を実行します。が・・・・エラーになります。
% ssh -i host_hoge -l hoge hoge
Permission denied (publickey,keyboard-interactive).3) なぜエラーになるかと言うと、デフォルトで protcol2 でアクセスしにいくのです。ですので・・・
% ssh -i host_hoge -l hoge -1 hoge
Enter passphrase for RSA key 'host_hoge': ← ここで passphrase に入れた 「hogehoge」を
Last login: Wed Jul 17 17:34:56 2002 from xxx.xxx.xxx.xxx
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
hoge@hoge%4) OKっしょ?
1) 上記説明で作成した秘密鍵( ~/.ssh/identity )を、接続するクライアントのハードディスクにコピーします。
2) TeraTerm + TTSH で、SSH接続するサーバを指定します。
3) ”RSA認証鍵を使う”を選択し、個人鍵には先程クライアントのハードディスクにコピーした秘密鍵(identity)のあるディレクトリを指定します。
4) ユーザ名/パスフレーズに、該当の文字列を入れる。
※ いままでの説明でのユーザの場合は、以下の通りとなります。
ユーザ名 : hoge
パスフレーズ : hogehoge
RSA認証鍵を使う : チェック
個人鍵 : 秘密鍵 (identity)のあるディレクトリを指定する5) OKボタンを押下する。
クライアント側の設定(TeraTermのデフォルト設定)
毎回、秘密鍵(identity)の設定、ユーザ名の設定をするのは面倒だと言う場合は、TeraTerm + TTSH の設定を以下の様に設定します。
1) メニューから「設定-SSH認証」を選択し、デフォルトで使用する情報を入力する。
ユーザ名 : hoge
RSA認証鍵を使う : チェック
個人鍵 : 秘密鍵 (identity)のあるディレクトリを指定する2) メニューから「設定-設定の保存」を選択し、teraterm.ini を保存する。
※ TeraTerm の デフォルトインストール先は、"C:\Program Files\TTERMPRO\"
ざれごと・・・
これから・・・ってな具合で、こんなことを覚えておくと とっても 良いです。