Как я могу запускать команды от Дженкинса на удаленной машине от имени root?

#bash #shell #ubuntu #jenkins #ssh

Вопрос:

Я попытался использовать как SSH, так и плагины публикации через SSH, но sudo su команда просто зависает, а затем истекает время ожидания. Мне нужно войти в систему как root на удаленной машине, чтобы выполнить несколько команд. Пользователь ubuntu имеет права суперпользователя и sudo su работает из командной строки. Может кто-нибудь, пожалуйста, сказать мне, что я могу здесь делать не так? Спасибо

Комментарии:

1. Учитывая few commands , что вы можете просто sudo выполнить каждую команду, которую вам нужно выполнить. Иногда тайм-аут связан с аутентификацией по ssh (стратегия проверки), вы проверяли, работает ли использование некорневых команд должным образом? Кроме того, проверьте, правильно ли подключен узел?

2. @sumitani Спасибо за ответ. Я попытался добавить sudo перед командами, но это на самом деле не сработало. Удаленная машина, к которой я пытаюсь подключиться, имеет хранилище , запущенное на ней как root, и sudo, за которым следуют команды хранилища, не работают как из командной строки машины хранилища, так и из Дженкинса. Так что что-то вроде sudo vault status не работает, но sudo su за этим следует vault status .

3. @sumitani Кроме того, некорневые команды работают так, как ожидалось. Я могу запускать все команды от имени пользователя ubuntu. Поэтому я предполагаю, что связь между Дженкинсом и удаленной машиной установлена.

Ответ №1:

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

ssh -l root (server name) (command_to_execute)

Проверьте, запущен ли процесс SSH. Если ваше соединение зависает и истекает время ожидания, проверьте, открыт ли SSH-порт 22, если вы можете подключиться к этому порту с вашего сервера Jenkins.

Выполнение команд от имени пользователя root не рекомендуется, и рекомендуется использовать пользователя, не являющегося пользователем root, с соответствующими разрешениями.

Также попробуйте выполнить пинг и посмотреть, нет ли потерянных пакетов с вашего локального компьютера на удаленный сервер и файл hosts, чтобы узнать, может ли локальная машина подключиться к серверу.

Комментарии:

1. Спасибо вам за предложение! Хотя это работает, к сожалению, это не вариант, так как мы не можем включить корневой вход на этих машинах.

Ответ №2:

После sudo su - user того, как поместите команды между <:

 execCommand: 'sudo su - user <<eos n'                
'command1 n'                
'command2 n'                
'etc....  n'                
'eos'