GNU/Linux >> Linux の 問題 >  >> Linux

SSH構成ファイルの使用

SSH経由で複数のリモートシステムに定期的に接続している場合、すべてのリモートIPアドレス、異なるユーザー名、非標準ポート、およびさまざまなコマンドラインオプションを覚えておくのは、不可能ではないにしても難しいことに気付くでしょう。

1つのオプションは、リモートサーバー接続ごとにbashエイリアスを作成することです。ただし、この問題には、もう1つ、はるかに優れた、より簡単な解決策があります。 OpenSSHを使用すると、接続するリモートマシンごとに異なるSSHオプションを保存できるユーザーごとの構成ファイルを設定できます。

この記事では、SSHクライアント構成ファイルの基本について説明し、最も一般的な構成オプションのいくつかについて説明します。

前提条件#

LinuxまたはOpenSSHクライアントがインストールされたmacOSシステムを使用していることを前提としています。

SSH構成ファイルの場所#

OpenSSHクライアント側構成ファイルの名前はconfigです。 、および .sshに保存されます ユーザーのホームディレクトリの下にあるディレクトリ。

〜/ .ssh ユーザーがsshを実行すると、ディレクトリが自動的に作成されます 初めてのコマンド。システムにディレクトリが存在しない場合は、次のコマンドを使用してディレクトリを作成します。

mkdir -p ~/.ssh && chmod 700 ~/.ssh

デフォルトでは、SSH構成ファイルが存在しない可能性があるため、 touchを使用して作成する必要がある場合があります。 コマンド:

touch ~/.ssh/config

このファイルは、ユーザーのみが読み取りおよび書き込み可能であり、他のユーザーがアクセスできないようにする必要があります。

chmod 600 ~/.ssh/config

SSH構成ファイルの構造とパターン#

SSH構成ファイルは次の構造を取ります:

Host hostname1
    SSH_OPTION value
    SSH_OPTION value

Host hostname2
    SSH_OPTION value

Host *
    SSH_OPTION value

SSHクライアント構成ファイルの内容は、スタンザ(セクション)に編成されています。各スタンザはHostで始まります ディレクティブであり、リモートSSHサーバーとの接続を確立するときに使用される特定のSSHオプションが含まれています。

インデントは必須ではありませんが、ファイルが読みやすくなるため、インデントをお勧めします。

ホスト ディレクティブには、1つのパターンまたは空白で区切られたパターンのリストを含めることができます。各パターンには、0個以上の非空白文字、または次のパターン指定子の1つを含めることができます。

  • * -0文字以上に一致します。たとえば、 Host * 192.168.0。*の間、すべてのホストに一致します 192.168.0.0/24のホストと一致します サブネット。
  • -1文字に完全に一致します。パターンHost10.10.0.? 10.10.0。[0-9]のすべてのホストに一致します 範囲。
  • -パターンの先頭で使用すると、一致が無効になります。たとえば、 Host 10.10.0。*!10.10.0.5 10.10.0.0/ 24内の任意のホストと一致します 10.10.10.5を除くサブネット 。

SSHクライアントは、構成ファイルのスタンザをスタンザごとに読み取ります。複数のパターンが一致する場合は、最初に一致したスタンザのオプションが優先されます。したがって、より多くのホスト固有の宣言をファイルの先頭に指定し、より一般的なオーバーライドをファイルの末尾に指定する必要があります。

man ssh_config と入力すると、使用可能なsshオプションの完全なリストを見つけることができます。 ターミナルで、またはssh_configのマニュアルページにアクセスします。

SSH構成ファイルは、 scpなどの他のプログラムによっても読み取られます。 、 sftp 、および rsync

SSH構成ファイルの例#

SSH構成ファイルの基本について説明したので、次の例を見てみましょう。

通常、SSH経由でリモートサーバーに接続する場合は、リモートユーザー名、ホスト名、およびポートを指定します。たとえば、 johnという名前のユーザーとしてログインするには dev.example.comというホストに ポート2322 コマンドラインから次のように入力します:

ssh [email protected] -p 2322

上記のコマンドで提供されたものと同じオプションを使用してサーバーに接続するには、 ssh devと入力するだけです。 、次の行を "〜/ .ssh / configに追加します ファイル:

