Назад | Перейти на главную страницу

Вход в систему как пользователь root на удаленном компьютере с помощью SSH

Моя проблема похожа на вот этот , Я пытаюсь автоматизировать ту часть, где я могу получить доступ к удаленному компьютеру и запустить команду как суперпользователь. Он отлично работает, пока не войдет в систему, как здесь: -

$ ssh-keygen -t rsa -b 2048

к

$ ssh-copy-id id@server
id@server's password:
$ ssh id@server
id@server:~$  

Накладные расходы для меня заключаются в том, что я могу запросить у пользователя пароль удаленной машины только один раз (при генерации ключей ssh), и после этого при запуске команды в качестве суперпользователя он не должен снова запрашивать пароль, т.е. ему не нужна такая команда, как ниже:-

sudo su

Как я могу это сделать? потому что я попытался сохранить пароль как переменную, а затем подставить значение, например: -

echo -n "Enter password > "
read passwd
sshpass -p $username ssh -o StrictHostKeyChecking=no $username@$server sudo some_application &

Он запросит пароль, если я не могу заменить значение объявленной мной переменной.

Вы пробовали использовать expect?

Простой сценарий входа в систему написан в режиме ожидания:

#!/usr/bin/expect
set timeout 9
set username [lindex $argv 0]
set password [lindex $argv 1]
set hostname [lindex $argv 2]
log_user 0

if {[llength $argv] == 0} {
  send_user "Usage: scriptname username \'password\' hostname\n"
  exit 1
}

send_user "\n#####\n# $hostname\n#####\n"

spawn ssh -q -o StrictHostKeyChecking=no $username@$hostname

expect {
  timeout { send_user "\nFailed to get password prompt\n"; exit 1 }
  eof { send_user "\nSSH failure for $hostname\n"; exit 1 }
  "*assword"
}

send "$password\r"

expect {
  timeout { send_user "\nLogin failed. Password incorrect.\n"; exit 1}
  "*\$ "
}

send_user "\nPassword is correct\n"
send "exit\r"
close

Пример использования:

./script_name user_foo pass_bar hostname.com

Он будет только пытаться войти в систему и выдавать какое-либо сообщение об ошибке в случае, если что-то пойдет не так, а если нет, он скажет «Пароль правильный» и затем выйдет из сеанса.

Некоторые параметры будут зависеть от системы, к которой вы подключаетесь. Кроме того, использование expect означает, что вы знаете, каким будет результат при входе в систему и выполнении команд.

это учебник покроет ваши потребности

Вы действительно скопировали свой ключ pub в файл root .ssh / authorized_keys? Я всегда после этого всегда делаю "chmod -R go = /root/.ssh", также проверяю право собственности.

Если у вас запущен selinux, вам нужно будет выполнить «restorecon» для файла authorized_keys и каталога .ssh.

И если вы хотите использовать ssh как root, вам нужно проверить / etc / ssh / sshd_config и перезагрузить sshd.