付録

Last Modified: Wed Mar 2 14:07:59 UTC 2011

付録 A. OpenSSH に関連するファイル

クライアント側

ファイル 説明
各ユーザ
~/.ssh/known_hosts サーバのホスト公開鍵の一覧。ホスト認証時に使用する。 (3.2. ホスト認証のしくみ)
~/.ssh/id_rsa 公開鍵認証で使用する RSA 形式の秘密鍵ファイル。 (4.1.1. クライアント上で秘密鍵と公開鍵ペアを生成する)
~/.ssh/id_dsa 公開鍵認証で使用する DSA 形式の秘密鍵ファイル。 (4.1.1. クライアント上で秘密鍵と公開鍵ペアを生成する)
~/.ssh/config クライアントの個人設定ファイル。 (4.7. 個人用の設定ファイルでさらに快適に)
~/.ssh/identity SSH1 プロトコルの公開鍵認証で使用する秘密鍵ファイル。 (6.7.1. SSH1 プロトコルを使う)
/tmp/ssh-XXXXXXX/agent.pid 認証エージェントとの通信に使う UNIX ドメインソケット。 認証エージェント起動時に自動的に作成される。(4.4.2. 認証エージェントの動作)
クライアントマシン全体
SYSCONFDIR/ssh_config ssh クライアントのデフォルト設定ファイル。 ~/.ssh/config で指定されない設定項目はこのファイルの値が使われる。 (4.7. 個人用の設定ファイルでさらに快適に)
SYSCONFDIR/ssh_host_rsa_key RSA形式のホスト秘密鍵ファイル。Hostbased認証で使用する。(6.6. Hostbased 認証 を使う)
SYSCONFDIR/ssh_host_rsa_key.pub RSA形式のホスト公開鍵ファイル。Hostbased認証を使用する際はこのファイルをサーバ側に登録する。
SYSCONFDIR/ssh_host_dsa_key DSA形式のホスト秘密鍵ファイル。Hostbased認証で使用する。(6.6. Hostbased 認証 を使う)
SYSCONFDIR/ssh_host_dsa_key.pub DSA形式のホスト公開鍵ファイル。Hostbased認証を使用する際はこのファイルをサーバ側に登録する。
SYSCONFDIR/ssh_host_key SSH1 プロトコル用のホスト秘密鍵ファイル。RhostsRSA認証で使用する。
SYSCONFDIR/ssh_host_key.pub SSH1 プロトコル用のホスト公開鍵ファイル。RhostsRSA認証を使用する際はこのファイルをサーバ側に登録する。
/etc/hosts ホスト名と IP アドレスの関連付け情報。
/etc/resolv.conf DNS を利用する際に必要な情報。
/etc/nsswitch.conf DNS、NIS、/etc/hosts 各ファイルの利用方法と優先度が指定されている。

サーバ側

ファイル 説明
各ユーザ
~/.ssh/authorized_keys ユーザがそのマシンにログインできる公開鍵の一覧。 (4.1.2. 公開鍵をサーバに登録する5.4.1. ユーザの公開鍵にオプションを指定する)
~/.ssh/known_hosts クライアントのホスト公開鍵の一覧。Hostbased認証でクライアント認証に使用される。 (6.6. Hostbased 認証 を使う)
~/.ssh/.shosts Hostbased認証でユーザの認証に使用される。
~/.ssh/.rhosts Hostbased認証でユーザの認証に使用される。
~/.ssh/environment ユーザのログイン時に自動的に設定される環境変数を指定する。 (サーバ側の PermitUserEnvironment設定項目が yes の場合のみ有効)
~/.ssh/rc ユーザのログイン時に自動的に実行されるスクリプトファイル。
~/.hushlogin このファイルが存在する場合、ユーザのログイン時に前回のログイン時刻や /etc/motd などは表示されない。
サーバマシン全体
SYSCONFDIR/sshd_config sshd サーバデーモンの設定ファイル。 (5.2. sshd を安全に設定する)
SYSCONFDIR/ssh_host_rsa_key RSA形式のホスト秘密鍵ファイル。クライアントが接続した際、ホスト認証に使用する。(3.2. ホスト認証のしくみ)
SYSCONFDIR/ssh_host_rsa_key.pub RSA形式のホスト公開鍵ファイル。ユーザの参照用。
SYSCONFDIR/ssh_host_dsa_key DSA形式のホスト秘密鍵ファイル。クライアントが接続した際、ホスト認証に使用する。(3.2. ホスト認証のしくみ)
SYSCONFDIR/ssh_host_dsa_key.pub DSA形式のホスト公開鍵ファイル。ユーザの参照用。
SYSCONFDIR/ssh_host_key SSH1 プロトコル用のホスト秘密鍵ファイル。クライアントが接続した際、ホスト認証に使用する。(3.2. ホスト認証のしくみ)
SYSCONFDIR/ssh_host_key.pub SSH1 プロトコル用のホスト公開鍵ファイル。ユーザの参照用。
SYSCONFDIR/ssh_known_hosts クライアントのホスト公開鍵の一覧。Hostbased認証で使用する。 (6.6. Hostbased 認証 を使う)
SYSCONFDIR/shosts.equiv Hostbased認証を許可するクライアントとユーザの一覧。 (6.6. Hostbased 認証 を使う)
SYSCONFDIR/sshrc 各ユーザのログイン時に自動的に実行されるスクリプトファイル。
/etc/passwd ユーザのアカウント情報が記録されるファイル。 各ユーザのホームディレクトリ、利用するログインシェルなどが記録される。 (5.3. ユーザアカウントを管理する)
/etc/shadow (/etc/master.passwd) ユーザのパスワードを表すハッシュ文字列が記録される。 (5.3.2. 公開鍵認証を使っているユーザのパスワード認証を禁止する)
/etc/hosts.allow 接続を許可するホスト名一覧。tcp_wrappers によって使われる。 (5.2.4. システム全体で特定のホストからのみログインを許可する)
/etc/hosts.deny 接続を禁止するホスト名一覧。tcp_wrappers によって使われる。 (5.2.4. システム全体で特定のホストからのみログインを許可する)
/etc/hosts ホスト名と IP アドレスの関連付け情報。
/etc/resolv.conf DNS を利用する際に必要な情報。
/etc/nsswitch.conf DNS、NIS、/etc/hosts 各ファイルの利用方法と優先度が指定されている。
/etc/syslogd.conf syslogd の設定ファイル。 sshdサーバデーモンのログはこのファイルに従って出力される。
/var/run/sshd.pid sshdサーバデーモンのプロセス ID を格納したファイル。sshd起動時に自動的に作成される。

付録 B. OpenSSH に関連する環境変数

クライアント側

ユーザが ssh コマンドを実行したさいに利用される環境変数は以下のとおりです。
変数名 内容
HOME ユーザのホームディレクトリのパス名。~/.ssh/ ディレクトリ内のファイルの参照に必要。
TERM 現在使用している端末タイプ。文字ベースの画面制御に使われる。例: xterm
DISPLAY (X11転送を使用する場合) クライアント上の X11 ディスプレイ名。X11 転送に必要。
XAUTHORITY (X11転送を使用する場合) クライアントで X11 を使う際に必要な認証用ファイルのパス名。
SSH_AUTH_SOCK (認証エージェントを使用する場合) 認証エージェントとの通信用ソケットのパス名。 例: /tmp/ssh-PhjNEg6596/agent.6596
SSH_AGENT_PID (認証エージェントを使用する場合) 認証エージェントのプロセスID。

サーバ側

ユーザがリモートホストにログインした場合、 sshd は以下の優先順位でそのプロセスの 環境変数を設定します:

  1. ~/.ssh/authorized_keys ファイル中の environment 項目で指定されている環境変数
  2. sshd が標準で設定する環境変数 (表 ssh-default-env)。
  3. ~/.ssh/environment ファイルに書かれている環境変数
表 ssh-default-env. sshd が標準で設定する環境変数
変数名 内容
USER ログインしたユーザ名。
LOGNAME USERと同じ。
HOME ユーザのホームディレクトリのパス名。
PATH デフォルトの実行パス。通常は /usr/local/bin:/bin:/usr/bin だが、 configure--with-default-path オプションで変更可能。
SSH_TTY (仮想端末が割り当てられている場合) 現在の端末名。
TERM (仮想端末が割り当てられている場合) 現在使用している端末タイプ。クライアントから受けつがれる。
DISPLAY (X11転送を使用する場合) 仮想的なディスプレイ名。例: localhost:10.0
XAUTHORITY (X11転送を使用する場合) 認証用ファイルのパス名。通常は ~/.Xauthority
SSH_AUTH_SOCK (サーバ側に認証エージェントの転送を許可している場合) 認証エージェントとの通信用ソケットのパス名。
SSH_CLIENT 現在の SSH セッションで使われている TCP接続に関する情報。 例: 192.168.1.10 1729 22
SSH_ORIGINAL_COMMAND (強制コマンド指定オプションを指定した場合) そのユーザがもともと実行しようとしていたコマンドライン文字列。
SSH_ASKPASS ssh-askpassプログラムのパス名。(ssh-askpassプログラムは X11用のプログラムで、標準入力が使えない場合に ssh または ssh-add が ユーザにパスワードやパスフレーズの入力を求めるさいに使われる。)
MAIL メールスプールのパス名。
TZ サーバ側のタイムゾーン。サーバ側で sshd を起動したときの値が使われる。

