コマンドラインのマニュアル

Man » sshd マニュアルオンライン - sshd man ページに関する詳細なオンラインドキュメント

🌍
sshd — OpenSSH デーモン

概要

sshd    [-46DdeGiqTtV]    [-C   connection_spec]   [-c   host_certificate_file]   [-E   log_file]
[-f config_file] [-g login_grace_time] [-h host_key_file] [-o option] [-p port] [-u len]

説明

sshd (OpenSSH デーモン) は、ssh(1) のデーモンプログラムです。安全でないネットワークを介して、2つの信頼できないホスト間で安全な暗号化された通信を提供します。

sshd は、クライアントからの接続をリッスンします。通常、起動時に /etc/init.d/ssh から起動されます。
受信する接続ごとに新しいデーモンをフォークします。フォークされたデーモンは、キー交換、暗号化、認証、コマンド実行、データ交換を処理します。

sshd は、コマンドラインオプションまたは構成ファイル(デフォルトでは sshd_config(5))を使用して構成できます。コマンドラインオプションは、構成ファイルで指定された値をオーバーライドします。sshd は、SIGHUP シグナルを受信すると、構成ファイルを再読み込みします。これは、sshd が起動されたときと同じ名前とオプションで自身を実行することで行われます。例: /usr/sbin/sshd。

オプションは次のとおりです。

-4      sshd が IPv4 アドレスのみを使用するように強制します。

-6      sshd が IPv6 アドレスのみを使用するように強制します。

-C connection_spec
-T 拡張テストモードで使用する接続パラメーターを指定します。指定された場合、構成ファイルに適用される Match ディレクティブは、構成を標準出力に書き出す前に適用されます。接続パラメーターは、キーワード=値のペアとして提供され、任意の順序で提供できます。複数の -C オプションを使用するか、カンマ区切りのリストとして使用できます。キーワードは、「addr」、「user」、「host」、「laddr」、「lport」、および「rdomain」であり、それぞれソースアドレス、ユーザー、解決されたソースホスト名、ローカルアドレス、ローカルポート番号、およびルーティングドメインに対応します。さらに、「invalid-user」フラグ(値引数は不要)を指定して、認識されていないユーザー名からの接続をシミュレートできます。

-c host_certificate_file
sshd がキー交換中に自身を識別するために使用する証明書ファイルへのパスを指定します。証明書ファイルは、-h オプションまたは HostKey 構成ディレクティブで指定されたホストキーファイルと一致する必要があります。

-D      このオプションが指定された場合、sshd はデーモン化されず、バックグラウンドで実行されません。
これにより、sshd の監視が容易になります。

-d      デバッグモード。サーバーは詳細なデバッグ出力を標準エラーに出力し、バックグラウンドで実行しません。サーバーは fork(2) も行わず、1つの接続のみを処理します。このオプションは、サーバーのデバッグのみを目的としています。複数の -d オプションは、デバッグレベルを上げます。最大値は 3 です。

-E log_file
log_file にデバッグログを追加する。システムログの代わりにログを記録する。

-e
デバッグログを標準エラー出力に出力する。システムログの代わりに記録する。

-f config_file
設定ファイルのファイル名を指定する。デフォルトは /etc/ssh/sshd_config。設定ファイルがない場合、sshd は起動を拒否する。

-G
設定ファイルを解析して出力する。設定ファイルの有効性を確認し、有効な設定を標準出力に出力して終了する。オプションとして、-C オプションを使用して接続パラメータを指定することにより、Match ルールを適用できる。

-g login_grace_time
クライアントが認証を行う猶予時間 (デフォルトは 120 秒) を指定する。クライアントが指定された秒数以内にユーザーの認証に失敗した場合、サーバーは接続を解除して終了する。0 を指定すると、制限がないことを示す。

-h host_key_file
ホストキーを読み込むファイルを指定する。このオプションは、sshd が root として実行されていない場合に指定する必要がある (通常、通常のホストキーファイルは root 以外のユーザーからは読み取れないため)。デフォルトは /etc/ssh/ssh_host_ecdsa_key、/etc/ssh/ssh_host_ed25519_key、および /etc/ssh/ssh_host_rsa_key。異なるホストキーアルゴリズム用に複数のホストキーファイルを持つことができる。

