OpenSSHのインストール
OpenSSHは、どの種類のLinuxおよびUnixでも動作しますし、WindowsでさえもCygwinを通じて動作します。完全なCygwinをインストールしたくないユーザーはSSHWindowsを使用することができます。SSHWindowsはWindows用の簡素化されたSSHサーバーで、OpenSSHとCygwinをベースにしています。クライアントしか必要としないWindowsユーザーは、PuTTYがあれば十分でしょう。
いつも利用しているパッケージリポジトリからOpenSSHを入手するか、OpenSSHのWebサイトからソースを取得してください。
SSHデーモンの開始と停止
Red Hat系のシステムでは次のようにします。
# /etc/init.d/sshd start # /etc/init.d/sshd stop
Debian系のシステムでは次のようにします。
# /etc/init.d/ssh start # /etc/init.d/ssh stop
接続先のシステムでSSHデーモンが動作していて、ポート22が開かれていなければなりません。まず接続してリモートホストの「ホスト鍵」をダウンロードする必要があります。そうすれば、自分がパスワードを持っている任意のアカウントに接続できます。この例では、別のユーザーアカウントへのLAN接続を示しています。
carla@stinkpad:~$ ssh -l ftp_admin ftpserver The authenticity of host 'ftpserver (192.168.1.15)' can't beestablished. RSA key fingerprint is a7:c6:70:3e:00:77:73:ed:90:b1:9a:bc:e7:d5:ba:32. Are you sure you want to continue connecting (yes/no)?
ここでyesと入力すると、次のように表示されます。
Warning: Permanently added 'ftpserver 192.168.1.15' (RSA) to thelist of known hosts. ftp_admin@ftpserver's password: Linux ftpserver 2.4.21 #1 Sun Dec 3 11:03:21 PDT 2004 i686 GNU/Linux Libranet GNU/Linux Last login: Sat Dec 2 10:17:45 from :0.0 ftp_admin@ftpserver:~$
シェルプロンプトをよく見てください。この時点で、すでにリモートホストftpserverにログインしており、そのマシンを直接操作しているような感覚でコマンドを実行できる状態になっています。ftpserverの公開ホスト鍵のコピーは自分のローカルの~/.ssh/known_hostsに格納されます。
ホスト鍵の生成
OpenSSHインストールでは、RSAホスト鍵とDSAホスト鍵のセットが生成されているはずです(両方とも暗号的に強いので、どちらを使用してもかまいません)。これらは/etc/ssh/に格納されています。もしないか、それらを変更したければ、次のようにしてください。
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygenによって秘密鍵と公開鍵の両方が生成され、.pub拡張子が付けられます。強力なパスフレーズを工夫することが大切です。このパスフレーズは頻繁に使うものなので、入力しやすいものでなければなりません。無理に記憶しようとせずに、紙に書き留めて安全な場所に保管してください。筆者の場合は、いつも持ち歩いている手帳に書き留めてあり、その写しを鍵のかかるファイルキャビネットに保管しています。パスフレーズでは、辞書に載っているような語を避けるのが賢明です。英字を数字に置き換えて、たとえば「h3ll0, th1s is mai l33t p4ssphr4se」などとするのがよいでしょう。
上の例ではデフォルトの鍵名を使用しています。鍵には好きな名前を付けることができるので、「ftp_server_key」のようにすれば、サーバーの管理用のアカウントを作成するときに便利です。別の名前を使用する場合は、次のように、/etc/ssh/sshd_configに記載することを忘れないでください。
# HostKeys for protocol version 2 HostKey /etc/ssh/ftp_server_key
ホスト鍵を無闇に変更してはいけません。接続しようとする設定済みのすべてのクライアントが、次のような恐ろしい警告を受け取ることになるからです。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middleattack)!
クライアントは新しい鍵をダウンロードできます。とはいえ、ホスト鍵を変更するときは、必ずユーザーたちに知らせておくべきです。
「man-in-the-middle attack(中間者攻撃)」とは、誰かが鍵交換を途中で横取りして、自分の鍵を挿入することです。リスクは小さいものの、用心深い人たちは他の方法で――スニーカーネット(つまり手渡し)や確立されたSSHセッションを通じて――鍵を転送します。ホスト鍵は平文なので、手作業でコピーすることができます。しかし、わずかに修正しなければなりません。仮に/etc/ssh/ftp_server_key.pubが次のようになっているとします。
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwo+75MsrsXNANKy6U7J2FM0T MaQypEVlkNCVVXbX1nc3U3YnQLxmpwqYdVggGqrqS5IMhGJV5HaUt8PQnZ03K KOU65d3Y/MuX5mrhcI+YtQZN0QudOXOx7RQMAHLluspO6BWARZdHO4FXcn7P3 T6IvURZ3fF5fgymVDwosCr0Pc= root@ftpserver
~/.ssh/known_hostsでは、次のように修正する必要があります。
ftpserver.domain.net, 192.168.1.15 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwo+75MsrsXNANKy6U7J2FM 0TMaQypEVlkNCVVXbX1nc3U3YnQLxmpwqYdVggGqrqS5IMhGJV5HaUt8PQnZ03 KKOU65d3Y/MuX5mrhcI+YtQZN0QudOXOx7RQMAHLluspO6BWARZdHO4FXcn 7P3T6IvURZ3fF5fgymVDwosCr0Pc=
これらはAAAABで始まる分割されていない単一の行でなければなりません。
これで、ftpserverにアカウントを持つユーザーが安全なリモートログインを行うことができます。
公開鍵認証
いろいろなサーバーの管理を担当する場合は、追跡すべきログインがいくつもできてしまいます。そういう場合は、公開鍵認証を使って、さまざまなホストに対して1つのログインを使用するようにしてください。これには自分のシステムログインを保護するという利点もあります。まず新しい公開鍵/秘密鍵ペアを生成して、ホームディレクトリに格納します。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/carla/.ssh/id_rsa): ....
次に新しい公開鍵(id_rsa.pub)を、ログインするすべてのリモートユーザーアカウントの~/.ssh/authorized_keysファイルにコピーします。ログインするときには、アカウントログインの代わりにSSHパスフレーズを入力するよう求められます。
carla@stinkpad:~$ ssh -l ftp_admin ftpserver.domain.net Enter passphrase for key '/home/carla/.ssh/id_rsa': ...
多くのサーバーに対して1つの鍵を使用するか、多くの鍵を使用するか、都合のよいやり方を使用してください。
keychainによる自動ログイン
keychainは小さいながら優れたユーティリティです。起動時にSSHパスフレーズを入力すると、keychainが次の再起動までSSHセッションをすべて自動的に認証します(当然ですが、ワークステーションの物理的なセキュリティに注意を払う必要があります)。keychainでは、cronからSSH転送をスケジュールすることもできます。空のパスフレーズを使用してはなりません。さもないと、秘密鍵が盗まれれば簡単に「なりすまし」を許すことになってしまいます。
まずssh-agentをインストールします。次にkeychainをインストールし、ローカルの~/.bash_profileを編集して、秘密鍵に名前を付けます。
keychain id_dsa
. ~/.keychain/$HOSTNAME-sh秘密鍵が2つ以上ある場合は、次のように秘密鍵どうしをスペースで区切ります。
keychain id_dsa fun_key mon_key
2行目の先頭には必ずドットを付けてください。これにより、Bashが指定のファイルを参照するようになります。
こうして基本的なSSH操作を行います。SSHではもっと有用なタスクをいろいろと行えます。たとえば、ほとんどすべてのプロトコル(X11、POP、FTP)の安全なトンネリング、安全なファイルコピー、ポートフォワーディングなどがあります。詳細については、以下の参考資料を参照してください。
参考資料
- OpenSSH
- Keychain
- Linux Cookbook(OpenSSHの使い方に関する有益な章があります)
- SSH, The Secure Shell: The Definitive Guide


















established.
RSA key fingerprint is a7:c6:70:3e:00:77:73:ed:90:b1:9a:bc:e7:d5:ba:32.
Are you sure you want to continue connecting (yes/no)?