[ホーム] -> [Aache + PHP + PostgreSQL 実験室] |
ソースは、OpenSSH のホームページ から入手します。OpenSSH は OpenBSD を中心に開発を進められていて、OpenBSD 以外のプラットフォームの場合、ファイル名のバージョンの後ろに p
が付いています。OpenBSD 以外のプラットフォームは、この p
付きのファイルをダウンロードします。
ダウンロードしたら、ソースを展開し、展開したディレクトリに移動します。
> tar xzvf openssh-3.4p1.tar.gz > cd openssh-3.4p1
次に、configure
と言うスクリプトを実行します。デフォルトでは、/usr/local
にインストールされます。これを変更したい場合は、--prefix
で指定します。設定ファイルを、/etc/ssh
の下にまとめたいなら、--sysconfdir
で指定します。また、アクセス制御を PAM と併用したいなら --with-pam
を指定します。もし、PAM の指定をしないで、パスワードに md5 を使っている場合(最近の Linux は md5 を利用しています)、必ず --with-md5-passwords
を指定してください(--with-pam
を指定した場合はいらない)。これを忘れると、md5 のパスワードのユーザが、パスワード認証が出来なくなります。
> ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam
次に、make をします。
> make
正常に終了したら、root
になって、インストールします。
> su # make install # exit
これで終了です。
root
になって、sshd
コマンドを実行します。
> su # sshd
これでデーモンとして実行されますので、必要であれば、rc.local
にでも書いておいてください。また、サーバの設定ファイルは、sshd_config
というファイルなので、環境に合わせて変更してみてください。変更に必要そうなものだけあげておきます。
# root ユーザがログインできなくなります PermitRootLogin no # パスワード認証が出来なくなります PasswordAuthentication no # Linux 2.2 系列(およびそれ以下)の場合は no にします # これを指定しないと、起動時に Privilege 出来ないと文句言われる Compression no
普通に実行すると(PasswordAuthentication yes
- デフォルトの場合)、パスワード認証を使って SSH でログインできます。ログインするには次のようにします。
> ssh localhost
これで、OS のパスワードを使ってログインできます。ただしこれは、パスワードを知っている人は誰でもログインできてしまうので、あまりよくありません。そこで鍵ペアを作成して、鍵を持っている場合のみログインできるようにします。
鍵を作成するには、次のように ssh-keygen
コマンドを使います。
> ssh-keygen -t dsa > mv ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys > chmod 644 ~/.ssh/authorized_keys
これを実行すると、~/.ssh/id_dsa, ~/.ssh/id_dsa.pub
という二つのファイルが出来ます。~/.ssh/id_dsa
が秘密鍵のファイルで、普段はこのファイルを持ち歩いていてください。そしてログイン先のマシンの ~/.ssh/authorized_keys
というファイルに ~/.ssh/id_dsa.pub
の中身を入れておきます。
ちなみに、パスワードを5文字以上入力しないと、作成できないので注意してください。
ssh
でログインしようとすると、~/.ssh/id_dsa
のパスワードを聞いてきて、それを入力するとログインできるようになります。要点は次の通りです。
~/.ssh/authorized_keys
(パーミッションは 644)というファイルに ~/.ssh/id_dsa.pub
を入れておく
~/.ssh/id_dsa
(パーミッションは 600)を入れておく
~/.ssh/id_dsa.pub
直接利用されることはない
ssh-keygen -p
とする
Windows の SSH クライアントソフトは、DSA タイプの鍵をサポートしていないものも多いです。その場合は RSA v1 タイプの鍵を作成します。
> ssh-keygen -t rsa1 > mv ~/.ssh/identity.pub >> ~/.ssh/authorized_keys > chmod 644 ~/.ssh/authorized_keys
これを実行すると ~/.ssh/identity, ~/.ssh/identity.pub
が出来ます。同じように公開鍵の中身を ~/.ssh/authorized_keys
に入れておきます。DSA タイプと、RSA v1 タイプの両方の公開鍵が、~/.ssh/authorized_keys
に入っていて問題ありません。
普段持ち歩く秘密鍵(id_dsa, identity
)は、絶対他人の手に渡ることのない様にしましょう。また、公開鍵をログイン対象のマシンにコピーするときも、絶対途中で改ざんされることのない様にしましょう(そのマシンに直接フロッピーからコピーするとか)。もし、途中で改ざんされて、他人の公開鍵がコピーされると、その他人がログインできるようになってしまいます。
安全にファイルをコピーしたい場合は、SSH に sftp
という ftp
ライクなツールと、scp
という rcp
ライクなツールが入っています。パスワード認証でも、通信路は暗号化されているので、scp id_dsa.pub ログイン先マシン名:.ssh/authorized_keys
とすることが出来ます。
この公開鍵の設置作業が終わったら、sshd_config
の PasswordAuthentication no
に設定し、パスワード認証が出来ないようにすることをお勧めします(公開鍵を設置したユーザしかログインできない)。もちろん、Telnet など出来ないようにしておくのですよ。
何回も連続して ssh, scp, sftp
を使う場合、毎回パスワードを入力するのが大変な場合、ssh-agent
を常駐させて、ssh-add
で常駐している ssh-agent
にパスワードを登録します。こうしておくと、他の SSH のコマンドを使うと自動的にログインできるようになります。ssh-agent
は、実行した結果、コマンドを画面に出力します(環境変数を設定するように)。これを実行しないといけませんが、普通 Shell の eval
コマンドと組み合わせて使うことで簡単に行えます。
# agent を常駐させ環境変数を設定 > eval `ssh-agent` # agent にパスワードを追加 > ssh-add # www.foo.com に接続(接続先のユーザは現在ログインしてるユーザと同じ) > ssh www.foo.com # host.foo.com にユーザ dareka で接続 > ssh dareka@host.foo.com # ファイルをコピー > scp secret.txt dareka@host.foo.com:data/ # agent の常駐を解除 > eval `ssh-agent -k`