OpenSSH
読み:オープン-エスエスエイチ
外語:OpenSSH

 SSHプロトコルの実装の一つで、BSDライセンスに基づくフリーソフトウェアとして利用・配布されているもの。
目次

概要
 OpenBSDプロジェクトによって開発されているオープンソースのSSH実装で、SSH実装の代表例である。
 OpenSSHは、SSHバージョン1.3、1.5(SSH1)と、2.0(SSH2)のプロトコルに対応し、かつsftpのクライアントとサーバーに対応している。
 OpenSSHでは、rlogin/telnetの代わりのssh、rcpの代わりのscp、ftpの代わりのsftpというクライアント側ソフトの一式を含み、さらにサーバー側のパッケージsshdや、ツールssh-add、ssh-agent、ssh-keysign、ssh-keyscan、ssh-keygen、sftp-serverなどを含む。

特徴

移植
 OpenSSHは、OpenBSD 2.6に初めて搭載された。以降、主としてOpenBSDを対象に開発が続いているが、他のプラットフォーム版もOpenSSH移植チーム(The OpenSSH Portability Team)によってメンテナンスされており、こちらは「Portable OpenSSH」という名で配布されている。
 本家と移植版はバージョン番号で区別される。末尾のほうにp1のように「p」サフィックスが付くのが移植版で、例えば4.4を元に移植された最初の版は4.4p1のようになる。

動作環境
 移植という作業があるためバージョンの新旧はあるが、実に様々なUNIX互換OS上で動作する。
 知られる範囲では、次の環境で動作する(OpenBSD以外はアルファベット順)。
 現在、移植が表明されている環境は、AIX、HP-UX、IRIX、Linux、NeXT、Solaris、OS X、Cygwinの8プラットフォームである。

性能
 OpenSSHがよく使われている理由は、フリーであるだけでなく、その性能にもよる。
 様々な機能が搭載されているが、特に有用なものだけでも、次のようなものがある。

設定方法
 OpenSSHには、意外と「嫌な感じのハマりポイント」があり、その原因究明が困難で無駄な時間を消耗し、解決後は不快な気分になりがちである。
 ここでは「ホスト認証」をしたい場合の、簡単な設定方法と、注意点などを述べる。

想定環境
 説明にあたり、想定する環境を次に示す。

サーバーの設定
 sshdの設定を確認および変更する。
 特に重点的にチェックすべき項目は、次の通り。
 基本的には、このくらいを押さえておけば問題なく運用できるはずである。もしファイル名やディレクトリ名を変更して運用する場合は、その設定も行なうこと。

サーバー準備
 shostで続いて環境整備を行なう。user1でログインして行なう。基本作業を書くが、既にディレクトリがある等の場合、省略可能なものもある。
 cd /home/user1
 mkdir .ssh
 chmod 700 .ssh
 .sshディレクトリは、くれぐれもuser以外の+wパーミッションを立てないこと(+rや+xは良いので、755でも可)。さもないと認証で蹴られ、謎のログイン不能状態に悩むことになる。

クライアント側設定
 クライアントで鍵を作り、公開鍵をサーバー側へ渡す必要がある。その方法は様々あるので、やりやすい方法を選択するべきであろう。
 まずは、chostでの設定。user1でログインして行なう。
 ssh-keygen -t dsa
 このコマンドを使うと、DSAの鍵が作られる。RSAを使いたい場合は「-t rsa」とすればよい。もしSSH1のRSAが使いたいなら、「-t rsa1」である。
 実行すると、次の三つのプロンプトが表示されるが、全てそのままEnterを押せばよい。ホスト認証の場合、大抵はパスワード無しでログインしたいケースであろうから、ここを空にするのである。
 Enter file in which to save the key (/home/user1/.ssh/id_dsa):
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 実行すると、一番目のプロンプトに書かれた場所に鍵が作られる。この場合は、/home/user1/.sshの中に、id_dsaという秘密鍵と、id_dsa.pubという公開鍵が出来る。
 次にすることは、公開鍵id_dsa.pubをサーバーに送る作業である。
 scp id_dsa.pub shost:/home/user1/.ssh/id_dsa.pub
 scpが使えない場合は、サーバーにログインし、viなどを使って編集すると良いだろう。クライアント側でcat id_dsa.pubなどとして表示し、それをクリップボードにコピー、サーバー側でペーストすればよい。

設定完了
 これで一通りの設定は完了した。
 マシンを再起動するか、rootにsuして次のコマンドでsshdを再起動する。
 /etc/rc.d/init.d/sshd restart
 違う場所に置かれている場合は、適時対応すること。これが、停止、起動ともにOKとなれば再起動に成功している。
 いよいよログインすることになる。
 ssh host1
 これで、パスワード無しでログインできたはずである。

トラブルシュート
 ここで最もよく目にするエラーは、次のようなものである。
 Permission denied (publickey,keyboard-interactive).
 括弧の中は設定により変わるので、あまり気にする必要はない。この原因にはいくつかある。
 最も単純なものは、鍵ファイルそのものが無い。次の盲点は、.sshのパーミッションの設定が甘い。特に.sshのパーミッションは分かりにくいので気をつけられたい。
 どうしても見つからない不具合は、クライアント側で-vオプションをつけたり、サーバー側ではsshd_configの設定を「LogLevel DEBUG3」とし、syslogで結果を確認する、などがある。

再検索