Skip to main content

Linux / Unixコマンドに関するすべて:sshd

ターミナルでUnixコマンドを使ってみよう (かもしれません 2025)

ターミナルでUnixコマンドを使ってみよう (かもしれません 2025)
Anonim

sshd - OpenSSH SSHデーモン

シノプシス

sshd -deiqtD46 -b ビット -f config_file -g login_grace_time -h host_key_file -k key_gen_time -o オプション -p 港 -あなた len

説明

sshd (SSH Daemon)はssh(1)のデーモンプログラムです。一緒にこれらのプログラムを置き換える rlogin そして rsh安全でないネットワークを介して信頼できない2つのホスト間で安全な暗号化通信を提供します。このプログラムは、インストールと使用が可能な限り容易になるように設計されています。

sshd クライアントからの接続をリッスンするデーモンです。これは通常、/ etc / rcから起動時に起動され、着信接続ごとに新しいデーモンを作成します。フォークされたデーモンは、鍵交換、暗号化、認証、コマンド実行、およびデータ交換を処理します。この実装はsshd 同時にSSHプロトコルバージョン1と2の両方をサポートしています。

SSHプロトコルバージョン1

各ホストには、ホストを識別するためのホスト固有のRSAキー(通常は1024ビット)があります。さらに、デーモンが起動すると、サーバーのRSAキー(通常は768ビット)が生成されます。このキーは、通常、使用されている場合は1時間ごとに再生成され、ディスクに保存されることはありません。

クライアントが接続するたびに、デーモンはその公開ホストとサーバーキーで応答します。クライアントは、RSAホスト鍵とそれ自身のデータベースを比較して、変更されていないことを確認します。次に、クライアントは256ビットの乱数を生成します。ホスト鍵とサーバ鍵の両方を使用してこの乱数を暗号化し、暗号化された番号をサーバに送信します。両者は、この乱数をセッション鍵として使用します。セッション鍵は、セッション内の以降のすべての通信を暗号化するために使用されます。残りのセッションは、デフォルトで3DESが使用されている従来の暗号(現在はBlowfishまたは3DES)を使用して暗号化されています。クライアントは、サーバーが提供する暗号化アルゴリズムから使用する暗号化アルゴリズムを選択します。

次に、サーバーとクライアントが認証ダイアログを表示します。クライアントは、.rhosts認証、RSAホスト認証、RSA挑戦応答認証、またはパスワードベース認証と組み合わせた.rhosts認証を使用して、自身を認証しようとします。

Rhosts認証は基本的に安全ではないため、通常は無効になっていますが、必要に応じてサーバー構成ファイルで有効にすることができます。システムのセキュリティは、rshdrlogind rexecdが無効になります(rloginとrshがマシンに完全に無効になります)。

SSHプロトコルバージョン2

バージョン2も同様に動作します。各ホストには、ホストを識別するためのホスト固有キー(RSAまたはDSA)があります。ただし、デーモンが起動すると、デーモンはサーバーキーを生成しません。フォワードセキュリティは、Diffie-Hellmanキー契約によって提供されます。この鍵の合意により、セッションキーが共有されます。

残りのセッションは、現在、128ビットAES、Blowfish、3DES、CAST128、Arcfour、192ビットAES、または256ビットAESの対称暗号を使用して暗号化されています。クライアントは、サーバーが提供する暗号化アルゴリズムから使用する暗号化アルゴリズムを選択します。さらに、セッションの整合性は、暗号メッセージ認証コード(hmac-sha1またはhmac-md5)を介して提供されます。

プロトコルバージョン2は、公開鍵ベースのユーザー(PubkeyAuthentication)またはクライアントホスト(HostbasedAuthentication)認証方法、従来のパスワード認証、およびチャレンジレスポンスベースの方法を提供します。

コマンド実行とデータ転送

クライアントが正常に認証されると、セッションを準備するためのダイアログが表示されます。この時点で、クライアントは疑似ttyの割り当て、X11接続の転送、TCP / IP接続の転送、またはセキュアなチャネルを介した認証エージェント接続の転送などを要求することがあります。

最後に、クライアントはコマンドのシェルまたは実行を要求します。側面はセッションモードに入ります。このモードでは、いずれの側でもいつでもデータを送信することができ、そのようなデータは、サーバー側のシェルまたはコマンド、およびクライアント側のユーザー端末に転送されます。

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

