На работе у нас есть несколько серверов, к которым мы можем подключаться только по SSH с нашего сервера Jumpbox .
Время от времени мне нужно выполнить команду на этих серверах. Например, если я хочу выполнить df -H на сервере-1, я запускаю эту команду:
ssh jumper@jumpbox 'ssh admin@server-1 ''dh -H'''
У нашего jumpbox есть ключи для SSH на server-1 , а на моей локальной рабочей станции есть ключи для SSHing в jumpbox .
Чтобы упростить это, я написал скрипт с именем jumpbox.sh который выглядит следующим образом:
#!/usr/bin/env bash
ssh jumper@jumpbox @
Тогда я могу просто бежать
jumpbox.sh ssh admin@server-1 dh -H
Для достижения той же цели. Есть ли способ, которым я могу достичь этого, конфигурируя свою среду (например, редактируя ~/.ssh/config), а не используя этот пользовательский скрипт?
Я нашел несколько статей, а также некоторые вопросы , на StackOverflow , которые обсуждают , как с помощью ProxyCommand мы можем достичь этого, но я не могу заставить его работать.
Прежде всего, руководство говорит это о ProxyCommand:
Указывает команду, используемую для подключения к серверу. Командная строка простирается до конца строки и выполняется с оболочкой пользователя.
Если я не ошибаюсь, это означает, что если у меня есть следующая конфигурация:
Host server-1
ProxyCommand ssh jumper@jumpbox nc %h %p
И тогда на моей раковине я выполняю
ssh server-1 dh -H
Тогда dh -H будет игнорироваться. Похоже, что ProxyCommand полезен при открытии нового интерактивного сеанса SSH, но не запускает одноразовые команды. Это правильно?
Также я не совсем понимаю, какова роль nc здесь?
Подводя итог, мой вопрос:
Есть ли способ настроить мою среду, используя ~/.ssh/config и т.д., Чтобы при запуске ssh admin@server-1 dh -H , например, команда запускалась через сервер jumpbox ?