付録 C. OpenSSH 各種コマンドラインオプション一覧

C.1. ssh

sshコマンドは OpenSSH のクライアントプログラムです。 これは sshdサーバデーモンに TCP 経由で接続し、暗号化された通信をおこないます。 また、このプログラムは scpsftp などのコマンドからも 間接的に実行されます。

文法:

$ ssh [オプション] [ユーザ名@]ホスト名
ssh を実行します。

オプション:

文法 名前
説明
-1 または -2 SSH プロトコルを指定
使用する SSH プロトコルのバージョンを SSH1 (-1) あるいは SSH2 (-2) に 強制的に指定します。 ssh_config設定ファイルでは Protocol設定項目に相当します。 (6.7.1. SSH1 プロトコルを使う)
-a または -A エージェント転送の可否
サーバ側への認証エージェントの転送を禁止する (-a) か、 あるいは許可する (-A) かを指定します。 ssh_config設定ファイルでは ForwardAgent設定項目に相当します。 (4.4.3. 認証エージェントを転送する)
-c 暗号化アルゴリズム1,暗号化アルゴリズム2,... 暗号化アルゴリズムを指定
使用する暗号化アルゴリズムとその優先順位をカンマで区切って指定します。 ssh_config設定ファイルでは Ciphers設定項目 (SSH2) または Cipher設定項目 (SSH1) に相当します。 (4.7.3. 設定を変えて OpenSSH を高速化する)
-C 圧縮を許可
データ圧縮を利用することにより通信を高速化します。 ssh_config設定ファイルでは Compression yesに相当します。 (4.7.3. 設定を変えて OpenSSH を高速化する)
-e エスケープ文字 エスケープ文字を指定
ログイン後に使用できるエスケープ文字 (デフォルトはチルダ記号 “~”) を変更します。 ssh_config設定ファイルでは EscapeChar設定項目に相当します。 (4.1.3. 公開鍵認証でログインする)
-f バックグラウンド化
サーバにログインしたあと自動的に ssh をバックグラウンドに移行させます。 (4.5. X11 転送を使う)
-F 個人設定ファイル 個人設定ファイルを指定
個人設定ファイルのパス名を指定します (デフォルトは ~/.ssh/config)。 このオプションが指定されると、システムの設定ファイル ssh_config の内容は無視されます。 (4.7. 個人用の設定ファイルでさらに快適に)
-i 秘密鍵ファイル 秘密鍵ファイルを指定
公開鍵認証で使用する秘密鍵ファイル (デフォルトは ~/.ssh/id_rsa あるいは ~/.ssh/id_dsa、 SSH1プロトコルの場合は ~/.ssh/identity) を指定します。 ssh_config設定ファイルでは IdentityFile設定項目に相当します。 (4.1.3. 公開鍵認証でログインする)
-l ユーザ名 ログインするユーザ名を指定
サーバにログインするユーザ名を指定します。コマンドライン引数の 「ユーザ名@」の部分と同じです。 ssh_config設定ファイルでは User設定項目に相当します。 (4.1.3. 公開鍵認証でログインする)
-L ポートX:ホストY:ポートZ ローカル→リモート (L) のポート転送
クライアント側の ポートX に行われた TCP接続をサーバ側 ホストYポートZ に転送します。 この機能は、ssh_config設定ファイルでは LocalForward設定項目で指定できます。 (6.2.1. ローカル→リモート (L) のポート転送)
-N コマンド実行を禁止
サーバ側でコマンドを実行せず、ポート転送などの機能のみを開始します。 (6.2. ポート転送)
-o 設定項目=値 設定項目を変更
コマンドラインからじかに ssh クライアントの 設定項目を変更します。 (4.7. 個人用の設定ファイルでさらに快適に)
-p ポート番号 接続するポート番号を指定
サーバに接続する TCP ポート番号 (デフォルトは 22) を指定します。 ssh_config設定ファイルでは Port設定項目に相当します。 (5.5.3. パスワード推測攻撃を避ける6.4.2. ポートを変えて複数のホストにログインする)
-R ポートX:ホストY:ポートZ リモート→ローカル (R) のポート転送
サーバ側の ポートX に行われた TCP接続をクライアント側 ホストY ポートZ に転送します。 この機能は、ssh_config設定ファイルでは RemoteForward設定項目で指定できます。 (6.2.2. リモート→ローカル (R) のポート転送)
-g 外部のホストにもポート転送を許可
ポート転送をおこなう際、クライアントマシン以外のホストもポート転送が利用できるようにします。 ssh_config設定ファイルでは GatewayPorts yes に相当します。 (6.2.3. 応用1 - HTTP のみに対応した簡易 VPN を構築する)
-T または -t または -tt 仮想端末使用の可否
サーバへのログイン時に仮想端末を使用しない (-T) か、使用する (-t) か、 あるいは強制的に使用する (-tt) かを指定します。 (6.4.1. 複数回に分けてログインする)
-v または -q デバッグメッセージの可否
デバッグ出力を表示する (-v) か、 あるいはなるべくメッセージを表示しない (-q) ようにします。 -vオプションを増やすと出力が詳細になります (最高 3つまで)。 ssh_config設定ファイルでは LogLevel設定項目に相当します。 (7.3.1. ssh をデバッグモードで実行する)
-w クライアント側インターフェイス番号:サーバ側インターフェイス番号 VPNの指定
クライアント側とサーバ側でそれぞれ指定されたネットワークインターフェイスを使って、VPN のトンネリングを開始します。 (6.3. VPN機能を使う)
-V バージョン番号を表示
ssh コマンドのバージョン番号を表示します。 (2.1. 現在インストールされている OpenSSH のバージョン番号を調べる)
-x または -X または -Y X11転送の可否
X11転送を禁止する (-x) か、許可する (-X) か、 あるいは信頼された X11 転送を許可する (-Y) かを指定します。 ssh_config設定ファイルでは ForwardX11 および ForwardX11Trusted 設定項目に相当します。 (4.5. X11 転送を使う)

本文中では説明されていない機能に関するオプション

-4 または -6 IPv4 あるいは IPv6 を指定
ネットワーク接続に IPv4 (-4) あるいは IPv6 (-6) アドレスを使います。 ssh_config設定ファイルでは AddressFamily設定項目に相当します。
-b IPアドレス 接続元アドレスを指定
複数の IP アドレスを持つマシンで、サーバへの TCP接続のさい指定された IPアドレスを接続元として使用します。 ssh_config設定ファイルでは BindAddress設定項目に相当します。
-D [IPアドレス:]ポート番号 動的なポート転送を指定
動的なポート転送を開始します。ssh クライアントは 指定されたポート番号 (および IPアドレス) で SOCKS サーバとして動きます。 この機能は、ssh_config設定ファイルでは DynamicForward設定項目で指定できます。
-I スマートカードデバイス スマートカードを利用
公開鍵認証時に、指定されたスマートカードデバイスに格納されている RSA秘密鍵を使用します。 ssh_config設定ファイルでは SmartcardDevice設定項目に相当します。
-k GSSAPI証明書の転送を禁止
サーバ側への GSSAPI証明書の転送を禁止します。 ssh_config設定ファイルでは GSSAPIDelegateCredentials noに相当します。
-m MACアルゴリズム1,MACアルゴリズム2,... MACアルゴリズムを指定
データの混入や改ざんを検出するのに使う複数の MAC アルゴリズムをカンマで区切って指定します。 ssh_config設定ファイルでは MACs設定項目に相当します。
-M マスターモードを指定
sshを「マスターモード」にします。 マスターモードの sshプロセスは -Oオプションで外部から制御が可能です。 ssh_config設定ファイルでは ControlMaster yes に相当します。
-n 標準入力の使用を禁止
標準入力の使用を禁止します。
-O 制御コマンド マスターモードのsshを制御
マスターモードで走行中の sshプロセスにコマンドを送信します。
-s サブシステム サブシステムを指定
ログイン時に利用するサブシステム名を指定します。
-S 制御用ソケット 制御用ソケットを指定
sshをマスターモードで実行するさい、制御用の通信に使う UNIXドメインソケットのパス名を指定します。 ssh_config設定ファイルでは ControlPath設定項目に相当します。

C.2. sshd

sshdサーバデーモンは OpenSSH のサーバプログラムです。 これは sshクライアントからの TCP 接続を受けつけ、暗号化された通信をおこないます。 sshdサーバデーモンによって認証されたユーザはそのサーバにログインできます。

文法:

$ /絶対パス名/sshd [オプション]
sshd を起動します。

注意: sshdは必ず絶対パスで起動する必要があります。

オプション:

