ssh_configに複数の「ホスト*」がありますか?


27

〜/ .ssh / configの動作方法についての私の理解は、各 'Host'行は、構成ファイル内のそのポイント以降に一致するホストに対して有効になるということです。

接続する必要がある個人用サーバーと作業用サーバーがいくつかあります。私は次のようなことをしようとしています:

# 一般設定
ControlMaster auto
ControlPath ~/.ssh/controlmaster/%r@%h:%p
ForwardAgentはい
ForwardX11はい
GSSAPIAuthentication no
PubkeyAuthenticationはい

#パーソナルサーバー
ホスト *
ユーザーharleypig
IdentityFile〜/ .ssh / personal_id_rsa

ホストhost1
ホスト名host1.com

ホストhost2
ホスト名host2.com

#作業サーバー
ホスト *
ユーザーalan.young
IdentityFile〜/ .ssh / work_id_rsa

ホスト作業1
ホスト名work1.companyserver.com

ホストwork2
ホスト名work2.companyserver.com

ホスト *
ユーザーdevuser

ホストdev1
ホスト名dev1.companyserver.com

ホストdev2
ホスト名dev2.companyserver.com

ドキュメントは、host1とhost2が 'personal_id_rsa'とユーザーharleypigを使用する必要があることを示しているようです。work1、work2、dev1、dev2は「work_id_rsa」を使用し、最初の2つはユーザー「alan.young」、dev1とdev2はユーザー「devuser」である必要があります

しかし、これは起きていません。私が最初に置いた「ホスト*」は、次のすべてのホストが接続しようとするものです。私は何かを誤解したり見落としたりしていますか?


ありがとう、これらの答えの両方の間に、私は私の接続を機能させることができました。
-harleypig

回答:


36

ssh_configマニュアルから:

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

したがって、この例では、すべてのホストがとを使用User harleypigIdentityFile ~/.ssh/personal_id_rsaます。

フォールドHostカードとしてのワイルドカードを使用したディレクティブを考えてください。次の設定は、まだ設定されていない場合にのみ使用してください。次のようなものを書く必要があります。

Host host1
Hostname host1.com
Host host2
Hostname host2.com
Host host*
User harleypig
IdentityFile ~/.ssh/personal_id_rsa

Hostホストエイリアスの特定のセットが、などのワイルドカードと一致しない場合、1 行に複数のパターンを配置できますHost host* more* outlier


15

あなたは間違いなく間違っています。

  • 常にHost *最後のエントリとして配置する必要があります。
  • 複数のHost *エントリを持つことはできません

作業マシンの名前形式が一般化されて、作業マシンのみを対象とする場合(machine1.work.com、host.work.com、fileserver.work.comなど)、作業マシンを次のように対象とすることができます。

Host *.work.com
User alan.young
IdentityFile ~/.ssh/work_id_rsa

同じことがあなたのパーソナルマシンにも当てはまります。


私にとって、Host *ファイルの先頭に置くことはうまくいくようです。おそらく、ワイルドカードを使用しているという事実は、それが優先順位を付ける際の最初のエントリであるという事実に勝っていますか?
ザズ

ところで、これHost *.work.comは無効な構文です。それは他の方法でのみ動作します:Host myserver*
ダニエルアンドレイミンカ

3
@MincăDanielAndreiは両方の方法で機能します。単なるワイルドカード表現であり、他のワイルドカードとして使用できます。。。ホストのgit-codecommit * amazonaws.comこれは私の〜/ .ssh / configにからの実施例である
Hameedullahカーン

@HameedullahKhan真剣に、私はそれを試してみましたが、応答しません。行う場合Host *subdomain.com、応答しません。
ダニエルアンドレイミンカ

1
@MincăDanielAndreiこの動作はマニュアルページに記載されていますが、動作しない場合(私にとっても)バグです。
goetzc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.