OpenSSH

※セキュリティの高い暗号通信を行うソフトです。
 フィンランドのSSH Communications Security 社のsshは
 Ver.2.0以降完全にフリー(無料)ではなくなったので、
 フリーで使用したい方は、OpenSSHを使用するようにしてください。

※OpenSSHは、SSHプロトコルVer1.0/1.5/2.0をサポートしています。
 認証には、パスワードではなくて、「パスフレーズ」を使用します。
 「フレーズ」ですから、多少文字数が長くても可です。通常は10〜30
 文字程度の、忘れないような文字列を使います。スペースも可です。

※なお、OpenSSHにはOpenSSLとZLibが必要なので、これも用意して
 ください。(さらに、わたしの環境では「Libwrap」と「PAM」も必要でした)
 OpenSSHとOpenSSLを一緒に更新する場合は、OpenSSLを先に
 更新しておいてください。

【ダウンロード】
※OpenSSH(openssh-4.0p1.tar.gz)
  http://openbsd.rt.fm/openssh/portable.html

※OpenSSLは、インストールの項を参照してください。
※SSHとSSLはまぎらわしいので、間違わないように!!

※ZLibが必要です。zlib-1.1.4.tar.bz2をダウンロードします(詳細は後述)
 http://www.gzip.org/zlib/

※PAMが必要です。(後述)
  

【展開】
※まず、ZLibからインストールします。

(以下の作業はrootで行ってください)
# cd /usr/src
# bzip2 -cd zlib-1.1.4.tar.bz2 | tar xvf -

【コンパイル】
# cd zlib-1.1.4
# ./configure -s --prefix=/usr
(「-s」はshared libraryを作成するオプションです)

# make

【インストール】
# make install

※これで「zlib」のインストールは終了です。


※次に、OpenSSLをインストールします。
 拙作ホームページ「OpenSSL」をご参照ください。

※次に、PAMをインストールします。
 拙作ホームページ「PAM」をご参照ください。


※次に、OpenSSHをインストールします。
【展開】
(以下の作業はrootで行ってください)
# cd /usr/src
# gzip -cd openssh-4.0p1.tar.gz | tar xvf -

----------------------------------------------------------
【コンパイル】<TurboLinux Server6.1の場合>

# cd openssh-4.0p1
# ./configure --sysconfdir=/etc/ssh
         --bindir=/usr/bin
         --sbindir=/usr/sbin
         --libdir=/usr/lib
         --includedir=/usr/include
         --with-pam
         --with-tcp-wrappers
         --with-ipv4-default
         --with-rsh=/usr/bin/rsh

※オプションはすべて、スペースを入れながら続けて入力します。

※zlibのバージョンでどうしてもエラーがとれない時は、
 オプションとして「--without-zlib-version-check」を追加指定して下さい。


ここでOpenSSLのヘッダとライブラリのバージョンが異なるという
エラーが出た場合は、OpenSSLのインストール作業にて
手作業で「/usr/lib」にコピーしなおしてみてください。

なお、最初の更新の時、わたしの環境では「libwrap」がない、
とエラーになりました。同様のエラーがでる方は、事前にLibwrapを
インストールしておいてください。Libwrapは「tcp_wrappers」に入っています。
拙作ホームページの「tcp_wrappers」を参照ください。
----------------------------------------------------------
【コンパイル】<Laser5 Linux7.2expの場合>【未完成】

# cd openssh-4.0p1
# ./configure --sysconfdir=/etc/ssh
         --bindir=/usr/bin
         --sbindir=/usr/sbin
         --libdir=/usr/lib
         --includedir=/usr/include
         --enable-gnome-askpass
         --with-md5-passwords
         --with-pam
         --with-zlib=/usr/lib

  (オプションはすべて、スペースを入れながら続けて入力します)
----------------------------------------------------------


エラーがなければ、そのまま続行します。
# make clean
# make

【インストール】
# make install
# cp contrib/sshd.pam.generic /etc/pam.d/sshd


※hostキーをつくります
# cd /etc/ssh
# ssh-keygen -t rsa1 -f ssh_host_key -N ""
# ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
# ssh-keygen -t dsa -f ssh_host_dsa_key -N ""


※もし、「sshd」というグループおよびユーザが
 登録されていないときは、ここで登録しておきます。
# groupadd -g 22 sshd
# useradd -g 22 -u 22 sshd


【OpenSSHのコマンド】

 ssh:SSHクライアント
 slogin:sshと同じ
 sshd:SSHデーモン
 scp:ファイルのコピー
 ssh-keygen:認証用の鍵ファイルを作成(公開鍵&秘密鍵)
 ssh-keyscan:他のマシンの公開鍵を集める
 ssh-agent:認証エージェント ユーザの秘密鍵をメモリ内に保持
 ssh-add:ssh-agentに秘密鍵を登録する
 sftp:ファイル転送(FTP)クライアント ただしSSHプロトコルVer2のみ
 sftp-server:ファイル転送(FTP)サーバ ただしSSHプロトコルVer2のみ