-d デバッグモード
sshd をデバッグモードで実行します。 デバッグモードで実行されたsshdプロセスは forkせず、 クライアントからの接続を一度しか受けつけません。 -dオプションを増やすと出力が詳細になります (最高 3つまで)。 (5.5.2. sshd のログを見る7.3.2. sshd をデバッグモードで実行する)
-f 設定ファイル 設定ファイルを指定
sshd の各設定項目が記されたファイル (デフォルトは OpenSSH 用設定ディレクトリにある sshd_config) を指定します。 設定ファイルは sshd を起動するのに必ず必要です。 (5.2. sshd を安全に設定する6.5.1. 一般ユーザ権限で sshd を走らせる)
-h ホスト秘密鍵ファイル ホスト秘密鍵を指定
sshd サーバデーモンがホスト認証に使うホスト秘密鍵ファイル (デフォルトは OpenSSH 用設定ディレクトリにある ssh_host_rsa_keyssh_host_dsa_key および ssh_host_key) を指定します。 このオプションは複数回指定できます。 sshd_config設定ファイルでは HostKey設定項目に相当します。 (7.2.2. sshd の初期化に関するエラー)
-i inetdから起動
sshdがデーモンとして独立して実行されるのではなく、 inetdから起動される場合に指定します。(2.5. インストール (アップデート) とサーバデーモンの開始)
-o 設定項目=値 設定項目を変更
コマンドラインからじかに sshd設定項目を変更します。 (5.2. sshd を安全に設定する)
-p ポート番号 接続を待ち受けるポート番号を指定
sshd サーバデーモンがクライアントからの TCP 接続を待ち受けるポート番号 (デフォルトは 22) を指定します。 このオプションを複数回指定した場合、複数のポートが listen されます。 sshd_config設定ファイルでは Port設定項目に相当します。 (5.5.3. パスワード推測攻撃を避ける)
-t 設定ファイルの文法をチェックする
sshd_config設定ファイルの文法をチェックします。 (5.2. sshd を安全に設定する)

本文中では説明されていない機能に関するオプション

-4 または -6 IPv4 あるいは IPv6 を指定
ネットワーク接続に IPv4 (-4) あるいは IPv6 (-6) アドレスを使います。
-b ビット数 サーバ鍵のビット数を指定
SSH1 プロトコルで、sshd サーバデーモンが内部的に保持する 暗号鍵 (サーバ鍵) のビット数 (デフォルトは 768ビット) を指定します。 sshd_config設定ファイルでは ServerKeyBits設定項目に相当します。
-D デーモン化を禁止
sshd がデーモンとして fork するのを禁止します。
-e ログを標準エラー出力に表示
ログを syslogd 経由ではなく標準エラー出力に表示します。
-g ログイン猶予時間 ログインにかけられる最大時間を指定
クライアントが認証を終えるまでにかけることのできる最大の時間 (デフォルトは 120秒) を指定します。 この時間を超えてもクライアントがログインできない場合、サーバは自動的に接続を切ります。 sshd_config設定ファイルでは LoginGraceTime設定項目に相当します。
-k サーバ鍵生成間隔 サーバ鍵を再生成する間隔を指定
SSH1 プロトコルで、sshd サーバデーモンが内部的に保持する 暗号鍵 (サーバ鍵) が再生成される間隔 (デフォルトは 3600秒ごと) を指定します。 sshd_config設定ファイルでは KeyRegenerationInterval設定項目に相当します。
-u バイト数 utmpの最大サイズを指定
ユーザのログイン履歴を保持する utmpエントリに残すことのできるホスト名文字列の 最大長を指定します。

C.3. scp

scpコマンドは、 sshコマンドを利用した安全なファイル転送プログラムです。 (4.3.1. scp をつかったファイル転送)

文法:

$ scp [オプション] パス名1 [パス名2 ...] [ユーザ名@]ホスト名:[パス名]
ローカル→サーバ上にファイル転送をおこないます。
$ scp [オプション] [ユーザ名@]ホスト名:パス名1 [[ユーザ名@]ホスト名:パス名2 ...] パス名
サーバ→ローカル上にファイル転送をおこないます。

オプション:

-1 または -2 SSH プロトコルを指定
使用する SSH プロトコルのバージョンを SSH1 (-1) あるいは SSH2 (-2) に 強制的に指定します。 sshコマンドの -1-2オプションと同じです。 (6.7.1. SSH1 プロトコルを使う)
-c 暗号化アルゴリズム1,暗号化アルゴリズム2,... 暗号化アルゴリズムを指定
使用する暗号化アルゴリズムとその優先順位を指定します。 sshコマンドの -cオプションと同じです。 (4.7.3. 設定を変えて OpenSSH を高速化する)
-C 圧縮を許可
データ圧縮を利用することにより通信を高速化します。 sshコマンドの -Cオプションと同じです。 (4.7.3. 設定を変えて OpenSSH を高速化する)
-F 個人設定ファイル 個人設定ファイルを指定
個人設定ファイルのパス名を指定します (デフォルトは ~/.ssh/config)。 sshコマンドの -Fオプションと同じです。 このオプションが指定されると、システムの設定ファイル ssh_config の内容は無視されます。 (4.7. 個人用の設定ファイルでさらに快適に)
-i 秘密鍵ファイル 秘密鍵ファイルを指定
公開鍵認証で使用する秘密鍵ファイルを指定します。 sshコマンドの -iオプションと同じです。 デフォルトは ~/.ssh/id_rsa あるいは ~/.ssh/id_dsa です。 (4.1.3. 公開鍵認証でログインする)
-o 設定項目=値 設定項目を変更
ssh クライアントの設定項目を変更します。 sshコマンドの -oオプションと同じです。 (4.7. 個人用の設定ファイルでさらに快適に)
-p コピー時の属性を保存
コピー時に転送元ファイルの更新日時やパーミッションも反映させます。 (4.3.1. scp をつかったファイル転送)
-P ポート番号 接続するポート番号を指定
サーバに接続する TCP ポート番号 (デフォルトは 22) を指定します。 sshコマンドの -pオプションと同じです。 (4.3.1. scp をつかったファイル転送5.5.3. パスワード推測攻撃を避ける)
-r 再帰的コピー
ディレクトリの内容も再帰的にコピーします。 (4.3.1. scp をつかったファイル転送)
-v または -q デバッグメッセージの可否
デバッグ出力を表示する (-v) か、 あるいはなるべくメッセージを表示しない (-q) ようにします。 -vオプションを増やすと出力が詳細になります (最高 3つまで)。 sshコマンドの -v-qオプションと同じです。 (7.3.1. ssh をデバッグモードで実行する)

本文中では説明されていない機能に関するオプション

-4 または -6 IPv4 あるいは IPv6 を指定
ネットワーク接続に IPv4 (-4) あるいは IPv6 (-6) アドレスを使います。 sshコマンドの -4-6オプションと同じです。
-B バッチ処理モード
パスフレーズまたはパスワードを要求しないようにします。 ssh_config設定ファイルでは BatchMode yesに相当します。
-l 帯域幅 帯域を制限
転送に使用する帯域を指定された 帯域幅 (Kbit/s) に制限します。
-S クライアントプログラム クライアントプログラムを指定
暗号化通信をおこなうクライアント側のプログラム (通常は ssh) を指定します。

C.4. sftp

sftpコマンドは、 sshコマンドを利用した安全なファイル転送プログラムです。 (4.3.2. sftp をつかったファイル転送)

文法:

$ sftp [オプション] [ユーザ名@]ホスト名[:ディレクトリ名]
sftp を起動し、指定されたディレクトリに移動します。

オプション:

-1 SSH1 プロトコルの使用を強制
強制的に SSH1 プロトコルを使用します。 sshコマンドの -1オプションと同じです。 (6.7.1. SSH1 プロトコルを使う)
-C 圧縮を許可
データ圧縮を利用することにより通信を高速化します。 sshコマンドの -Cオプションと同じです。 (4.7.3. 設定を変えて OpenSSH を高速化する)
-F 個人設定ファイル 個人設定ファイルを指定
個人設定ファイルのパス名を指定します (デフォルトは ~/.ssh/config)。 sshコマンドの -Fオプションと同じです。 このオプションが指定されると、システムの設定ファイル ssh_config の内容は無視されます。 (4.7. 個人用の設定ファイルでさらに快適に)
-o 設定項目=値 設定項目を変更
ssh クライアントの設定項目を変更します。 sshコマンドの -oオプションと同じです。 (4.7. 個人用の設定ファイルでさらに快適に)
-v または -q デバッグメッセージの可否
デバッグ出力を表示する (-v) か、 あるいはなるべくメッセージを表示しない (-q) ようにします。 -vオプションを増やすと出力が詳細になります (最高 3つまで)。 sshコマンドの -v-qオプションと同じです。 (7.3.1. ssh をデバッグモードで実行する)

本文中では説明されていない機能に関するオプション

-b バッチ処理ファイル バッチ処理モード
標準入力のかわりに指定されたバッチ処理ファイルからファイル転送コマンドを読み込みます。
-B バッファサイズ バッファの大きさを指定
ファイル転送に使用するバッファの大きさ (デフォルトは 32768) バイト数で指定します。
-P sftp-serverパス ローカルなsftp-serverのパス名を指定
このオプション指定すると、sftp-serverプログラムをローカルで実行します。デバッグに使用します。
-R 最大同時リクエスト数 最大同時リクエスト数を指定
一度に処理する最大のリクエスト数 (デフォルトは 16) を指定します。
-s サブシステム名 サブシステム名を指定
サーバ側で実行されるサブシステム名を指定します。
-S クライアントプログラム クライアントプログラムを指定
暗号化通信をおこなうクライアント側のプログラム (通常は ssh) を指定します。

