
в файле .ssh/config
Сценарий таков: у меня сейчас два публичных IP-адреса (динамических), один подключен к AWS, а другой подключен к Rackspace.
Оба требуют разные ключи 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 использовать. Я хочу использовать Host как часть параметра, чтобы указать, к какому серверу подключаться, например ssh aws-ip1 ssh rack-ip2
тогда файл конфигурации может различать, какой файл pem использовать
Кто-нибудь знает, как это сделать?
решение1
Хорошо... Этот вопрос очень старый. Но я могу придумать способ, который поможет в таких ситуациях. Использование подстановочных знаков (*) и параметров %h здесь.
Предположим, что IP-адрес Amazon — 10.10.20.*, а IP-адрес Rackspace — 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
Другой вариант — использовать простые псевдонимы оболочки старой школы:
alias ssh_rack="ssh -i .ssh/rackspace.pem"
alias ssh_aws="ssh -i .ssh/aws.pem"
а затем использовать их вместо ssh
.