На этот вопрос уже есть ответ:
Мне нужно настроить машину таким образом, чтобы установка программного обеспечения могла быть автоматизирована удаленно через SSH. Следуя вики,Я смог настроить ключи SSH, чтобы мой пользователь мог получить доступ к машине без пароля, но мне все равно нужно вручную вводить свой пароль, когда я использую sudo
, что, очевидно, не должен делать автоматизированный процесс.
Хотя мой /etc/ssh/sshd_config
имеет PermitRootLogin yes
, я не могу войти в систему как root, по-видимому, потому, что это не «настоящая» учетная запись с отдельным паролем.
Как настроить ключи SSH, чтобы процесс мог удаленно войти в систему как root в Ubuntu?
Для установки соединения SSH без пароля для пользователя root, у Вас должен быть корневой доступ на сервере. Самый легкий метод должен временно позволить корню входить в систему по ssh через пароль. Так или иначе Вы должны базироваться доступ на сервере, чтобы сделать это. Если у Вас нет корневого доступа на сервере, свяжитесь с администратором сервера для справки.
Сначала сделайте ssh ключ без пароля. Я высоко предлагаю, чтобы Вы дали ему имя скорее затем использование значения по умолчанию
ssh-keygen -f foo
-f опция указывает имя файла, нечто является примером, используйте любое имя, которого Вы желаете.
Когда Вам предлагают пароль, просто поразите клавишу Enter, и Вы генерируете ключ без пароля.
Затем необходимо передать ключ к серверу. Самый легкий метод должен использовать ssh-copy-id
. Чтобы сделать это, необходимо временно позволить корень ssh в сервер.
править /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Удостоверьтесь, что Вы позволяете корню входить в систему со следующим синтаксисом
PasswordAuthentication yes
PermitRootLogin yes
Перезапустите сервер
sudo service ssh restart
Установите пароль root, используйте сильный
sudo passwd
От клиента, Передача ключ к серверу
ssh-copy-id -i ~/.ssh/foo root@server
измените "нечто" название Вашего ключа и введите Ваш пароль root сервера при выяснении.
Протестируйте ключ
ssh -i ~/.ssh/foo root@server
Принятие его работает, сбросило пароль root и отключает вход в систему пароля.
sudo passwd -l root
Править /etc/ssh/sshd_config
sudo nano `/etc/ssh/sshd_config`
Измените следующее:
PasswordAuthentication no
PermitRootLogin without-password
Перезапустите сервер
sudo service ssh restart
Необходимо теперь смочь к ssh в с ключом без пароля, и Вы не должны мочь к ssh в как никакой пользователь без ключа.
ssh -i ~/.ssh/foo root@server
Вы настраиваете sudo, чтобы позволить Вам командам выполнения без пароля.
Этому отвечают здесь в двух местах:
Из этих двух я предлагаю позволить как можно меньше команд (первый ответ) скорее затем все команды (второй ответ).
Q. Войдите в удаленный хост как пользователь root, использующий SSH без пароля (например, ssh root@remotehost_ip)
А. Для входа в систему в удаленный хост, поскольку пользователь root, использующий SSH без пароля, следует ниже шагов.
1-й Шаг:
Первый необходимо совместно использовать открытый ключ локального пользователя с authorized_keys файлом пользователя root удаленного хоста. Существует много способов сделать так, вот один пример.
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys - 2
Или который можно просто скопировать, вставляют содержание с открытым ключом в authorized_keys файл пользователя root удаленного хоста.
2-й шаг:
Настраивают ssh для разрешения входа в систему без пароля в удаленном хосте. Войдите в удаленный хост и отредактируйте/etc/ssh/sshd_config файл, затем перезапускают ssh сервис. Не забывайте комментировать "PermitRootLogin да".
#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no
#service ssh restart
Комментируют #PermitRootLogin да
3-й шаг:
Тест Вы соединение от Вашей локальной машины с помощью пользователя, открытый ключ которого совместно используется ранее.
$ssh root@remotehost_ip
PermitRootLogin контролирует, разрешено ли пользователю с именем «root» (если быть точным: любой пользователь с UID 0) входить в систему. Если вы входите в систему как root, вам не нужно sudo
выполнять привилегированные задачи.
С другой стороны, если вы входите в систему под учетной записью пользователя и используете sudo
без пароля, вы должны настроить файл sudoers без необходимости возиться с /etc/ssh/sshd_config
. См. Как заставить Ubuntu навсегда запомнить пароль после первого раза
Вы путаете две разных вещи:
журнал без пароля используется, чтобы удостовериться, что люди не могут войти в Вашу систему удаленно путем предположения пароля. Если Вы можете ssh username@machine и соединяться без пароля, это настраивается правильно и не имеет ничего иного, чтобы сделать с этим.
sudo
используется, чтобы разрешить учетной записи обычного пользователя делать что-то с полномочиями суперпользователя. Это действительно требует, чтобы пользователь ввел их пароль. Это происходит, соединены ли Вы удаленно (через или защищенный паролем SSH без пароля) или локальны на машине. Вы пытаетесь установить sudo
для не просьбы пароль, который не рекомендуется, но можно изучить, как сделать это с помощью ответа как https://askubuntu.com/a/74083/6161
Отметьте будущим читателям этого ответа:
Мой выше ответа не отвечает на фактический вопрос исходного плаката, он описывает то, что необходимо сделать вместо этого. Если Вы действительно хотите позволить удаленные соединения непосредственно корневой учетной записи, необходимо включить корневую учетную запись (см. мой комментарий ниже). Снова, позвольте мне сказать, НЕ позволяют удаленные удаленные входы в систему Вашей корневой учетной записи.