C.5. ssh-keygen

ssh-keygenコマンドは秘密鍵ファイルや公開鍵ファイル、 および ~/.ssh/known_hosts ファイル全般の操作をおこないます。 これらの機能は異なるオプションを与えることによって指定されます。

文法:

$ ssh-keygen -e [-f 秘密鍵ファイル]
OpenSSH形式の公開鍵ファイルを IETF形式の公開鍵ファイルに変換し、標準出力に表示します (6.7.2. 商用 SSH との相互運用)。
$ ssh-keygen -F ホスト名またはIPアドレス [-f known_hostsファイル]
known_hosts ファイル (デフォルトでは ~/.ssh/known_hosts) に登録されている、 特定のホスト名または IPアドレスに関連づけられた公開鍵を検索し、表示します。 ハッシュされた known_hosts ファイルを検索する際に利用します。(5.8.2. known_hosts ファイルの内容をハッシュ化する)
$ ssh-keygen -H [-f known_hostsファイル]
known_hosts ファイル (デフォルトでは ~/.ssh/known_hosts) に 含まれているホスト名をすべてハッシュ化します。(5.8.2. known_hosts ファイルの内容をハッシュ化する)
$ ssh-keygen -i [-f IETF形式の鍵ファイル]
IETF形式の秘密鍵または公開鍵ファイルを OpenSSH用に変換し、標準出力に表示します。 なお IETF形式の秘密鍵を変換するためには、その秘密鍵ファイルにパスフレーズがつけられていない状態に なっている必要があります。(6.7.2. 商用 SSH との相互運用)
$ ssh-keygen -l [-f 公開鍵ファイル]
公開鍵の指紋を表示します。(4.1.2. 公開鍵をサーバに登録する4.2. パスワード認証をつかったログイン (SSH2プロトコル))
$ ssh-keygen -p [-f 秘密鍵ファイル] [オプション]
秘密鍵ファイルにつけられたパスフレーズを変更します (4.1.1. クライアント上で秘密鍵と公開鍵ペアを生成する)。 新旧のパスフレーズはそれぞれ端末から入力することもできますが、オプションで指定することもできます。
$ ssh-keygen -R ホスト名またはIPアドレス [-f known_hostsファイル]
known_hosts ファイル (デフォルトでは ~/.ssh/known_hosts) に登録されている、 特定のホスト名または IPアドレスに関連づけられた公開鍵を削除します。 サーバのホスト公開鍵が変更されたときに利用します。(5.6.2. サーバのホスト鍵を変更する)
$ ssh-keygen -t { rsa | dsa | rsa1 } [-f 秘密鍵ファイル] [オプション]
秘密鍵と公開鍵のペアを生成しファイルに保存します。 引数として rsa を指定すると RSA方式 (SSH2 プロトコル用) の鍵が デフォルトで ~/.ssh/id_rsa に保存され、 dsa を指定すると DSA方式 (SSH2 プロトコル用) の鍵が デフォルトで ~/.ssh/id_dsa に保存されます (4.1.1. クライアント上で秘密鍵と公開鍵ペアを生成する)。 rsa1 を指定すると SSH1プロトコルで使用する鍵が生成され、 デフォルトで ~/.ssh/identity に保存されます。 (6.7.1. SSH1 プロトコルを使う)。 なお、どの場合も公開鍵が保存されるファイル名は秘密鍵ファイルの名前に 「.pub」を追加したものになります。 秘密鍵につけるパスフレーズは端末から入力することもできますが、オプションで指定することもできます。

オプション:

-b ビット数 鍵の長さを指定
鍵を生成するさい、生成する鍵の長さをビット数で指定します。 デフォルトの長さは、RSA方式 (SSH2 プロトコル用) の鍵が 2048ビット、 DSA方式 (SSH2 プロトコル用) の鍵が 1024ビット、 SSH1 プロトコル用の鍵が 2048ビットです。 なお、DSA方式の鍵はつねに 1024ビットである必要があります。 (4.1.1. クライアント上で秘密鍵と公開鍵ペアを生成する)
-C コメント文字列 コメントを指定
(SSH1プロトコル用のみ) 鍵を生成するさい、秘密鍵・公開鍵につけるコメント文字列を指定します。 (6.7.1. SSH1 プロトコルを使う)
-N 新しいパスフレーズ 秘密鍵につけるパスフレーズを指定
秘密鍵ファイルを新しく生成したり (-tオプション)、 既存の秘密鍵ファイルのパスフレーズを変更する (-pオプション) さいに、 新しいパスフレーズ文字列を指定します。 (4.1.1. クライアント上で秘密鍵と公開鍵ペアを生成する)
-P 古いパスフレーズ 現在の秘密鍵のパスフレーズを指定
既存の秘密鍵ファイルのパスフレーズを変更するさい、新しいパスフレーズ文字列を指定します。
-q 進捗状況を表示しない
鍵を生成するさいにメッセージを極力表示しないようにします。

本文中では説明されていない機能

$ ssh-keygen -B [-f 秘密鍵または公開鍵ファイル]
指定された鍵ファイルの bubblebabble ダイジェストを表示します。
$ ssh-keygen -c [-f 秘密鍵ファイル] [-P パスフレーズ] [-C コメント文字列]
(SSH1プロトコル用のみ) 秘密鍵ファイルのコメント文字列を変更します。パスフレーズの指定または入力が必要です。
$ ssh-keygen -D スマートカードデバイス
スマートカードから RSA 方式の公開鍵をダウンロードします。
$ ssh-keygen -G 出力ファイル [-v] [-b ビット数] [-M メモリ] [-S 開始点]
Diffie-Hellman 鍵交換に使用する大きな素数の候補を生成します。 -vオプションを指定するとデバッグ出力を表示します。
$ ssh-keygen -r ホスト名 [-f 公開鍵ファイル] [-g]
与えられた公開鍵から DNS の SSHFP レコードを生成します。 -gオプションを指定すると一般的な DNS 形式で出力します。
$ ssh-keygen -T 出力ファイル -f 入力ファイル [-v] [-a 試行回数] [-W ジェネレータ]
ssh-keygen -G で生成した素数の候補をスクリーニングします。
$ ssh-keygen -U スマートカードデバイス [-f 秘密鍵ファイル]
RSA 方式の秘密鍵をスマートカードにアップロードします。
$ ssh-keygen -y [-f 秘密鍵ファイル] [-P パスフレーズ]
秘密鍵ファイルから公開鍵ファイルを生成します。パスフレーズの指定または入力が必要です。

C.6. ssh-agent

ssh-agentプログラムはデーモンとして起動し、 ユーザからの操作はすべて ssh-addコマンドを介しておこないます。 本文で説明は起動方法は 1通りですが、ほかの方法で起動することもできます。 (4.4. 認証エージェントを使う5.1.3. 認証エージェントの使用を支援する)

文法:

$ ssh-agent コマンド名 引数1 引数2 ...
認証エージェントを起動し、その子プロセスとして指定されたコマンドを実行します。 (4.4. 認証エージェントを使う5.1.3. 認証エージェントの使用を支援する)

オプション:

-a 通信用ソケット 通信用ソケットのパス名を指定
この値は子プロセスの環境変数 SSH_AUTH_SOCK に格納されます。 (4.4.2. 認証エージェントの動作5.1.3. 認証エージェントの使用を支援する)
-t 生存時間 秘密鍵の生存時間を指定
認証エージェントに追加された秘密鍵の最大生存時間を秒数で指定します。 (4.4.4. 認証エージェントを使う際の注意)

本文中では説明されていない機能

$ ssh-agent [-a 通信用ソケット] [-t 鍵の生存時間] { -c | -s | -d }
ssh-agent をバックグラウンドで起動し、 環境変数 SSH_AUTH_SOCKSSH_AGENT_PID を設定するための シェルのコマンド文字列を標準出力に表示します。 オプションとして -c を指定すると Cシェルのコマンドを、 -s を指定すると Bourne シェルのコマンドを表示します。 -d を指定するとデバッグモードとして fork せず動作します。
$ ssh-agent -k
前述の方法で起動した ssh-agent を kill します。環境変数 SSH_AGENT_PIDssh-agent のプロセス ID が格納されている必要があります。

C.7. ssh-add

ssh-addコマンドは実行中の認証エージェント (ssh-agentプログラム) に秘密鍵を追加したり削除するのに使います。 (4.4.1. 認証エージェントを使ったログイン)

文法:

