〜/ .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」である必要があります
ただし、これは発生していません。私が最初に置く「ホスト*」は、以下のすべてのホストが接続しようとするものです。私は何かを誤解したり、見逃したりしていますか?
から - 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
同じことがあなたの個人的なマシンにも当てはまります。