В файле конфигурации ssh можно ли использовать "Host" в качестве параметра? Если нет, как сделать так, чтобы файл конфигурации ssh принимал параметр?

В файле конфигурации ssh можно ли использовать "Host" в качестве параметра? Если нет, как сделать так, чтобы файл конфигурации ssh принимал параметр?

в файле .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.

Связанный контент