Secure Shell デーモン (sshd) は通常、/etc/init.d/sshd スクリプトによりブート時に起動されます。デーモンは、クライアントからの接続を待機します。Secure Shell セッションは、ssh、scp、または sftp コマンドが実行されると開始します。接続を受信するたびに、新しい sshd デーモンがフォークされます。フォークされたデーモンは、鍵の交換、暗号化、認証、コマンドの実行、およびクライアントとのデータ交換を行います。Secure Shell セッションの特性は、クライアント構成ファイルとサーバー構成ファイルによって決定されます。また、コマンド行パラメータを使用することもできます。クライアントとサーバーは、相互に認証する必要があります。認証に成功したあと、ユーザーはコマンドをリモートで実行でき、ホスト間でデータをコピーできます。
サーバー側の sshd デーモンの動作は、/etc/ssh/sshd_config ファイルのキーワードを設定することで変更できます。sshd が起動しているときに、コマンド行オプションを使用することもできます。たとえば、sshd_config により、サーバーにアクセスするときに使用する認証タイプを変更できます。
クライアント側の動作は、Secure Shell のパラメータで変更できます。パラメータの優先順位は次のとおりです。
コマンド行オプション
ユーザーの構成ファイル ($HOME/.ssh/config)
システム全体の構成ファイル (/etc/ssh/ssh_config )
たとえば、Cipher として blowfish に設定されているシステム全体の構成を変更するには、コマンド行に -c 3des を指定します。
v1 のリモートホストは、ホスト (RSA) 鍵とサーバー (RSA) 鍵をクライアントに送信します。サーバー鍵は通常、1 時間ごとに生成され、メモリーだけに格納されます。クライアントは、リモートホスト鍵がローカルホストの $HOME/.ssh/known_hosts ファイルに格納されていることを確認します。次にクライアントは、256 ビットの乱数を生成して、リモートホストのホスト鍵とサーバー鍵を暗号化します。暗号化された乱数は、セッション内での後続のすべての通信を暗号化するときに、セッション鍵として使用されます。
v2 のリモートホストは、ホスト鍵の DSA を使用し、サーバー鍵を生成しません。代わりに共有セッション鍵を、Diffie-Hellman 方式で合意したときに生成します。
v1 のクライアントでは、.rhosts、rhosts とRSA、RAS challenge-response、またはパスワードベースの認証を使用できます。v2 では、.rhosts、DSA、およびパスワードベースの認証だけを使用できます。
認証が完了したら、ユーザーは通常、シェルまたはコマンド実行を要求して Secure Shell を使用します。ssh のオプションを使用すれば、擬似端末を配置したり、X11 あるいは TCP/IP の接続を転送したり、セキュリティ保護された接続上で ssh-agent を有効にしたりすることができます。ユーザーセッションの基本手順は次のとおりです。
ユーザーがシェルまたはコマンドの実行を要求し、セッションモードを開始します。
セッションモードでは、データは端末を通してクライアント側に送受信され、シェルまたはコマンドを介してサーバー側に送受信されます。
ユーザープログラムを終了します。
すべての X11 および TCP/IP 接続の転送を停止します。ただし、既存の X11 と TCP/IP 接続は、すべて開いたままです。
サーバーはコマンド終了をクライアントに送信し、両サイドの接続が終了します。