sshd コマンドラインオプションまたは構成ファイルを使用して構成できます。コマンドラインオプションは、設定ファイルで指定された値を上書きします。

sshd ハングアップシグナルを受信したときにその構成ファイルを再読み込みし、SIGHUP 起動された名前、すなわち/ usr / sbin / sshdでそれ自身を実行することによって

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

-b ビット

エフェメラルプロトコルバージョン1のサーバーキー(デフォルトは768)のビット数を指定します。

-d

デバッグモード。サーバーは冗長なデバッグ出力をシステムログに送信し、バックグラウンドには置かない。サーバーも機能せず、1つの接続のみを処理します。このオプションは、サーバーのデバッグを目的としています。複数の-dオプションはデバッグレベルを上げます。最大値は3です。

-e

このオプションを指定すると、sshd システムログの代わりに標準出力に出力を送信します。

-f configuration_file

構成ファイルの名前を指定します。デフォルトは/ etc / ssh / sshd_configです。sshd構成ファイルがない場合、起動を拒否します。

-g login_grace_time

クライアントが自分自身を認証するための猶予時間を与えます(デフォルトは120秒)。クライアントがこの数秒間にユーザーの認証に失敗すると、サーバーは接続を切断して終了します。ゼロの値は無制限を示します。

-h host_key_file

ホスト鍵が読み込まれるファイルを指定します。このオプションは次の場合に指定する必要があります。sshd rootとして実行されません(通常のホスト鍵ファイルは、通常root以外の誰かが読むことができないため)。デフォルトは、プロトコルバージョン1の場合は/ etc / ssh / ssh_host_key、プロトコルバージョン2の場合は/ etc / ssh / ssh_host_rsa_keyおよび/ etc / ssh / ssh_host_dsa_keyです。異なるプロトコルバージョンおよびホスト鍵用に複数のホスト鍵ファイルを持つことができますアルゴリズム。

-私

そのsshd inetdから実行されています。sshd クライアントに応答する前にサーバ鍵を生成する必要があるため、通常はinetdから実行されず、数十秒かかることがあります。キーが毎回再生された場合、クライアントは長時間待たなければなりません。しかし、小さなキーサイズ(例えば、512)を使用してsshd inetdからの実行可能性があります。

-k key_gen_time

エフェメラルプロトコルバージョン1のサーバーキーを再生成する頻度を指定します(デフォルトは3600秒、または1時間)。キーを再生成するという動機は、キーがどこにも格納されず、約1時間後に、マシンがクラックされたり物理的に押収されたとしても、インターセプトされた通信を解読するためのキーを復元することが不可能になるということです。 0の値は、キーが決して再生成されないことを示します。

-o オプション

設定ファイルで使用される形式でオプションを与えるために使用できます。これは、別々のコマンドラインフラグがないオプションを指定する場合に便利です。

-p

サーバーが接続をリッスンするポートを指定します(デフォルトは22)。複数のポートオプションが許可されています。コマンドラインポートを指定すると、設定ファイルで指定されたポートは無視されます。

-q

静かなモード。システムログには何も送信されません。通常、各接続の開始、認証、および終了が記録されます。

-t

テストモード。構成ファイルの有効性とキーの健全性だけをチェックしてください。これは更新に便利ですsshd 構成オプションが変更される可能性があるため信頼性が高くなります。

-u len

このオプションは、フィールド内のフィールドのサイズを指定するために使用されます。utmp リモートホスト名を保持する構造体。解決されたホスト名が len ドット区切りの10進数値が代わりに使用されます。これにより、このフィールドをオーバーフローさせる非常に長いホスト名を持つホストは、依然として一意に識別されます。指定する - u0 utmpファイルにドット区切りの10進アドレスのみを入れるべきであることを示します。 - u0 予防するために使用されるsshd 認証メカニズムまたは構成が必要としない限り、DNS要求を作成することはできません。 DNSが必要な認証メカニズムには、RhostsAuthenticationRhostsRSAAuthentication ホストベースの認証 そして、from =パターンリストキーファイル内のオプション。 DNSを必要とする設定オプションには、USER @ HOSTpatternを許可ユーザー または拒否者

-D

このオプションを指定するとsshd デタッチすることはなく、デーモンにはなりません。これにより、sshd

-4

sshd IPv4アドレスのみを使用します。

-6

sshd IPv6アドレスのみを使用する。

設定ファイル

