Как выполнить команды sudo удаленно через ssh-t?

rwxr-xr-x.
владелец может: читайте, запишите и Выполнитесь
группа владельца может: читайте и выполнитесь
другие могут: читайте и выполнитесь

4
26.06.2013, 01:44
3 ответа

Возможно, отключение requiretty опция в sudoers и выполнение ssh без -t флаг (или с -T) работы.

Добавьте что-то вроде этого к sudoers (непротестированный):

Defaults:{your ssh user} !requiretty

Объединение это с NOPASSWD Вы уже используете, и необходимо смочь выполнить команду sudo без выделенного pseudo-tty.

Вы могли также измениться requiretty для команды вместо пользователя.

4
27.01.2020, 20:56

Генерируйте ключ SSH и передайте его удаленному хосту.

  1. Используйте следующую команду для генерации ключа RSA SSH

    [root@localhost ~] ssh-keygen
    
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):  Hit ENTER
    Enter passphrase (empty for no passphrase): Hit ENTER
    Enter same passphrase again: Hit ENTER
    
  2. Найти /root/.ssh/id_rsa.pub и передача, что ключ к удаленному использованию следующей команды:

    ssh-copy-id -i /root/.ssh/id_rsa.pub root@remote:/root
    

Теперь попытайтесь войти в систему; это не попросит Ваш удаленный пароль.

0
27.01.2020, 20:56
  • 1
    У Нас уже есть ssh, вводит их надлежащее место. Та часть работы. Существует что-то о том, как ssh-t создал pseudotty, который влияет на мою способность выполнить команды sudo, где у пользователя есть включенный NOPASSWD. То, что происходит, - то, что этот сценарий входит в сервер, анализирует список, разъединяет, которые являются нашими серверами промежуточного программного обеспечения, затем делает ssh-t "sudo сервисная операция" перезапуска промежуточного программного обеспечения с помощью сценария оболочки. Проблема состоит в том, что, когда сценарий выполняет итерации через список, пользователю предлагают пароль несмотря на набор NOPASSWD в sudoers файле. –  dperry1973 26.06.2013, 15:22

У меня все работало нормально вот так, но с примечанием о: Псевдотерминал не будет выделен, потому что stdin не является терминалом

ssh -t username@hostname1 << 'EOS'
sudo sh
hostname
EOS

Pseudo-terminal will not be allocated because stdin is not a terminal.
hostname1
0
27.01.2020, 20:56

Теги

Похожие вопросы