$ ssh-add [秘密鍵ファイル]
認証エージェントに秘密鍵を追加します。 秘密鍵ファイルを指定しない場合、~/.ssh/id_rsa~/.ssh/id_dsa~/.ssh/identity のファイルのうち 存在しているものがすべて追加されます。 秘密鍵につけられたパスフレーズを入力する必要があります。 (4.4.1. 認証エージェントを使ったログイン)
$ ssh-add -d 秘密鍵ファイル
指定された秘密鍵を認証エージェント中から削除します。 (4.4.4. 認証エージェントを使う際の注意)
$ ssh-add -D
認証エージェント中の秘密鍵をすべて削除します。 (4.4.4. 認証エージェントを使う際の注意)
$ ssh-add -l
現在、認証エージェント中に存在している秘密鍵の指紋を一覧表示します。 (4.4.1. 認証エージェントを使ったログイン)
$ ssh-add -L
現在、認証エージェント中に存在している秘密鍵の公開鍵部分を一覧表示します。 (4.4.1. 認証エージェントを使ったログイン)

オプション:

-t 生存時間 秘密鍵の生存時間を指定
認証エージェントに追加する秘密鍵の最大生存時間を秒数で指定します。 (4.4.4. 認証エージェントを使う際の注意5.1.3. 認証エージェントの使用を支援する)

本文中では説明されていない機能

$ ssh-add -e スマートカードデバイス
スマートカードから秘密鍵を削除します。
$ ssh-add -s スマートカードデバイス
スマートカードに秘密鍵を追加します。
$ ssh-add -x
認証エージェントをロックします。ロックされたエージェントは認証に使うことも 秘密鍵を追加することもできなくなります。ロックする前にロック解除用のパスワードを入力します。
$ ssh-add -X
パスワードを入力すると、ロックされた認証エージェントを解除します。

付録 D. ssh_config 設定項目一覧

以下の設定項目はユーザの ~/.ssh/config 個人設定ファイルか、OpenSSH 設定用ディレクトリの ssh_config 設定ファイルで使用できます。 ここで紹介している設定項目のうち、よく利用されるものについては 4.7. 個人用の設定ファイルでさらに快適に でも説明しています。

(以下の表では、下線部がついている値がデフォルト値です)
設定項目 名前
説明
ChallengeResponseAuthentication { yes | no } チャレンジ・レスポンス認証使用の可否
サーバとの認証時にチャレンジ・レスポンス認証を試みるかどうか指定します。
CheckHostIP { yes | no } IPアドレスの検査の可否
ホスト認証をおこなうとき、~/.ssh/known_hostsファイルに記録されたホスト名と IPアドレスの組み合わせが正しいかどうかをチェックします。 これによって DNS が不正に設定された場合に異常を検出できますが、 単一の IPアドレスで複数の sshd を走らせている場合は no に設定する必要があります。 (6.4.2. ポートを変えて複数のホストにログインする)
Cipher { 3des | blowfish | des } SSH1 の暗号化アルゴリズムを指定
SSH1 プロトコルで使用する暗号化アルゴリズムを指定します。SSH2 プロトコルと異なり、 SSH1 プロトコルでは暗号化アルゴリズムはひとつしか指定できません。 sshコマンドの -c オプションに相当します。
Ciphers 暗号化アルゴリズム名1,暗号化アルゴリズム名2,... SSH2 の暗号化アルゴリズムを指定
SSH2 プロトコルで使用する複数の暗号化アルゴリズムとその優先順位をカンマで区切って指定します。 sshコマンドの -c オプションに相当します。 (4.7.3. 設定を変えて OpenSSH を高速化する)
ClearAllForwardings { no | yes } すべてのポート転送を無効に
この設定項目が yes に指定されると、設定ファイルやコマンドラインで指定された すべてのポート転送の指定が無効になります。 この設定項目はおもに scpsftp 内で使われます。
Compression { no | yes } 圧縮の可否
通信のデータ圧縮を許可するかどうかを指定します。 sshコマンドの -C オプションは Compression yes に相当します。 (4.7.3. 設定を変えて OpenSSH を高速化する)
EnableSSHKeysign { no | yes } ssh-keysign利用の可否
ssh-keysignプログラムの使用を許可するかどうかを指定します。 ssh-keysignプログラムは Hostbased認証を使うさいに必要です。 (6.6.2. Hostbased 認証を使う準備)
EscapeChar 文字 エスケープ文字を指定
ログイン後に使用できるエスケープ文字 (デフォルトはチルダ記号 “~”) を指定します sshコマンドの -e オプションに相当します。
ForwardAgent { no | yes } エージェント転送の可否
サーバ側への認証エージェントの転送を許可するかどうかを指定します。 sshコマンドの -A オプションおよび -a オプションは、それぞれ ForwardAgent yes および ForwardAgent no に相当します。 (4.4.3. 認証エージェントを転送する)
ForwardX11 { no | yes } X11転送の可否
X11転送を許可するかどうかを指定します。 sshコマンドの -X オプションおよび -x オプションは、それぞれ ForwardX11 yes および ForwardX11 no に相当します。 (4.5. X11 転送を使う)
ForwardX11Trusted { no | yes } 信頼されたX11転送の可否
信頼された X11転送を許可するかどうかを指定します。 sshコマンドの -Y オプションは ForwardX11Trusted yes に相当します。 (4.5. X11 転送を使う)
GatewayPorts { no | yes } 外部からのポート転送利用の可否
ローカル→リモート (L) の ポート転送をおこなう際、クライアントマシン以外のホストにもそのポート転送を利用させるかどうかを指定します。 sshコマンドの -g オプションは GatewayPorts yes に相当します。 (6.2.3. 応用1 - HTTP のみに対応した簡易 VPN を構築する)
GlobalKnownHostsFile known_hostsパス名 システム全体のknown_hostsファイルを指定
システム全体にわたる known_hostsファイルのパス名 (デフォルトは OpenSSH 用設定ディレクトリにある ssh_known_hosts) を変更します。 ホスト認証の際には各ユーザの ~/.ssh/known_hosts ファイルに加えて、 ここで指定されたファイルに含まれているホスト公開鍵も検査されます。
HashKnownHosts { no | yes } ホスト名ハッシュ化の可否
~/.ssh/known_hosts ファイルに新たにホスト公開鍵を加えるとき、 そのホスト名を自動的にハッシュ化するかどうかを指定します。 (5.8.2. known_hosts ファイルの内容をハッシュ化する)
HostbasedAuthentication { no | yes } Hostbased認証使用の可否
SSH2 プロトコルを使用している場合、サーバとの認証時に Hostbased認証を試みるかどうかを指定します。 (6.6.2. Hostbased 認証を使う準備)
HostKeyAlias 架空のホスト名 ホスト公開鍵とホスト名を関連づける
同一のホスト名 (IPアドレス) で動いている複数の sshd サーバデーモンに アクセスする場合、異なるホスト公開鍵の関連づけに使う架空のホスト名を指定します。 (6.4.2. ポートを変えて複数のホストにログインする)
HostName ホスト名 実際に接続するホスト名を指定
ユーザの入力したホスト名が ~/.ssh/config個人設定ファイルの Host指定に一致したとき、 実際に接続するホスト名を指定します。 (4.7. 個人用の設定ファイルでさらに快適に)
IdentityFile 秘密鍵ファイル 秘密鍵ファイルを指定
デフォルトのパス (~/.ssh/id_rsa あるいは ~/.ssh/id_dsa、 SSH1プロトコルの場合は ~/.ssh/identity) 以外にある秘密鍵ファイルを指定します。 sshコマンドの -i オプションに相当します。 (4.7. 個人用の設定ファイルでさらに快適に)
LocalCommand コマンドライン文字列 クライアント上で実行するコマンドを指定
PermitLocalCommand設定項目が yes の場合、 サーバへのログイン後にクライアント上で実行するコマンドを指定します。 (6.3.3. VPN を実際に運用する)
LocalForward ポートX ホストY:ポートZ ローカル→リモート (L) のポート転送
クライアント側の ポートX に行われた TCP接続をサーバ側 ホストYポートZ に転送します。 sshコマンドの -L オプションに相当します。 なお、コマンドラインオプションとは異なり、ポートXホストY の間はコロン (:) ではなく スペースで区切ることに注意してください。 (6.2.1. ローカル→リモート (L) のポート転送)
LogLevel ログのレベル ログのレベルを指定
表示するデバッグ出力のレベルを QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 および DEBUG3 中からひとつ指定します。QUIET はログをまったく表示せず、 DEBUG3 はもっとも詳細な出力を表示します。デフォルトの値は INFO です。 sshコマンドの -v オプションを増やすことは、 このログのレベルを上げることに相当します。
PasswordAuthentication { yes | no } パスワード認証使用の可否
サーバとの認証時にパスワード認証を試みるかどうかを指定します。 (4.2. パスワード認証をつかったログイン (SSH2プロトコル))
PermitLocalCommand { no | yes } クライアント上におけるコマンド実行の可否
この設定項目を yes に指定すると、サーバにログインしたあとに クライアントが LocalCommand設定項目で指定されたコマンド文字列を自動的に実行します。 (6.3.3. VPN を実際に運用する)
Port ポート番号 接続するポート番号を指定
サーバに接続する TCP ポート番号 (デフォルトは 22) を指定します。 sshコマンドの -p オプションに相当します。 (4.1.3. 公開鍵認証でログインする5.5.3. パスワード推測攻撃を避ける)
Protocol { 2,1 | 1,2 | 2 | 1 } 使用する SSH プロトコルを指定
サーバに接続したさい使用を試みる SSH プロトコルのバージョンとその優先度をカンマでくぎって指定します。 sshコマンドの -1 オプションおよび -2 オプションは、それぞれ Protocol 1 および Protocol 2 に相当します。 (6.7.1. SSH1 プロトコルを使う)
PubkeyAuthentication { yes | no } 公開鍵認証使用の可否
SSH2 プロトコルを使用している場合、サーバとの認証時に公開鍵認証を試みるかどうかを指定します。 (4.1.3. 公開鍵認証でログインする)
RemoteForward ポートX ホストY:ポートZ リモート→ローカル (R) のポート転送
サーバ側の ポートX に行われた TCP接続をクライアント側 ホストY ポートZ に転送します。 sshコマンドの -R オプションに相当します。 なお、コマンドラインオプションとは異なり、ポートXホストY の間はコロン (:) ではなく スペースで区切ることに注意してください。 (6.2.2. リモート→ローカル (R) のポート転送)
RSAAuthentication { yes | no } RSA認証使用の可否
SSH1 プロトコルを使用している場合、 サーバとの認証時に RSA認証 (SSH2 における公開鍵認証) を 試みるかどうかを指定します。 (6.7.1. SSH1 プロトコルを使う)
StrictHostKeyChecking { ask | yes | no } ホスト鍵検査の方式を指定
ホスト公開鍵が未知のサーバにログインする場合、 そのサーバのホスト公開鍵を自動的に known_hosts ファイルに追加する (yes) か、ログインを拒否する (no) か、 あるいはその公開鍵を known_hosts ファイルに追加するかどうかをユーザに確認する (ask) かのいずれかを指定します。
Tunnel { no | point-to-point | ethernet | yes } トンネリングの可否
tun/tap デバイスを使ったトンネリングをおこなうかどうかを指定します。 (6.3.2. VPN を設定・テストする)
TunnelDevice ネットワークインターフェイス番号 トンネリングに使うインターフェイスを指定
トンネリングをおこなう際に、クライアント側で使う tun/tap デバイスの ネットワークインターフェイス番号を指定します。デフォルトでは、 最初に利用可能なネットワークインターフェイス番号が利用されます。
User ユーザ名 ログインするユーザ名を指定
サーバにログインするユーザ名を指定します。 コマンドライン引数の「ユーザ名@」の部分、 または -l オプションに相当します。 (4.1.3. 公開鍵認証でログインする)
UserKnownHostsFile known_hostsパス名 ユーザ用known_hostsファイルを指定
ホスト認証に使う、各ユーザ用の known_hostsファイルのパス名 (デフォルトは ~/.ssh/known_hosts) を変更します。
XAuthLocation xauthパス名 xauthのパス名を指定
X11転送で使う、サーバ側の xauthプログラムのパス名を指定します。 (4.5. X11 転送を使う7.5.1. X11転送が使えない)

