Подключитесь (SSH) к одному и тому же серверу через два разных шлюза с разными пользователями сервера

Подключитесь (SSH) к одному и тому же серверу через два разных шлюза с разными пользователями сервера

Я хотел бы иметь возможность подключаться к некоторым из них target.serverс моего локального компьютера, не вводя никаких паролей, с помощью следующих команд:

ssh [email protected]
ssh [email protected]

Каждый пользователь выше принимает соединение только с определенного IP-адреса, соответствующего соответственно gateway1.exampleи gateway2.example. Я добавил все необходимые ключи SSH справа authorized_keys, так что я могу обойтись без ввода паролей:

Теперь я думаю, что осталось разместить нужные вещи в моем локальном ~/.ssh/config. Когда я добавляю:

Host target.server
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

Тогда работает. Но я не знаю, как сделать так, чтобы и то, и другое работало . Я попробовал:ssh [email protected]user1user2

Host target.server
    User user1
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
Host target.server
    User user2
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

или

Host target.server
    User user1
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
    User user2
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

но это все еще не сработало user2: все прошло gateway1и не gateway2.

Заранее большое спасибо за вашу помощь!

Обновлять:Мне удалось заставить работать следующие команды:

ssh user1
ssh user2

(без @target.server), используя следующую конфигурацию:

Host user1
    HostName target.server
    User user1
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
Host user2
    HostName target.server
    User user2
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

Это то, что я буду использовать, но мне все еще интересно увидеть решение для двух команд в начале этого вопроса.

решение1

Как вы поняли, псевдонимы — это хорошее решение. Если вы не хотите их использовать, директива Matchможет быть еще одним допустимым вариантом.

Host target.server
    Match User user1
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
    Match User user2
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

Из ssh_configстраницы руководства:

Соответствовать Ограничивает следующие объявления (до следующегоХозяинилиСоответствоватьключевое слово) следует использовать только тогда, когда выполняются условия, следующие заСоответствоватьключевые слова удовлетворены.

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