-i
sshd が inetd(8) から実行されていることを指定する。

-o option
設定ファイルで使用される形式でオプションを指定するために使用できる。これは、個別のコマンドラインフラグがないオプションを指定する場合に役立つ。完全なオプションと値の詳細については、sshd_config(5) を参照してください。

-p port
サーバーが接続をリッスンするポートを指定する (デフォルトは 22)。複数のポートオプションを指定できる。コマンドラインでポートが指定された場合、設定ファイルで Port オプションで指定されたポートは無視される。ListenAddress オプションで指定されたポートは、コマンドラインのポートを上書きする。

-q
サイレントモード。システムログに何も送信されない。通常、各接続の開始、認証、および終了がログに記録される。

-T
拡張テストモード。設定ファイルの有効性を確認し、有効な設定を標準出力に出力して終了する。オプションとして、-C オプションを使用して接続パラメータを指定することにより、Match ルールを適用できる。これは -G フラグと似ているが、-t フラグによって実行される追加のテストも含まれる。

-t
テストモード。設定ファイルの有効性とキーの妥当性のみを確認する。これは、sshd を確実に更新するために役立つ。構成オプションは変更される可能性があるため。

-u len
このオプションは、リモートホスト名が格納されている utmp 構造体のフィールドのサイズを指定するために使用する。解決されたホスト名が len より長い場合、ドット付き 10 進値が代わりに使用される。これにより、このフィールドに収まらない非常に長いホスト名を持つホストでも、一意に識別できるようになる。-u0 を指定すると、utmp ファイルにドット付き 10 進アドレスのみが書き込まれる。-u0 は、sshd が DNS リクエストを行わないようにするために使用することもできる。ただし、認証メカニズムまたは構成で DNS が必要な場合に限る。DNS が必要な認証メカニズムには、HostbasedAuthentication や、キーファイル内の from="pattern-list" オプションの使用などがある。DNS が必要な構成オプションには、AllowUsers または DenyUsers で USER@HOST パターンを使用することなどがある。

-V      バージョン番号を表示して終了します。

認証

OpenSSH SSHデーモンは、SSHプロトコルバージョン2のみをサポートします。各ホストにはホスト固有のキーがあり、ホストを識別するために使用されます。クライアントが接続すると、デーモンは自身の公開ホストキーで応答します。クライアントは、ホストキーを自身のデータベースと比較して、変更されていないことを確認します。フォワードシークレットは、Diffie-Hellmanキー合意によって提供されます。このキー合意により、共有セッションキーが生成されます。残りのセッションは、対称暗号を使用して暗号化されます。クライアントは、サーバーが提供する暗号化アルゴリズムの中から、使用する暗号化アルゴリズムを選択します。さらに、暗号学的メッセージ認証コード(MAC)によってセッションの整合性が提供されます。

最後に、サーバーとクライアントは認証ダイアログを開始します。クライアントは、ホストベース認証、公開鍵認証、チャレンジ応答認証、またはパスワード認証を使用して自身を認証しようとします。

認証タイプに関わらず、アカウントがアクセス可能であるかどうかが確認されます。アカウントがロックされている場合、DenyUsersにリストされている場合、またはそのグループがDenyGroupsにリストされている場合、アカウントはアクセスできません。ロックされたアカウントの定義はシステムによって異なります。一部のプラットフォームには独自の アカウントデータベース(例:AIX)があり、他のプラットフォームではpasswdフィールドを変更します(SolarisおよびUnixWareでは‘*LK*’、HP-UXでは‘*’、Tru64では‘Nologin’を含む、FreeBSDでは先頭に‘*LOCKED*’、ほとんどのLinuxでは先頭に‘!’)。アカウントに対してパスワード認証を無効にし、公開鍵認証は許可したい場合は、passwdフィールドをこれらの値とは異なる値(例:‘NP’または‘*NP*’)に設定する必要があります。