sshd / etc / ssh / sshd_config(または指定されたファイル - f コマンドラインで)。ファイル形式と設定オプションについては、sshd_config5を参照してください。

ログインプロセス

ユーザーが正常にログインすると、sshd 次のことを行います:

  1. ログインがttyにあり、コマンドが指定されていない場合は、最後のログイン時刻と/ etc / motdを出力します(設定ファイルや$ HOME / .hushloginで禁止されている場合を除き、Sxファイルを参照)。
  2. ログインがtty上にある場合、ログイン時間を記録します。
  3. / etc / nologinが存在するかどうかをチェックし、内容を出力して終了します(root以外の場合)。
  4. 通常のユーザー権限で実行される変更。
  5. 基本的な環境を設定します。
  6. $ HOME / .ssh / environmentが存在し、ユーザーが環境を変更できる場合は、$ HOME / .ssh / environmentを読み取ります。を参照してくださいPermitUserEnvironment sshd_config5のオプション。
  7. ユーザーのホームディレクトリを変更します。
  8. $ HOME / .ssh / rcが存在する場合は、それを実行します。そうでなければ/ etc / ssh / sshrcが存在し、それを実行します。それ以外の場合はxauthを実行します。 `` rc ''ファイルには標準入力でX11認証プロトコルとクッキーが与えられます。
  9. ユーザーのシェルまたはコマンドを実行します。

Authorized_Keysファイル形式

$ HOME / .ssh / authorized_keysは、プロトコルバージョン1のRSA認証とプロトコルバージョン2の公開鍵認証(PubkeyAuthentication)で許可されている公開鍵をリストするデフォルトファイルです。AuthorizedKeysFile 代替ファイルを指定するために使用することができます。

ファイルの各行には1つのキーが含まれています(空行と `# 'で始まる行はコメントとして無視されます)。各RSA公開鍵は、スペースで区切られた次のフィールドで構成されています:オプション、ビット、指数、モジュラス、コメント。各プロトコルバージョン2の公開鍵は、オプション、keytype、base64で符号化された鍵、コメントで構成されます。オプションフィールドはオプションです。その存在は、行が数字で始まるかどうかによって決まります(オプションフィールドは決して数字で始まらない)。ビット、指数、モジュラス、およびコメントフィールドは、プロトコルバージョン1のRSAキーを提供します。コメントフィールドは何にも使用されません(ただし、ユーザーがキーを識別するのに便利な場合があります)。プロトコルバージョン2では、keytypeは `` ssh-dss ''または `` ssh-rsa ''です

このファイルの行は、通常、公開鍵エンコーディングのサイズのために、数百バイトの長さであることに注意してください。あなたはそれらを入力する必要はありません。代わりに、identity.pub id_dsa.pubまたはid_rsa.pubファイルをコピーして編集します。

sshd 768ビットのプロトコル1およびプロトコル2のキーに対して、最小RSAキーモジュラスサイズを適用します。

オプション(存在する場合)はカンマ区切りのオプション指定で構成されます。二重引用符で囲まれた部分を除き、スペースは使用できません。次のオプション指定がサポートされています(オプションキーワードは大文字と小文字を区別しません)。

from =パターンリスト

公開鍵認証に加えて、コンマで区切られたパターンのリスト( `* 'と`?'はワイルドカードとして機能する)にリモートホストの正規名が存在しなければならないことを指定します。リストには、 `! 'の接頭辞を付けて否定されたパターンも含まれています。 ;正規のホスト名がネゲートされたパターンと一致する場合、そのキーは受け入れられません。このオプションの目的は、オプションでセキュリティを強化することです。公開鍵認証は、それ自身でネットワークやネームサーバなどを信用しません。しかし、誰かが何らかの形で鍵を盗むと、鍵は侵入者が世界のどこからでもログインできるようにします。この追加のオプションは、盗難された鍵の使用をより困難にします(鍵だけでなく、ネームサーバやルータを侵害する必要があります)。

コマンド=コマンド

このキーが認証に使用されるたびにコマンドが実行されることを指定します。ユーザーが指定したコマンド(存在する場合)は無視されます。クライアントがptyを要求した場合、コマンドはptyで実行されます。それ以外の場合は、ttyなしで実行されます。 8ビットのクリーンチャネルが必要な場合は、ptyを要求してはいけません。また、指定する必要がありますいいえ 引用符はバックスラッシュで引用することでコマンドに含めることができます。このオプションは、特定の操作を実行するために特定の公開鍵を制限するのに便利です。たとえば、リモートバックアップを許可するキーがありますが、それ以外のものはありません。明示的に禁止されていない限り、クライアントはTCP / IPおよび/またはX11転送を指定する場合があります。このオプションは、シェル、コマンド、またはサブシステムの実行に適用されることに注意してください。

環境= NAME =値

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

ポート転送なし

このキーを認証に使用すると、TCP / IP転送を禁止します。クライアントからのポート転送要求は、エラーを返します。これは、例えば、コマンド オプション。

no-X11-forwarding

このキーが認証に使用されたときのX11転送を禁止します。クライアントによるすべてのX11転送要求はエラーを返します。

無エージェント転送

この鍵が認証に使用されたときの認証エージェントの転送を禁止します。

いいえ

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

permitopen = host:port

ローカルを制限する`` ssh -L '' 指定されたホストとポートにのみ接続できるように、ポート転送を行います。 IPv6アドレスは、別の構文で指定することができます。 ホスト/ポート 複数 permitopen オプションはコンマで区切って適用できます。指定されたホスト名に対してパターンマッチングは実行されません。リテラルドメインまたはアドレスでなければなりません。

1024 33 12121 … 312314325 [email protected]

from = "*。niksula.hut.fi、!pc.niksula.hut.fi" 1024 35 23 … 2334 ylo @ niksula

コマンド= "dump / home"、no-pty、no-port-forwarding 1024 33 23 … 2323 backup.hut.fi

permitopen = "10.2.1.55:80"、permitopen = "10.2.1.56:25" 1024 33 23 … 2323

Ssh_Known_Hostsファイル形式

/ etc / ssh / ssh_known_hostsおよび$ HOME / .ssh / known_hostsファイルには、既知のすべてのホストのホスト公開鍵が含まれています。グローバルファイルは管理者が用意する必要があり(オプション)、ユーザーごとのファイルは自動的に保持されます。ユーザーが不明なホストから接続するたびにそのキーがユーザーごとのファイルに追加されます。

これらのファイルの各行には、ホスト名、ビット、指数、モジュラス、コメントの各フィールドが含まれています。フィールドはスペースで区切られています。

ホスト名はカンマで区切られたパターンのリストです( '*'と '?'はワイルドカードとして動作します)。各パターンは順番に正規のホスト名(クライアントの認証時)またはユーザー指定の名前(サーバーの認証時)と照合されます。パターンの前に `! 'を付けることもできます。否定を示すために:ホスト名がネゲートされたパターンと一致する場合、それはその行の別のパターンにマッチしたとしても(その行によって)受け入れられません。