本文中では説明されていない機能に関する設定項目

AddressFamily { any | inet | inet6 } IPv4 あるいは IPv6 を指定
ネットワーク接続に IPv4 アドレス (inet) あるいは IPv6 アドレス (inet6) あるいは両方 (any) のどれを使うか指定します。 sshコマンドの -4 オプションおよび -6 オプションは、それぞれ AddressFamily inet および AddressFamily inet6 に相当します。
BatchMode { no | yes } バッチ処理モード
パスフレーズまたはパスワードを要求しないようにします。
BindAddress IPアドレス 接続元アドレスを指定
複数の IP アドレスを持つマシンで、サーバへの TCP接続のさい指定された IPアドレスを接続元として使用します。 sshコマンドの -b オプションに相当します。
CompressionLevel 数値 圧縮レベルの指定
SSH1 プロトコルを使用している場合、 データ圧縮をするさいに、圧縮のレベルを 1 (弱)〜9 (強) の数値で指定します。
ConnectionAttempts 接続試行回数 接続を試行する回数を指定
サーバに TCP 接続を試みる最大の回数 (デフォルトは 1) を指定します。
ConnectTimeout 秒数 TCP接続のタイムアウトを指定
サーバに TCP 接続を試みたときのタイムアウトまでの秒数を指定します。
ControlMaster { no | yes | ask | auto | autoask } マスターモードを指定
sshを「マスターモード」にするかどうかを指定します。 sshコマンドの -M オプションは ControlMaster yes に相当します。
ControlPath 制御用ソケット 制御用ソケットを指定
sshをマスターモードで実行するさい、制御用の通信に使う UNIXドメインソケットのパス名を指定します。 sshコマンドの -S オプションに相当します。
DynamicForward [IPアドレス:]ポート番号 動的なポート転送を指定
動的なポート転送を開始します。ssh クライアントは 指定されたポート番号 (および IPアドレス) で SOCKS サーバとして動きます。 sshコマンドの -D オプションに相当します。
GSSAPIAuthentication { no | yes } GSSAPI認証の可否
SSH2 プロトコルを使用している場合、サーバとの認証時に GSSAPI認証を試みるかどうかを指定します。
GSSAPIDelegateCredentials { no | yes } GSSAPI証明書転送の可否
SSH2 プロトコルを使用している場合、サーバ側に GSSAPI証明書の転送を許可するかどうかを指定します。 sshコマンドの -k オプションは GSSAPIDelegateCredentials no に相当します。
HostKeyAlgorithms { ssh-rsa,ssh-dss | ssh-rsa,ssh-dss } ホスト鍵の優先順位を指定
SSH2 プロトコルでホスト認証をおこなうさい、サーバが持っている RSA 形式のホスト鍵とDSA形式の ホスト鍵の どちらを優先して使用するかを指定します。
IdentitiesOnly { no | yes } 所有している秘密鍵に限定
公開鍵認証において、実際に所有している秘密鍵のみを使用する (つまり、転送された認証エージェントが持っている秘密鍵は無視する) かどうかを指定します。
KbdInteractiveDevices デバイス1,デバイス2,... 対話的デバイスを指定
keyboard-interactive 認証時に使用する対話的デバイスを指定します。
MACs MACアルゴリズム1,MACアルゴリズム2,... MACアルゴリズムを指定
クライアントがデータの混入や改ざんを検出するのに使う複数の MAC アルゴリズムをカンマで区切って指定します。 sshコマンドの -m オプションに相当します。
NoHostAuthenticationForLocalhost { no | yes } localhostに対するホスト認証省略の可否
localhostにログインする場合 (つまり、sshクライアントと sshdサーバデーモンが同一マシンの場合)、 ホスト認証を省略するかどうかを指定します。ユーザの ~/.ssh/known_hosts ファイルを 複数ホスト間で NFS などで共有している場合には yes を指定します。
NumberOfPasswordPrompts パスワード試行回数 パスワード試行回数を指定
パスワード認証時に、最高何回までユーザにパスワードを尋ねるか (デフォルトは 3回) を指定します。
PreferredAuthentications 認証方式1,認証方式2,... 認証方式の優先順位を指定
SSH2 プロトコルにおける認証方式の優先順位をカンマで区切って指定します。 公開鍵認証 (publickey)、Hostbased 認証 (hostbased)、 パスワード認証 (password)、keyboard-interactive 認証 (keyboard-interactive) が指定できます。
ProxyCommand コマンド文字列 プロキシコマンドの指定
sshクライアントが TCP 接続の代わりに利用する ネットワーク通信用プログラムを指定します。
RekeyLimit 転送量 暗号鍵を再生成する転送量を指定
SSH2 プロトコル使用時に、一定のデータが転送されたのち、自動的に暗号鍵を再生成するデータ量 (デフォルトは 1G あるいは 4G、暗号化アルゴリズムによる) を指定します。
RhostsRSAAuthentication { no | yes } RhostsRSA認証の可否
SSH1 プロトコルを使用している場合、サーバとの認証時に RhostsRSA認証 (SSH2 プロトコルにおける Hostbased認証) を試みるかどうかを指定します。
SendEnv 環境変数名1 環境変数名2 ... 環境変数の転送を指定
サーバのログイン時にクライアント側からサーバ側に転送する環境変数を指定します。 なお、SendEnv設定項目を使うには、サーバ側の AcceptEnv設定項目で その環境変数の転送が許可されている必要があります。
ServerAliveCountMax 確認メッセージ回数 確認メッセージの最大回数を指定
SSH2 プロトコル使用時に、sshクライアントが一定時間おきにサーバに送信する 確認メッセージの最大回数 (デフォルトは 3回) を指定します。 この回数以上の確認メッセージに対してサーバ側から応答がない場合 ssh は 自動的に接続を切断します。
ServerAliveInterval 確認メッセージ間隔 確認メッセージの送信間隔を指定
SSH2 プロトコル使用時に、sshクライアントが一定時間おきにサーバに送信する 確認メッセージの間隔 (デフォルトは 0秒 - 確認メッセージを送らない) を指定します。
SmartcardDevice スマートカードデバイス スマートカードデバイスを指定
公開鍵認証時に、指定されたスマートカードデバイスに格納されている RSA秘密鍵を使用するよう指定します。 sshコマンドの -I オプションに相当します。
TCPKeepAlive { yes | no } TCPKeepAliveメッセージの可否
サーバへの TCP 接続で KeepAlive メッセージを使用するかどうかを指定します。 KeepAlive メッセージを使用すると、サーバとの TCP 接続が一時的に途切れたとき ssh は自動的に終了します。
UsePrivilegedPort { no | yes } 特権ポート使用の可否
SSH1 プロトコルの RhostsRSA認証を使う場合、特権ポートから TCP 接続をおこなうかどうかを指定します。
VerifyHostKeyDNS { no | yes | ask } DNSを使ったホスト公開鍵確認の可否
SSH2 プロトコル使用時に、 DNS の SSHFP レコードを使ってサーバのホスト公開鍵を確認するかどうかを指定します。

