
.ssh/config ファイル内
シナリオとしては、現在 2 つのパブリック IP (動的) があり、1 つは AWS に接続し、もう 1 つはラックスペースに接続しています。
どちらも接続するには異なるpemキーが必要です。しかし、時間を節約するためにssh設定ファイルを使用したいと思います。
Host <ip1>
User root
Port 22
HostName %h
IdentityFile ~/.ssh/aws.pem
Host <ip2>
User root
Port 22
HostName %h
IdentityFile ~/.ssh/rackspace.pem
この設定では、どの pem ファイルを使用するか区別できません。パラメータの一部としてホストを使用して、接続するサーバーを指定します (例: ssh aws-ip1 ssh rack-ip2)。
すると、設定ファイルはどのpemファイルを使用するかを区別できるようになります。
誰かこれをどうやってやるか知っていますか?
答え1
わかりました... この質問は非常に古いです。しかし、このようなシナリオで役立つ方法が思いつきました。ここではワイルドカード (*) と %h パラメータを使用します。
Amazon の IP が 10.10.20.*、Rackspace の IP が 20.20.10.* であると仮定します。次の設定が役立ちます。
Host 10.10.20.*
Hostname %h
User root
IdentityFile ~/.ssh/aws.pem
Host 20.20.10.*
Hostname %h
User root
IdentityFile ~/.ssh/rackspace.pem
そして、 を呼び出すと、ssh 10.10.20.5
のようなものが呼び出されますが、これこそがまさに必要なことかもしれません。ssh -i ~/.ssh/aws.pem [email protected]
答え2
「ホスト」部分は、使用できる一種の「ショートカット」です。
Host aws-ip1
HostName ip-or-name-to-ip1
IdentityFile ~/.ssh/aws.pem
Host rack-ip2
HostName ip-or-name-to-ip2
IdentityFile ~/.ssh/rackspace.pem
そして、ssh aws-ip1
またはを使用するだけですssh rack-ip2
...
引用元man ssh-config
:
Host Restricts the following declarations (up to the next Host key-
word) to be only for those hosts that match one of the patterns
given after the keyword.
答え3
もう 1 つのオプションは、昔ながらの単純なシェル エイリアスを使用することです。
alias ssh_rack="ssh -i .ssh/rackspace.pem"
alias ssh_aws="ssh -i .ssh/aws.pem"
代わりにそれらを使用しますssh
。