SSH構成ファイル-同じホストグループのマルチプルユーザー


0

現在、次のssh構成ファイルがあります。

Host 172.30.*
  ControlMaster auto
  ControlPath ~/.ssh/cm_socket/%r@%h:%p

  ServerAliveInterval    60
  TCPKeepAlive           yes
  ProxyCommand           ssh -i /home/ehud/.ssh/my-secret1.pem -q -A ubuntu@some.public.ip nc %h %p
  ControlMaster          auto
  ControlPath            ~/.ssh/mux-%r@%h:%p
  ControlPersist         8h
  User                   ubuntu
  IdentityFile           /home/ehud/.ssh/my-secret1.pem

現在、同じサブネット(172.30。*)に他のマシンがありますが、それらは異なる秘密pemファイルを持っています。別のシークレットpemファイルで同じ設定を追加し、正しいシークレットファイルにリダイレクトするフラグを指定してsshを呼び出したいと思います。

出来ますか??

ありがとう


タイトルはmultiple usersUserパラメーターを使用して何かをしたいかのように表示されます。しかし、あなたの質問の本文はそれが約であることを示唆していますIdentityFile。私はあなたが正しかったことを望み、私の答えは有用です。
カミルマシオロウスキ

回答:


1
ssh -i '/home/ehud/.ssh/my-secret2.pem' …
ssh -o 'IdentityFile=/home/ehud/.ssh/my-secret2.pem' …

上記のコマンドのいずれかがロードされますmy-secret2.pem最初のファイルをしますが、複数のIDファイルを指定することができるので(参照man 1 ssh-iオプション)、ファイルmy-secret1.pem、あなたに与えられたssh_config意志がおそらくも試されます。これが必要な場合とそうでない場合があります。

あなたはこれでOKなら、あなたは指定することができますmy-secret2.pem経由でssh_config次のコードを追加することによって、前にHost 172.30.*あなたが既に持っているブロック:

# Special hosts, new identity file.
Host 172.30.10.*
  IdentityFile           /home/ehud/.ssh/my-secret2.pem

man 5 ssh_config 言う:

各パラメーターについて、最初に取得された値が使用されます。構成ファイルには、Host仕様で区切られたセクションが含まれ、そのセクションは、仕様で指定されたパターンのいずれかに一致するホストにのみ適用されます。一致するホスト名は、コマンドラインで指定されたものです。

各パラメーターについて最初に取得した値が使用されるため、ファイルの先頭近くでより多くのホスト固有の宣言を、最後に一般的なデフォルトを指定する必要があります。

一度しか指定できないパラメータについては、最初に特別なホストに一致し、172.30.*後で範囲全体に一致するので十分です。明らかではありませんIdentityFileが、複数のファイルを指定できるため、「最初に取得した値が使用されます」は実際には適用されません。特別なホストがファイルを使用しないようにするにmy-secret1.pemは、感嘆符(!)の使用に関する追加の知識が必要です。

のスニペットの例ssh_config

# Special hosts, new identity file.
Host 172.30.10.*
  IdentityFile           /home/ehud/.ssh/my-secret2.pem

# Non-special hosts, old identity file.
Host 172.30.* !172.30.10.*
  IdentityFile           /home/ehud/.ssh/my-secret1.pem

# Special and non-special hosts, like in your old config.
# Note there is no IdentityFile line here anymore.
# If there was, it would apply to special and non-special
# hosts, despite some previous IdentityFile line alrady loaded.
Host 172.30.*
  ControlMaster auto
  ControlPath ~/.ssh/cm_socket/%r@%h:%p

  ServerAliveInterval    60
  TCPKeepAlive           yes
  ProxyCommand           ssh -i /home/ehud/.ssh/my-secret1.pem -q -A ubuntu@some.public.ip nc %h %p
  ControlMaster          auto
  ControlPath            ~/.ssh/mux-%r@%h:%p
  ControlPersist         8h
  User                   ubuntu

たとえば、ssh -v 172.30.10.22(特別なホスト)の場合、次のように表示されます。

debug1: /etc/ssh/ssh_config line X: Applying options for 172.30.10.*
debug1: /etc/ssh/ssh_config line Y: Skipping Host block because of negated match for 172.30.10.*
debug1: /etc/ssh/ssh_config line Z: Applying options for 172.30.*

およびssh -v 172.30.99.33(非特殊ホスト)は次を印刷します。

debug1: /etc/ssh/ssh_config line Y: Applying options for 172.30.*
debug1: /etc/ssh/ssh_config line Z: Applying options for 172.30.*

したがって、どちらの方法でも1つの.pemファイルのみが使用されます。

-Fオプションもありますssh。からman 1 ssh

-F configfile
代替のユーザーごとの構成ファイルを指定します。構成ファイルがコマンドラインで指定されている場合、システム全体の構成ファイル(/etc/ssh/ssh_config)は無視されます。ユーザーごとの構成ファイルのデフォルトは~/.ssh/configです。

これにより、まったく異なる設定を手動で読み込むことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.