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をインストールしなおしてください。