クライアントが正常に認証に成功すると、セッションの準備に関するダイアログが開始されます。この時点で、クライアントは擬似TTYの割り当て、X11接続の転送、TCP接続の転送、または認証エージェント接続をセキュアチャネル経由で転送することを要求できます。

その後、クライアントはインタラクティブシェルまたは非インタラクティブコマンドの実行を要求し、sshdはユーザーのシェルを使用して-cオプションを介して実行します。その後、両側はセッションモードに入ります。このモードでは、どちらかの側がいつでもデータを送信でき、そのデータはサーバー側のシェルまたはコマンドとクライアント側のユーザー端末間で転送されます。

ユーザープログラムが終了し、すべての転送されたX11およびその他の接続が閉じられると、サーバーはコマンドの終了ステータスをクライアントに送信し、両側は終了します。


ログインプロセス

ユーザーが正常にログインすると、sshdは次の処理を行います。

      ログインがtty上で行われ、コマンドが指定されていない場合、最終ログイン時刻と/etc/motdを出力します(ただし、設定ファイルまたは~/.hushloginによって出力が抑制される場合があります。詳細は「FILES」セクションを参照)。

      ログインがtty上で行われた場合、ログイン時間を記録します。

      /etc/nologinが存在するかどうかを確認し、存在する場合はその内容を出力して終了します(ただし、rootユーザーの場合は例外)。

      通常のユーザー権限で実行するように変更します。

      基本的な環境を設定します。

      ~/.ssh/environmentファイルが存在し、ユーザーが環境を変更することを許可されている場合、その内容を読み込みます。PermitUserEnvironmentオプションについては、sshd_config(5)を参照してください。

      ユーザーのホームディレクトリに移動します。

      ~/.ssh/rcファイルが存在し、sshd_config(5)のPermitUserRCオプションが設定されている場合、そのファイルを実行します。そうでない場合、/etc/ssh/sshrcファイルが存在する場合はそのファイルを実行し、そうでない場合は[xauth]({filename}../../xauth)(1)を実行します。これらの「rc」ファイルには、X11認証プロトコルとクッキーが標準入力から渡されます。詳細は「SSHRC」を参照してください。

      ユーザーのシェルまたはコマンドを実行します。すべてのコマンドは、システムパスワードデータベースに指定されたユーザーのログインシェルで実行されます。

SSHRC

~/.ssh/rcファイルが存在する場合、sh(1)は、環境ファイルを読み込んだ後、ユーザーのシェルまたはコマンドを開始する前に、そのファイルを実行します。標準出力に何も出力してはならず、標準エラー出力を使用する必要があります。X11フォワーディングが使用されている場合、標準入力から「プロトコル クッキー」のペアを受け取り(DISPLAYは環境変数に設定されます)。このスクリプトは、sshdがxauthを自動的に実行してX11クッキーを追加しないため、xauth(1)を呼び出す必要があります。

このファイルは、ユーザーのホームディレクトリにアクセスする前に必要な初期化ルーチンを実行するために使用されます。AFSは、このような環境の具体的な例です。

このファイルには、通常、いくつかの初期化コードとそれに続く次のようなコードが含まれています。

if read proto cookie && [ -n "$DISPLAY" ]; then
if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
# X11UseLocalhost=yes
echo add unix:`echo $DISPLAY |
cut -c11-` $proto $cookie
else
# X11UseLocalhost=no
echo add $DISPLAY $proto $cookie
fi | xauth -q fi

このファイルが存在しない場合、/etc/ssh/sshrcが実行され、それが存在しない場合も、xauthがクッキーを追加するために使用されます。

AUTHORIZED_KEYSファイルの形式

