%20%D0%BA%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%BC%D1%83%20%D0%B8%20%D1%82%D0%BE%D0%BC%D1%83%20%D0%B6%D0%B5%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%83%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20%D0%B4%D0%B2%D0%B0%20%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D1%85%20%D1%88%D0%BB%D1%8E%D0%B7%D0%B0%20%D1%81%20%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D0%BC%D0%B8%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%D0%BC%D0%B8%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0.png)
Я хотел бы иметь возможность подключаться к некоторым из них target.server
с моего локального компьютера, не вводя никаких паролей, с помощью следующих команд:
ssh [email protected]
ssh [email protected]
Каждый пользователь выше принимает соединение только с определенного IP-адреса, соответствующего соответственно gateway1.example
и gateway2.example
. Я добавил все необходимые ключи SSH справа authorized_keys
, так что я могу обойтись без ввода паролей:
ssh [email protected]
с локальной машины, затем из .ssh [email protected]
gateway1
ssh [email protected]
с локальной машины, затем из .ssh [email protected]
gateway2
Теперь я думаю, что осталось разместить нужные вещи в моем локальном ~/.ssh/config
. Когда я добавляю:
Host target.server
ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
Тогда работает. Но я не знаю, как сделать так, чтобы и то, и другое работало . Я попробовал:ssh [email protected]
user1
user2
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
страницы руководства:
Соответствовать Ограничивает следующие объявления (до следующегоХозяинилиСоответствоватьключевое слово) следует использовать только тогда, когда выполняются условия, следующие заСоответствоватьключевые слова удовлетворены.