〜/ .ssh / config
Host dev
    HostName dev.example.com
    User john
    Port 2322

ここで、 ssh devと入力すると 、sshクライアントは構成ファイルを読み取り、 devに指定されている接続の詳細を使用します ホスト:

ssh dev
共有SSH構成ファイルの例#

この例では、ホストパターンとオプションの優先順位に関する詳細情報を提供します。

次のサンプルファイルを見てみましょう:

Host targaryen
    HostName 192.168.1.10
    User daenerys
    Port 7654
    IdentityFile ~/.ssh/targaryen.key

Host tyrell
    HostName 192.168.10.20

Host martell
    HostName 192.168.10.50

Host *ell
    user oberyn

Host * !martell
    LogLevel INFO

Host *
    User root
    Compression yes
  • ssh targaryenと入力すると 、sshクライアントはファイルを読み取り、最初に一致した Host targaryenからオプションを適用します。 。次に、一致するパターンがないか、次のスタンザを1つずつチェックします。次に一致するのはHost*!martellです。 ( martellを除くすべてのホストを意味します )、このスタンザからの接続オプションを適用します。最後の定義Host* も一致しますが、sshクライアントは Compressionのみを使用します Userのためのオプション オプションはHosttargaryenですでに定義されています スタンザ。

    ssh targaryenと入力するときに使用されるオプションの完全なリスト は次のとおりです:

    HostName 192.168.1.10
    User daenerys
    Port 7654
    IdentityFile ~/.ssh/targaryen.key
    LogLevel INFO
    Compression yes
  • ssh tyrellを実行している場合 一致するホストパターンは次のとおりです。Hosttyrell Host * ell Host *!martell およびHost* 。この場合に使用されるオプションは次のとおりです。

    HostName 192.168.10.20
    User oberyn
    LogLevel INFO
    Compression yes
  • ssh martellを実行する場合 、一致するホストパターンは次のとおりです。 Host martell Host * ell およびHost* 。この場合に使用されるオプションは次のとおりです。

    HostName 192.168.10.50
    User oberyn
    Compression yes
  • 他のすべての接続では、sshクライアントは Host *!martellで指定されたオプションを使用します およびHost* セクション。

SSH構成ファイルオプション#を上書きする

sshクライアントは、次の優先順位で構成を読み取ります。

  1. コマンドラインから指定されたオプション。
  2. 〜/ .ssh / configで定義されているオプション 。
  3. / etc / ssh / ssh_configで定義されているオプション 。

単一のオプションをオーバーライドする場合は、コマンドラインで指定できます。たとえば、次の定義がある場合:

Host dev
    HostName dev.example.com
    User john
    Port 2322

他のすべてのオプションを使用したいが、ユーザー rootとして接続したい johnの代わりに コマンドラインでユーザーを指定するだけです:

ssh -o "User=root" dev

-F configfile )オプションを使用すると、代替のユーザーごとの構成ファイルを指定できます。

sshに伝えるには クライアントがssh構成ファイルで指定されたすべてのオプションを無視するには、次を使用します。

ssh -F /dev/null [email protected]

結論#

ユーザーのssh構成ファイルを構成する方法を説明しました。 SSHキーベースの認証を設定し、パスワードを入力せずにLinuxサーバーに接続することもできます。

デフォルトでは、SSHはポート22でリッスンします。デフォルトのSSHポートを変更すると、自動攻撃のリスクが軽減されるため、サーバーのセキュリティがさらに強化されます。

ご不明な点がございましたら、下にコメントを残してください。


Linux
  1. ASP.NETサイトが間違ったWeb.configファイルを使用しているようです

  2. SSHを使用してサーバーからファイルをダウンロードするには?

  3. Yocto で u-boot の構成を変更する方法

  1. バッシュ‘?

  2. 正しいユーザーとして ssh ログインする方法は?

  3. SSH - ~/.ssh/config ファイルに -t コマンドを含める方法

  1. Fifoと一時ファイルまたはパイプを使用する目的は?

  2. ssh コマンドを使用してリモート ホストに接続する方法

  3. Pythonを使用してSSHする最も簡単な方法は何ですか?