付録 E. sshd_config 設定項目一覧

以下の設定項目は OpenSSH 設定用ディレクトリの sshd_config 設定ファイルで使用できます。 (5.2. sshd を安全に設定する)
AllowGroups グループ名1 グループ名2 ... 特定のグループのみにログインを許可
特定のグループのログインのみを許可します。 AllowGroups 設定項目を 指定した場合、ここに載っていないグループは必ずログインが禁止されます。 ワイルドカードとして *? の文字が使用できます。 (5.2.2. 特定のユーザのログインを禁止する)
AllowTcpForwarding { yes | no } ポート転送使用の可否
ポート転送の利用を許可するかどうかを指定します。 (6.2. ポート転送5.4. ユーザの操作を制限する)
AllowUsers ユーザ名1 ユーザ名2 ... 特定のユーザのみにログインを許可
特定のユーザのログインのみを許可します。 AllowUsers 設定項目を 指定した場合、ここに載っていないユーザは必ずログインが禁止されます。 ワイルドカードとして *? の文字が使用できます。 (5.2.2. 特定のユーザのログインを禁止する)
AuthorizedKeysFile authorized_keysファイル 各ユーザのauthorized_keysファイルを指定
公開鍵認証の際に sshdサーバデーモンが参照する、 各ユーザの公開鍵を記した authorized_keys ファイルの パス名 (デフォルトは .ssh/authorized_keys) を変更します。
ChallengeResponseAuthentication { yes | no } チャレンジ・レスポンス認証の可否
ユーザ認証時にチャレンジ・レスポンス認証を許可するかどうか指定します。 パスワード認証を禁止する場合は、この設定項目も no に設定する必要があります。 なお、Mac OS X でパスワード認証を使用する場合は ChallengeResponseAuthentication 設定項目と UsePAM 設定項目をともに yes に指定する必要があります。 (5.2.1. システム全体でパスワード認証を禁止する)
Ciphers 暗号化アルゴリズム名1,暗号化アルゴリズム名2,... SSH2 の暗号化アルゴリズムを指定
SSH2 プロトコルで使用する複数の暗号化アルゴリズムとその優先順位をカンマで区切って指定します。 (4.7.3. 設定を変えて OpenSSH を高速化する)
Compression { delayed | yes | no } 圧縮の可否
通信のデータ圧縮を許可するかどうかを指定します。 Compression delayed を指定すると接続時には 圧縮を使用せず、認証完了後に圧縮を開始しますが、これは古いバージョンの OpenSSH との運用で問題を起こすことがあります。 (4.7.3. 設定を変えて OpenSSH を高速化する7.4.2. SSH プロトコル上のトラブル)
DenyGroups グループ名1 グループ名2 ... 特定グループのログインを禁止
ログインを禁止するグループを指定します。なお、 DenyGroups 設定項目は AllowGroups 設定項目よりも優先されます。 ワイルドカードとして *? の文字が使用できます。 (5.2.2. 特定のユーザのログインを禁止する)
DenyUsers ユーザ名1 ユーザ名2 ... 特定ユーザのログインを禁止
ログインを禁止するユーザを指定します。なお、 DenyUsers 設定項目は AllowUsers 設定項目よりも優先されます。 ワイルドカードとして *? の文字が使用できます。 (5.2.2. 特定のユーザのログインを禁止する)
GatewayPorts { no | yes | clientspecified } 外部からのポート転送利用の可否
リモート→ローカル (R) のポート転送をおこなう際、 サーバマシン以外のホストにもそのポート転送を利用させるかどうかを指定します。 clientspecified を指定すると、 この許可はクライアントが決定できるようになります。 (6.2.4. 応用2 - VNC で遠隔地にあるマシンを安全に制御する)
HostbasedAuthentication { no | yes } Hostbased認証の可否
SSH2 プロトコルを使用している場合、ユーザ認証時に Hostbased認証を許可するかどうか指定します。 (6.6.2. Hostbased 認証を使う準備)
HostKey ホスト秘密鍵ファイル ホスト秘密鍵を指定
sshd サーバデーモンがホスト認証に使うホスト秘密鍵ファイル (デフォルトは OpenSSH 用設定ディレクトリにある ssh_host_rsa_keyssh_host_dsa_key および ssh_host_key) を指定します。 この設定項目は複数回指定できます。 sshd実行時の -h オプションに相当します。 なお、ホスト秘密鍵は sshd が起動するのに最低ひとつ必要であり、 指定されたプロトコル用のホスト秘密鍵ファイルが読み込めない場合は、 そのバージョンのプロトコルが使用できなくなります。 (6.5.1. 一般ユーザ権限で sshd を走らせる7.2.2. sshd の初期化に関するエラー)
IgnoreRhosts { yes | no } Hostbased認証時にユーザの rhostsファイルを無視
Hostbased認証を行うさいに、ユーザのホームディレクトリ上にある ~/.rhostsファイルを無視するかどうかを指定します。 (6.6.2. Hostbased 認証を使う準備)
IgnoreUserKnownHosts { no | yes } Hostbased認証時にユーザの known_hostsファイルを無視
Hostbased認証を行うさいに、ユーザの ~/.ssh/known_hostsファイルを 無視するかどうかを指定します。 (6.6.2. Hostbased 認証を使う準備)
LogLevel ログのレベル ログのレベルを指定
表示するデバッグ出力のレベルを QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG (DEBUG1), DEBUG2 および DEBUG3 中からひとつ指定します。QUIET はログをまったく表示せず、 DEBUG3 はもっとも詳細な出力を表示します。デフォルトの値は INFO です。 OpenSSH のマニュアルでは、DEBUG 以上のレベルはユーザのプライバシーを侵害する 危険性があるため、実際の運用時には使用しないよう勧めています。 (5.5.2. sshd のログを見る)
PasswordAuthentication { yes | no } パスワード認証使用の可否
ユーザ認証時に Hostbased認証を許可するかどうか指定します。 なお、Mac OS X でパスワード認証を使用する場合は ChallengeResponseAuthentication 設定項目と UsePAM 設定項目をともに yes に指定する必要があります。 (5.2.1. システム全体でパスワード認証を禁止する)
PermitRootLogin { yes | no | without-password | forced-commands-only } rootログインの可否
rootユーザとしてログイン可能かどうかを指定します。 (5.2.3. Root のログインを禁止する)
PermitTunnel { no | point-to-point | ethernet | yes } トンネリングの可否
tun/tap デバイスを使ったトンネリングを許可するかどうかを指定します。 (6.3.2. VPN を設定・テストする)
Port ポート番号 接続を待ち受けるポート番号を指定
クライアントからの TCP 接続を待ち受けるポート番号 (デフォルトは 22) を指定します。 この設定項目を複数個指定した場合、複数のポートが listen されます。 sshd実行時の -p オプションに相当します。 (5.5.3. パスワード推測攻撃を避ける6.4.2. ポートを変えて複数のホストにログインする6.5.1. 一般ユーザ権限で sshd を走らせる)
PrintLastLog { yes | no } 前回のログイン日時の表示設定
ユーザのログイン時に、そのユーザが前回サーバにログインした日時を表示するかどうかを指定します。
PrintMotd { yes | no } motdファイルの表示設定
ユーザのログイン時に /etc/motd ファイルの内容を表示するかどうかを指定します。
Protocol { 2,1 | 2 | 1 } サポートする SSH プロトコルを指定
サポートする SSH プロトコル (SSH1 プロトコルあるいは SSH2 プロトコル) を カンマで区切って指定します。なお、どちらの SSH プロトコルを使用するかを決定するのは クライアント側なので、プロトコルの優先順位は指定できません。 (6.7.1. SSH1 プロトコルを使う)
PubkeyAuthentication { yes | no } 公開鍵認証の可否
SSH2 プロトコルを使用している場合、ユーザ認証時に公開鍵認証を許可するかどうか指定します。
RSAAuthentication { yes | no } RSA認証の可否
SSH1 プロトコルを使用している場合、ユーザ認証時に RSA認証 (SSH2 における公開鍵認証) を 許可するかどうか指定します。 (6.7.1. SSH1 プロトコルを使う)
StrictModes { yes | no } 厳密なパーミッション管理の可否
この設定項目を yes に指定すると、 ユーザがログインしようとするさい、~/.ssh/authorized_keys などの 重要なファイルが誰にでも書き換え可能な状態になっていないかどうかをチェックします。 (7.4.4. ログインできない (公開鍵認証))
Subsystem サブシステム名 パス名 サブシステムのプログラムを設定
特定のサブシステム名に対応するプログラムのパス名を指定します。 OpenSSH では「sftp」サブシステムを指定した場合に かならず sftp-server プログラムが実行されることが決められています。 ユーザがこれ以外のサブシステムを設定することもできます。 (4.3.2. sftp をつかったファイル転送)
SyslogFacility ログ出力先 ログの出力先を指定
sshd サーバデーモンが表示するログの syslog 出力先を指定します。 DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, および LOCAL7 中からひとつ指定します。 (5.5.2. sshd のログを見る)
UseDNS { yes | no } DNS 使用の可否
クライアントが接続してきたとき、そのホスト名を DNS で逆引きするかどうかを指定します。 このホスト名はユーザのログイン履歴を表す utmpファイルに記録されます。 また UseDNS の値が yesの場合、Hostbased認証を行うには クライアントのホスト名が正しく shosts.equivファイルに記録されている必要があります。 (6.6.2. Hostbased 認証を使う準備)
UsePAM { no | yes } PAM 使用の可否
ユーザ認証のさい、PAM (Pluggable Authentication Module) の使用を許可するかどうかを指定します。 OpenSSH のコンパイル時に PAM がサポートされていない場合にこの設定項目を使うとエラーになります。 なお、Mac OS X でパスワード認証を使用する場合は ChallengeResponseAuthentication 設定項目と UsePAM 設定項目をともに yes に指定する必要があります。 (5.2.1. システム全体でパスワード認証を禁止する)
UsePrivilegeSeparation { yes | no } 特権分離機能の可否
セキュリティを向上させる特権分離機能を使うかどうかを設定します。 (7.2.2. sshd の初期化に関するエラー)
X11DisplayOffset 数値 ディスプレイ番号のオフセットを指定
X11転送を使う場合、サーバ側のプログラムで使用する架空のディスプレイ番号が サーバ自身のものと重ならないようにするオフセット番号 (デフォルトは 10) を指定します。 (4.5. X11 転送を使う)
X11Forwarding { no | yes } X11転送の可否
クライアントに X11 転送 (あるいは信頼された X11 転送) の使用を許可するかどうかを指定します。 (4.5. X11 転送を使う)
X11UseLocalhost { yes | no } X11転送を localhost のみに制限
X11転送を使う場合、サーバ側に転送された架空の X11 ディスプレイ (Xサーバ) の使用を そのサーバマシン上 (localhost) のみに制限するかどうかを指定します。 この設定項目を no に指定すると、そのサーバマシン以外からも クライアント側の Xサーバに描画できるようになります。 (4.5. X11 転送を使う)
XAuthLocation xauthパス名 xauthのパス名を指定
クライアントが X11転送をおこなうときにサーバ側で実行する xauthプログラムのパス名を指定します。 (4.5. X11 転送を使う7.5.1. X11転送が使えない)

