web-dev-qa-db-ja.com

ssh_configに複数の「ホスト*」?

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

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

#一般設定
 ControlMaster auto 
 ControlPath ~/.ssh/controlmaster/%r@%h:%p 
 ForwardAgent yes 
 ForwardX11 yes 
 GSSAPIAuthentication no 
 PubkeyAuthentication yes 
 
#Personal Servers 
 Host * 
 User harleypig 
 IdentityFile〜/。 ssh/personal_id_rsa 
 
ホストhost1 
ホスト名Host1.com 
 
ホストhost2 
ホスト名Host2.com 
 
#作業サーバー
ホスト* 
ユーザーalan.young 
 IdentityFile〜/ .ssh/work_id_rsa 
 
ホストwork1 
ホスト名work1.companyserver.com 
 
ホストwork2 
ホスト名work2.companyserver.com 
 
ホスト* 
ユーザーdevuser 
 
 Host dev1 
 Hostname dev1.companyserver.com 
 
 Host dev2 
 Hostname dev2.companyserver.com 

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

ただし、これは発生していません。私が最初に置く「ホスト*」は、以下のすべてのホストが接続しようとするものです。私は何かを誤解したり、見逃したりしていますか?

30
harleypig

から - ssh_config手動

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

したがって、あなたの例では、すべてのホストがUser harleypigおよびIdentityFile ~/.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行に複数のパターンを配置できます。 Host host* more* outlier

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

  • 常にHost *は最後のエントリとして。
  • 複数のHost *エントリ

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

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

同じことがあなたの個人的なマシンにも当てはまります。

16