sudo yum install -y openssh-server
После установки вы должны включить сервер с помощью команд:
sudo systemctl start sshd
sudo systemctl enable sshd
Теперь, когда на удаленных серверах запущен демон SSH, вы можете отправлять ему команды.
Давайте узнаем, как.
Выполнение основных команд
Давайте получим список файлов в удаленном каталоге /etc.
Для этого запустите:
ssh USER@SERVER_IP "ls /etc"
Где USER – имя удаленного пользователя, а SERVER_IP – IP-адрес удаленного сервера.
После успешного ввода пароля удаленного пользователя вы получите список каталога /etc/ на удаленном сервере.
Запуск команды, которая требует sudo
Но что, если вам нужно запустить команду, требующую привилегий sudo на удаленном сервере?
Если вы сделаете также, вы увидите ошибку tty:
no tty presents and askpass program specified
Как справится с этим?
К счастью, есть небольшой переключатель, который вы можете добавить в команду.
Указанный переключатель -t.
Что он делает?
Он вызывает псевдо-терминальное распределение, поэтому ssh не имеет представления, что у него нет локального терминала для использования.
Итак, для запуска удаленной команды через ssh, требующей привилегий sudo, команда ssh выглядит следующим образом:
ssh -t USER@SERVER_IP "sudo COMMAND"
Например, вы хотите, чтобы пользовать джек обновил удаленный сервер по адресу 192.168.1.201.
Это будет следующая команда:
ssh -t jack@192.168.1.201 "sudo apt-get upgrade -y"
Сначала вас попросят ввести пароль пользователя для соединения SSH, а затем второй запрос пароля пользователя для привилегий sudo :
Команда будет работать так, как если бы она была выполнена на локальном компьютере (только на удаленном компьютере).
Когда команда завершится, вы вернетесь к локальной подсказке, готовой продолжать работу.
И это все, что нужно для запуска команд, которые требуют привилегий sudo на удаленной машине через SSH.