【設定】

※ここでは、SSHプロトコルVer.1の設定について説明します。

手順としては

 1.認証用の鍵を作成
 2.公開鍵をサーバに登録
 3.クライアントPCに秘密鍵を保存
 4.クライアントソフトのSSH対応

といった感じになります。

sshを使って直接rootでログインすることはなるべくしないでください。
(「インストールして最初にやること」を参照)
一般ユーザでログインし、必要に応じて「su -」でやってください。

まず、一般ユーザ各自の認証鍵を作成します。
ここでは例としてユーザ名「hoge」、パスフレーズを「Today is fine.」
とします。


【認証用の鍵を作成】
まず、一般ユーザ「hoge」でログインします。

※SSHプロトコルVer.1の場合(TeraTermProの時はこれを指定します)
$ ssh-keygen -t rsa1

※SSHプロトコルVer.2(RSA)の場合
$ ssh-keygen -t rsa

※SSHプロトコルVer.2(DSA)の場合
$ ssh-keygen -t dsa

とすると、鍵ファイルの保存先をきいてきます。デフォルトでOKなのでEnterします。
次にパスフレーズ「Today is fine.」を入力します。

すると、ホームディレクトリ下の「.ssh」というディレクトリ内に、

 identity:秘密鍵
 identity.pub:公開鍵

といったファイルが作成されます。
秘密鍵は他人の目にふれないよう、厳重に管理してください。

【公開鍵をサーバに登録】
上で作成した「identity.pub」を、ホームディレクトリの「.ssh」内に
認証済みファイル(authorized_key)に追加します。
(なければ作成)

$ cd
$ cd .ssh
$ rm authorized_keys
$ cat identity.pub >> authorized_keys

SSHサーバは、この「authorized_keys」に登録された公開鍵を
正当なものとみなします。

認証鍵の作成は、OpenSSHを使うときに1回だけ実行すれば
よいのです。

パスフレーズを変更する場合は、一度「authorized_keys」を削除して、
コピーなり先の手法(cat identity.pub >> authorized_keys)で追加
するなりしてください。複数登録した場合は、その回数分行う必要が
あります。

【クライアントPCに秘密鍵を保存】
ホームディレクトリの「.ssh」内の「identity」を、クライアントPC
に保存するか、FDに保存します。
まちがっても、ネットワーク経由(FTPやSambaなど)でコピー
したりしないでください。(盗聴されていればアウトです)
やはりFD経由で行うのが良いでしょう。

いうまでもないことですが、クライアントPCがLinux/Windows2000/NT
ではなく、Windows95/98の場合は、ハードディスク内への保存は
やめた方が良いと思います。(だれでも見られるので)

【クライアントソフトのSSH対応】
ここでは例として、Windows用のターミナルソフト「TeraTerm Pro」に
SSH機能を追加してみます。この機能追加を実現するソフトは「ttssh」
といいます。(ダウンロードは「http://www.zip.com.au/~roca/ttssh.html」)

まず、通常どおりTeraTerm Proをインストールします。
ttsshのアーカイブファイルを解凍し、すべてのファイルを、
TeraTerm Proをインストールしたフォルダにコピーします。

起動は、「ttssh.exe」で行います。ショートカットをデスクトップ
につくっておくと良いでしょう。

起動したら、接続プロトコルの「SSH」をチェックし、ホスト名に
sshサーバのIP(またはホスト名)を入力します。

ユーザ名とパスフレーズを入力し、接続オプションを
「Use RSA Key to Login」をチェックし、「Private Key File」に
先ほどの秘密鍵の場所を指定します。

これでログインできます。

もし接続できないときは、接続オプションを「Use plain password to login」
にして、パスワード(このときはパスフレーズではない)でログインして
みてください。「Plain(平文の)」といっても、最低限の暗号化はされています。

※クライアントPCがLinuxなら、もっと簡単です。
$ ssh (sshサーバのIP(またはホスト名))
で可能です。

もし現在rootなら、
# ssh (sshサーバのIP(またはホスト名))  -l  hoge
とすると、接続先の一般ユーザ「hoge」でログインできます。

sshで接続しようとした時、ホスト認証チェックでエラーになることがあります。
これは、ホームディレクトリの「.ssh/known_host」に記録
されたデータの不整合によるものです。このファイルを
「vi」で開き、すべての行を削除して保存すれば、次からは
接続できると思います。


※なお、OpenSSHをインストール後、OpenSSLをアップデートした場合、
 バージョンが違ってSSHが機能しないことがあります。このような時は、
 OpenSSHをインストールしなおしてください。