本文中では説明されていない機能に関する設定項目

AcceptEnv 環境変数名1 環境変数名2 ... 環境変数の転送を許可
クライアント側の SendEnv設定項目で、 クライアントからサーバに転送を許可する環境変数を指定します。
AddressFamily { any | inet | inet6 } IPv4 あるいは IPv6 を指定
ネットワーク接続に IPv4 アドレス (inet) あるいは IPv6 アドレス (inet6) あるいは両方 (any) のどれを使うか指定します。 sshd実行時の -4 オプションおよび -6 オプションは、それぞれ AddressFamily inet および AddressFamily inet6 に相当します。
Banner バナー文字列 バナー文字列を指定
SSH2 プロトコルを使用している場合、 認証時にサーバがクライアントに対して表示するバナー文字列を指定します。
ClientAliveCountMax 確認メッセージ回数 確認メッセージの最大回数を指定
SSH2 プロトコル使用時に、sshdサーバデーモンが一定時間おきにクライアントに送信する 確認メッセージの最大回数 (デフォルトは 3回) を指定します。 この回数以上の確認メッセージに対してクライアント側から応答がない場合 sshd は 自動的に接続を切断します。
ClientAliveInterval 確認メッセージ間隔 確認メッセージの送信間隔を指定
SSH2 プロトコル使用時に、sshdサーバデーモンが一定時間おきにクライアントに送信する 確認メッセージの間隔 (デフォルトは 0秒 - 確認メッセージを送らない) を指定します。
GSSAPIAuthentication { no | yes } GSSAPI認証の可否
SSH2 プロトコルを使用している場合、ユーザ認証時にGSSAPI認証を許可するかどうか指定します。
GSSAPICleanupCredentials { yes | no } GSSAPI証明書自動破棄の可否
SSH2 プロトコルを使用している場合、サーバ側に転送されたユーザの GSSAPI証明書を そのユーザのログアウト時に自動的に破棄するかどうかを指定します。
KerberosAuthentication { no | yes } Kerberos認証の可否
パスワード認証時にユーザから入力されたパスワードを Kerberos KDC 経由で確認するかどうかを指定します。
KerberosGetAFSToken { no | yes } Kerberos AFSトークン使用の可否
Kerberos 5 認証時に、ユーザのホームディレクトリにアクセスする際 AFSトークンを取得するかどうかを指定します。
KerberosOrLocalPasswd { yes | no } Kerberos認証のフォールバックを指定
Kerberos 認証が失敗した場合にローカルな /etc/passwd を使った パスワード認証をおこなうかどうかを指定します。
KerberosTicketCleanup { yes | no } Kerberosチケット自動破棄の可否
ユーザの Kerberosチケットを、そのユーザのログアウト時に自動的に破棄するかどうかを指定します。
KeyRegenerationInterval サーバ鍵生成間隔 サーバ鍵の生成間隔を指定
SSH1 プロトコルで、sshd サーバデーモンが内部的に保持する 暗号鍵 (サーバ鍵) が再生成される間隔 (デフォルトは 3600秒ごと) を指定します。 sshd実行時の -k オプションに相当します。
ListenAddress IPアドレス[:ポート番号] 接続を待ち受けるIPアドレスを指定
複数の IP アドレスを持つマシンで、 sshd サーバデーモンが TCP 接続を待ち受ける (listen する) IPアドレス (およびポート番号) を指定します。
LoginGraceTime ログイン猶予時間 ログインにかけられる最大時間を指定
クライアントが認証を終えるまでにかけることのできる最大の時間 (デフォルトは 120秒) を指定します。 この時間を超えてもクライアントがログインできない場合、サーバは自動的に接続を切ります。 sshd実行時の -g オプションに相当します。
MACs MACアルゴリズム1,MACアルゴリズム2,... MACアルゴリズムを指定
サーバがデータの混入や改ざんを検出するのに使う複数の MAC アルゴリズムをカンマで区切って指定します。
MaxAuthTries 回数 接続ごとの最大の認証回数を指定
クライアントがサーバに接続してからログインするまでの間に、 失敗が可能な最大の認証回数 (デフォルトは 6回) を指定します。
MaxStartups 接続数[:拒否確率:最大接続数] 最大同時接続数を指定
認証が完了していないクライアントの接続を最大で何個まで保持するかを指定します (デフォルトでは 10個まで)。 これ以上の数のクライアントがサーバに接続した場合、その TCP 接続は自動的に切断されます。 「接続数:拒否確率:最大接続数」の形式で指定すると、 最初の接続数を超えたあとにクライアントは一定の拒否確率で切断され、 最大接続数まで増加できます。
PermitEmptyPasswords { no | yes } 空のパスワードの可否
パスワード認証において、パスワードが設定されていない (空のパスワードをもつ) ユーザアカウントにログインを許可するかどうかを指定します。
PermitUserEnvironment { no | yes } ユーザによる環境変数設定の可否
ユーザがログインしたさい、そのユーザの ~/.ssh/environment ファイル、 あるいはそのユーザが使用した公開鍵の environment="..." オプションで ユーザの環境変数を自動的に設定する機能を許可するかどうかを指定します。
PidFile パス名 プロセスIDファイルのパス名を指定
sshdサーバデーモン起動時に、 sshdのプロセス ID を格納したファイル (pid ファイル) を記録する パス名 (デフォルトは /var/run/sshd.pid) を指定します。
RhostsRSAAuthentication { no | yes } RhostsRSA認証の可否
SSH1 プロトコルを使用している場合、ユーザ認証時に RhostsRSA認証 (SSH2 プロトコルにおける Hostbased認証) を許可するかどうか指定します。
ServerKeyBits ビット数 サーバ鍵のビット数を指定
SSH1 プロトコルで、sshd サーバデーモンが内部的に保持する 暗号鍵 (サーバ鍵) のビット数 (デフォルトは 768ビット) を指定します。 sshd実行時の -b オプションに相当します。
TCPKeepAlive { yes | no } TCPKeepAliveメッセージの可否
クライアントからの TCP 接続に KeepAlive メッセージを使用するかどうかを指定します。 KeepAlive メッセージを使用すると、クライアントとの TCP 接続が一時的に途切れたとき sshd サーバデーモンは自動的に接続を切断します。
UseLogin { no | yes } loginプログラム使用の可否
ユーザがログインする際に、システムの loginプログラムを利用するかどうかを指定します。

Yusuke Shinyama