ビット、指数、および係数は、RSAホストキーから直接取得されます。例えば/etc/ssh/ssh_host_key.pubから取得することができます。省略可能なコメントフィールドは、行末まで続き、使用されません。

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

ホスト認証を実行する場合、一致する行に適切なキーがある場合、認証が受け入れられます。したがって、同じ名前に対して複数行または異なるホストキーを持つことは許されています(ただし、お勧めしません)。これは必然的に、異なるドメインの短いホスト名がファイルに入れられたときに発生します。ファイルに競合する情報が含まれている可能性があります。いずれかのファイルから有効な情報が見つかると、認証が受け入れられます。

これらのファイルの行は、通常、数百文字の長さであり、実際にホスト鍵を手動で入力したくないことに注意してください。むしろ、スクリプトや/etc/ssh/ssh_host_key.pubを使って生成し、ホスト名を先頭に追加します。

クローネネット、…、130.233.208.41 1024 37 159 … 93 closenet.hut.fi cvs.openbsd.org、199.185.137.3 ssh-rsa AAAA1234 ….. =

関連項目

scp(1)、sftp(1)、ssh(1)、ssh-add1、ssh-agent1、ssh-keygen1、login.conf5、moduli(5)、sshd_config5、sftp-server8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen 「SSHプロトコルアーキテクチャ」 draft-ietf-secsh-architecture-12.txt 2002年1月の作業中の資料

M. Friedl N. Provos W. A. Simpson "SSHトランスポート層プロトコルのDiffie-Hellman Group Exchange" draft-ietf-secsh-dh-group-exchange-02.txt 2002年1月の作業中の資料

重要: 使用 おとこ コマンド( % おとこ 特定のコンピュータでどのようにコマンドが使用されているかを確認することができます。