#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'