AuthorizedKeysFileは、公開鍵認証に使用する公開鍵を含むファイルの場所を指定します。このオプションが指定されていない場合、デフォルトは~/.ssh/authorized_keysと~/.ssh/authorized_keys2です。ファイル内の各行には、1つのキーが含まれます(空の行と「#」で始まる行はコメントとして無視されます)。公開鍵は、次のスペースで区切られたフィールドで構成されます。オプション、キータイプ、Base64エンコードされたキー、コメント。オプションフィールドはオプションです。サポートされているキータイプは次のとおりです。

_
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
_
ssh-ed25519
ssh-rsa

コメントフィールドは何にも使用されません(ただし、ユーザーがキーを識別するのに便利です)。

このファイル内の行は、数百バイトの長さになる可能性があります(公開キーエンコードのサイズによる)。最大8キロバイトまでで、これにより、最大16キロビットのRSAキーが許可されます。手動で入力する必要はありません。代わりに、id_ecdsa.pub、id_ecdsa_sk.pub、id_ed25519.pub、id_ed25519_sk.pub、またはid_rsa.pubファイルをコピーして編集してください。

sshdは、RSAキーのモジュラスサイズの最小値を1024ビットに設定しています。

オプション(存在する場合)は、カンマで区切られたオプション仕様で構成されます。スペースは許可されません。ただし、二重引用符内の場合は許可されます。次のオプション仕様がサポートされています(オプションのキーワードは大文字と小文字を区別しません)。

agent-forwarding

以前にrestrictオプションによって無効になっていた認証エージェントフォワーディングを有効にします。

cert-authority

リストされたキーが、ユーザー認証のために署名された証明書を検証することを信頼できる認証局(CA)であることを指定します。

証明書には、これらのキーオプションと同様のアクセス制限がエンコードされている場合があります。証明書の制限とキーオプションの両方が存在する場合、両方の最も制限の厳しい組み合わせが適用されます。

command="command"

このキーが認証に使用されるたびに実行されるコマンドを指定します。ユーザーが提供したコマンド(存在する場合)は無視されます。コマンドは、クライアントがptyを要求する場合はptyで実行され、そうでない場合はptyなしで実行されます。8ビットのクリーンチャネルが必要な場合は、ptyを要求したり、no-ptyを指定したりしないでください。引用符をコマンドに含めるには、バックスラッシュで引用符をエスケープします。

このオプションは、特定の公開キーを特定の操作のみを実行するように制限するために役立つ場合があります。たとえば、リモートバックアップのみを許可するキーなどです。クライアントがTCPおよび/またはX11フォワーディングを指定できます。ただし、restrictキーオプションを使用して明示的に禁止されている場合は例外です。

クライアントが提供した元のコマンドは、SSH_ORIGINAL_COMMAND環境変数で利用できます。このオプションは、シェル、コマンド、またはサブシステム実行に適用されることに注意してください。また、このコマンドは、sshd_config(5)のForceCommandディレクティブによって上書きされる可能性があります。

コマンドが指定され、認証に使用される証明書に強制コマンドが埋め込まれている場合、証明書は両方のコマンドが同じ場合にのみ受け入れられます。

environment="NAME=value"

このキーを使用してログインするときに、文字列を環境に追加することを指定します。この方法で設定された環境変数は、他のデフォルトの環境値を上書きします。複数のオプションをこのタイプで許可できます。環境処理はデフォルトで無効になっており、PermitUserEnvironmentオプションによって制御されます。

expiry-time="timespec"

この時間以降は、キーが受け入れられなくなる時間を指定します。時間は、YYYYMMDD[Z]形式の日付またはYYYYMMDDHHMM[SS][Z]形式の時間として指定できます。日付と時間は、システム時間帯で解釈されます。ただし、末尾にZ文字が付いている場合は、UTC時間帯で解釈されます。


from="pattern-list"

パブリックキー認証に加えて、リモートホストの正規名またはそのIPアドレスが、カンマで区切られたパターンのリストに含まれている必要があります。パターンの詳細については、ssh_config(5)のPATTERNSを参照してください。

ホスト名またはアドレスに適用できるワイルドカードマッチングに加えて、fromスタンザはCIDRアドレス/マスク長表記を使用してIPアドレスに一致させることができます。

このオプションの目的は、オプションでセキュリティを強化することです。パブリックキー認証だけでは、ネットワーク、名前サーバー、またはその他のものを信頼しません(ただし、キーは信頼します)。ただし、何らかの方法でキーが盗まれた場合、そのキーは侵入者が世界のどこからでもログインすることを許可します。この追加のオプションを使用すると、盗まれたキーの使用がより困難になります(名前サーバーやルーターに加えて、キーも侵害される必要があります)。

no-agent-forwarding

このキーが認証に使用された場合、認証エージェントの転送を禁止します。

no-port-forwarding

このキーが認証に使用された場合、TCP転送を禁止します。クライアントからのポート転送要求はすべてエラーを返します。これは、たとえば、commandオプションと組み合わせて使用できます。

no-pty

ttyの割り当てを防ぎます(ttyの割り当て要求は失敗します)。

no-user-rc

~/.ssh/rcの実行を無効にします。

no-X11-forwarding

このキーが認証に使用された場合、X11転送を禁止します。X11転送要求はすべてエラーを返します。

permitlisten="[host:]port"

ssh(1) -Rオプションを使用したリモートポート転送を制限し、指定されたホスト(オプション)とポートでのみリッスンできるようにします。IPv6アドレスは、角かっこで囲んで指定できます。複数のpermitlistenオプションをカンマで区切って適用できます。ホスト名には、ssh_config(5)のPATTERNSセクションで説明されているように、ワイルドカードを含めることができます。ポート指定に*を使用すると、すべてのポートに一致します。GatewayPortsの設定が、リッスンするアドレスをさらに制限する可能性があることに注意してください。また、ssh(1)は、リッスンするホストが指定されていない場合に「localhost」というホスト名を送信し、この名前は、明示的なlocalhostアドレス「127.0.0.1」および「::1」とは異なる方法で処理されることに注意してください。

permitopen="host:port"

ssh(1) -Lオプションを使用したローカルポート転送を制限し、指定されたホストとポートにのみ接続できるようにします。IPv6アドレスは、角かっこで囲んで指定できます。複数のpermitopenオプションをカンマで区切って適用できます。指定されたホスト名に対してパターンマッチングまたは名前解決は実行されません。それらは、リテラルなホスト名および/またはアドレスである必要があります。ポート指定に*を使用すると、すべてのポートに一致します。

port-forwarding

restrictオプションで以前に無効にしたポート転送を有効にします。


principals="principals"

cert-authority オプションで信頼できる証明書発行局としてマークされていないキーについては、このオプションは無視されます。証明書認証のために、cert-authority 行で、証明書に含めることができるプリンシパルのリストをカンマ区切りで指定します。リスト内の少なくとも 1 つの名前が、証明書のプリンシパルのリストに含まれている必要があります。

pty

restrict オプションで以前に無効になっていた tty の割り当てを許可します。

no-touch-required

このキーを使用して署名する際に、ユーザーの存在を証明することを必須としないようにします。このオプションは、FIDO 認証器アルゴリズムである ecdsa-sk および ed25519-sk に対してのみ意味があります。

verify-required

このキーを使用して署名する際に、PIN などを使用してユーザーの認証が行われたことを必ず確認するようにします。このオプションは、FIDO 認証器アルゴリズムである ecdsa-sk および ed25519-sk に対してのみ意味があります。

restrict

すべての制限を有効にします。つまり、ポート、エージェント、および X11 フォワーディングを無効にし、PTY の割り当ておよび ~/.ssh/rc の実行も無効にします。将来、authorized_keys ファイルに制限機能が追加された場合、それらはすべてこのセットに含まれます。

tunnel="n"

サーバー側で tun(4) デバイスを強制します。このオプションがない場合、クライアントがトンネルを要求すると、次の利用可能なデバイスが使用されます。

user-rc

restrict オプションで以前に無効になっていた ~/.ssh/rc の実行を有効にします。

X11-forwarding

restrict オプションで以前に無効になっていた X11 フォワーディングを許可します。

authorized_keys ファイルの例:

# コメントは行の先頭に記述できます。空白行も許可されます。
# 単純なキーで、制限はありません。
ssh-rsa ...
# コマンドを強制し、PTY およびすべてのフォワーディングを無効にします。
restrict,command="dump /home" ssh-rsa ...
# ssh -L フォワーディングの宛先の制限
permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-rsa ...
# ssh -R フォワーディングリスナーの制限
permitlisten="localhost:8080",permitlisten="[::1]:22000" ssh-rsa ...
# トンネルフォワーディングの構成
tunnel="0",command="sh /etc/netstart tun0" ssh-rsa ...
# 制限をオーバーライドして PTY 割り当てを許可します。
restrict,pty,command="nethack" ssh-rsa ...
# FIDO キーで、タッチを必須としないことを許可します。
no-touch-required _ ...
# FIDO キーで、ユーザー認証(PIN または生体認証など)を必須とします。
verify-required _ ...
# CA キーを信頼し、証明書にリクエストされた場合にタッチレス FIDO を許可します。
cert-authority,no-touch-required,principals="user_a" ssh-rsa ...

SSH_KNOWN_HOSTS ファイル形式

/etc/ssh/ssh_known_hosts および ~/.ssh/known_hosts ファイルには、既知のすべてのホストのホストパブリックキーが含まれています。グローバルファイルは管理者が準備する必要があります(オプション)、パーユーザーファイルは自動的に保守されます。ユーザーが不明なホストに接続すると、そのキーがパーユーザーファイルに追加されます。

これらのファイル内の各行には、次のフィールドが含まれます:マーカー(オプション)、ホスト名、キータイプ、base64 エンコードされたキー、コメント。フィールドはスペースで区切られます。

マーカーはオプションですが、存在する場合は、"@cert-authority"(行に認証局(CA)キーが含まれていることを示す)または "@revoked"(行に含まれるキーが無効であり、決して受け入れられないことを示す)のいずれかでなければなりません。キー行に含めることができるマーカーは 1 つだけです。

ホスト名は、カンマで区切られたパターンのリストです(「*」と「?」はワイルドカードとして機能します)。各パターンは、ホスト名に対して順番に照合されます。sshdがクライアントを認証する場合(HostbasedAuthenticationを使用する場合など)、これは正規のクライアントホスト名になります。[ssh]({filename}../../ssh)(1)がサーバーを認証する場合、これはユーザーが指定したホスト名、[ssh]({filename}../../ssh)(1)HostkeyAliasが指定されている場合はその値、または[ssh]({filename}../../ssh)(1)CanonicalizeHostnameオプションが使用された場合は正規のサーバーホスト名になります。

パターンは、「!」で始まることもあり、これは否定を示します。ホスト名が否定されたパターンに一致する場合、その行では受け入れられません(別のパターンに一致した場合でも)。ホスト名またはアドレスは、オプションで「[」と「]」の括弧で囲み、その後にコロンと標準外のポート番号を続けることができます。

あるいは、ホスト名はハッシュ化された形式で保存することもでき、その場合、ホスト名とアドレスが隠されます。ハッシュ化されたホスト名は、「|」文字で始まります。1つの行にハッシュ化されたホスト名を1つだけ含めることができ、上記の否定またはワイルドカード演算子は使用できません。

キータイプとbase64エンコードされたキーは、ホストキーから直接取得されます。これらは、たとえば/etc/ssh/ssh_host_rsa_key.pubから取得できます。オプションのコメントフィールドは行末まで続きますが、使用されません。

「#」で始まる行と空行は、コメントとして無視されます。

ホスト認証を実行する場合、認証は、一致する行に適切なキーが含まれている場合に受け入れられます。これは、正確に一致するキーか、サーバーが認証のために証明書を提示した場合、証明書に署名した認証局のキーです。キーを認証局として信頼するには、「@cert-authority」マーカーを使用する必要があります(上記を参照)。

既知のホストファイルには、キーを無効としてマークする機能も含まれており、たとえば、関連する秘密鍵が盗まれたことがわかっている場合に使用できます。無効化されたキーは、行の先頭に「@revoked」マーカーを含めて指定し、認証や認証局としては決して受け入れられず、代わりに、[ssh]({filename}../../ssh)(1)がそれらに遭遇すると警告が表示されます。

同じ名前に対して複数の行または異なるホストキーを持つことは許可されています(ただし、推奨されません)。これは、異なるドメインからのホスト名の短い形式がファイルに配置された場合に必ず発生します。ファイルに矛盾した情報が含まれている可能性があります。認証は、有効な情報がどちらかのファイルから見つかった場合に受け入れられます。


これらのファイル内の行は通常、数百文字も長いため、ホストキーを手動で入力することは絶対に避けたいでしょう。代わりに、スクリプト、ssh-keyscan(1)を使用するか、たとえば、/etc/ssh/ssh_host_rsa_key.pub を取得し、ホスト名を先頭に追加して生成します。 ssh-keygen(1) は、~/.ssh/known_hosts を自動的に編集するための基本的な機能も提供しており、ホスト名に一致するホストを削除したり、すべてのホスト名をハッシュ表現に変換したりできます。

ssh_known_hosts ファイルの例:

# 行の先頭にコメントを挿入できます
cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
# ハッシュ化されたホスト名
|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
AAAA1234.....=
# 取り消されたキー
@revoked * ssh-rsa AAAAB5W...
# CA キー。*.mydomain.com または *.mydomain.org 内のすべてのホストで受け入れられます。
@cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...

ファイル

~/.hushlogin

このファイルは、PrintLastLog と PrintMotd が有効になっている場合、最後のログイン時刻と /etc/motd の表示を抑制するために使用されます。 Banner で指定されたバナーの表示は抑制されません。

~/.rhosts

このファイルは、ホストベース認証に使用されます (詳細については ssh(1) を参照)。一部のシステムでは、ユーザーのホームディレクトリが NFS パーティション上にある場合、このファイルは世界中で読み取り可能である必要があります。これは、sshd が root としてこのファイルを読み取るためです。さらに、このファイルはユーザーが所有し、他のユーザーが書き込みアクセス権を持ってはなりません。ほとんどのシステムで推奨されるアクセス許可は、ユーザーに対して読み取り/書き込みアクセス権を与え、他のユーザーに対してアクセスを許可しないことです。

~/.shosts

このファイルは .rhosts とまったく同じように使用されますが、rlogin/rsh によるログインを許可せずにホストベース認証を可能にします。

~/.ssh/

このディレクトリは、すべてのユーザー固有の構成および認証情報のデフォルトの場所です。このディレクトリ全体を秘密にしておく必要があるわけではありませんが、推奨されるアクセス許可は、ユーザーに対して読み取り/書き込み/実行アクセス権を与え、他のユーザーに対してアクセスを許可しないことです。

~/.ssh/authorized_keys

このファイルには、このユーザーとしてログインするために使用できる公開キー (ECDSA、Ed25519、RSA) がリストされます。このファイルの形式は上記で説明されています。このファイルの内容は非常に機密性が高いわけではありませんが、推奨されるアクセス許可は、ユーザーに対して読み取り/書き込みアクセス権を与え、他のユーザーに対してアクセスを許可しないことです。

このファイル、~/.ssh ディレクトリ、またはユーザーのホームディレクトリが他のユーザーによって書き込み可能になっている場合、これらのファイルは不正なユーザーによって変更または置き換えられる可能性があります。この場合、StrictModes オプションが "no" に設定されていない限り、sshd はこれらのファイルの使用を許可しません。

~/.ssh/environment

このファイルは、ログイン時に環境に読み込まれます (存在する場合)。空行、コメント行 (「#」で始まる)、および name=value の形式の割り当て行のみを含めることができます。ファイルはユーザーによってのみ書き込み可能である必要があり、誰にとっても読み取り可能である必要はありません。環境処理はデフォルトで無効になっており、PermitUserEnvironment オプションによって制御されます。


~/.ssh/known_hosts
ユーザーがログインしたすべてのホストのホストキーのリストが含まれます。ただし、システム全体のホストキーリストにすでに含まれているホストは除きます。このファイルの形式は上記で説明されています。
このファイルは、root/所有者のみが書き込み可能であり、世界的に読み取り可能であってもなくても構いません。

~/.ssh/rc
ユーザーのホームディレクトリへのアクセスが可能になる前に実行される初期化ルーチンが含まれます。このファイルはユーザーのみが書き込み可能であり、他の誰からも読み取り可能である必要はありません。

/etc/hosts.allow
/etc/hosts.deny
tcp-wrappersによって適用されるべきアクセス制御は、ここに定義されています。詳細は hosts\_access(5) を参照してください。

/etc/hosts.equiv
このファイルは、ホストベース認証([ssh]({filename}../../ssh)(1) を参照)に使用されます。rootのみが書き込み可能である必要があります。

/etc/ssh/moduli
「Diffie-Hellman Group Exchange」キー交換方法で使用されるDiffie-Hellmanグループが含まれます。ファイル形式は moduli(5) で説明されています。このファイルで利用可能なグループが見つからない場合、固定の内部グループが使用されます。

/etc/motd
motd(5) を参照してください。

/etc/nologin
このファイルが存在する場合、sshd は root 以外のすべてのユーザーのログインを拒否します。ファイルの内容は、ログインを試みるすべてのユーザーに表示され、root 以外の接続は拒否されます。ファイルは世界的に読み取り可能である必要があります。

/etc/ssh/shosts.equiv
このファイルは hosts.equiv と同じように使用されますが、rlogin/rsh を使用したログインを許可せずに、ホストベース認証を可能にします。

/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_rsa_key
これらのファイルには、ホストキーの秘密部分が含まれています。これらのファイルは、root が所有し、root のみが読み取り可能であり、他のユーザーがアクセスできないようにする必要があります。これらのファイルがグループ/世界的にアクセス可能である場合、sshd は起動しません。

/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub
これらのファイルには、ホストキーの公開部分が含まれています。これらのファイルは、世界的に読み取り可能であり、root のみが書き込み可能である必要があります。これらのファイルの内容は、それぞれの秘密部分と一致する必要があります。これらのファイルは、ssh-keygen(1) を使用して作成されます。これらのファイルは、実際には何にも使用されません。これらは、ユーザーが内容を known_hosts ファイルにコピーできるようにするために提供されています。

/etc/ssh/ssh_known_hosts
システム全体の既知ホストキーのリスト。このファイルは、システム管理者によって準備され、組織内のすべてのマシンの公開ホストキーが含まれている必要があります。このファイルの形式は上記で説明されています。このファイルは、root/所有者のみが書き込み可能であり、世界的に読み取り可能である必要があります。

/etc/ssh/sshd_config
sshd の構成データが含まれています。ファイル形式と構成オプションは sshd\_config(5) で説明されています。

/etc/ssh/sshrc
~/.ssh/rc と同様に、マシン固有のログイン時の初期化をグローバルに指定するために使用できます。このファイルは、root のみが書き込み可能であり、世界的に読み取り可能である必要があります。

/run/sshd
chroot(2) ディレクトリは、sshdが認証前の段階で特権分離を行う際に使用します。このディレクトリにはファイルを含めるべきではなく、rootが所有し、グループまたは他のユーザーが書き込み可能であってはなりません。

/run/sshd.pid
接続をリッスンしているsshdプロセスのプロセスIDが含まれています(異なるポートに対して複数のデーモンが同時に実行されている場合、最後に開始されたデーモンのプロセスIDが含まれます)。このファイルの内容は機密ではありません。世界中のユーザーが読み取ることができます。

関連項目

scp(1)、sftp(1)、ssh(1)、ssh-add(1)、ssh-agent(1)、ssh-keygen(1)、ssh-keyscan(1)、chroot(2)、hosts_access(5)、moduli(5)、sshd_config(5)、inetd(8)、sftp-server(8)

著者

OpenSSHは、Tatu Ylonenによるオリジナルの無料のssh 1.2.12リリースをベースに開発されました。Aaron Campbell、Bob Beck、Markus Friedl、Niels Provos、Theo de Raadt、Dug Songは、多くのバグを修正し、新しい機能を再追加し、OpenSSHを作成しました。Markus Friedlは、SSHプロトコルバージョン1.5および2.0のサポートに貢献しました。Niels ProvosとMarkus Friedlは、特権分離のサポートに貢献しました。