Как настроить доступ SSH без пароля для пользователя root [дубликат]

На этот вопрос уже есть ответ:

Мне нужно настроить машину таким образом, чтобы установка программного обеспечения могла быть автоматизирована удаленно через SSH. Следуя вики,Я смог настроить ключи SSH, чтобы мой пользователь мог получить доступ к машине без пароля, но мне все равно нужно вручную вводить свой пароль, когда я использую sudo, что, очевидно, не должен делать автоматизированный процесс.

Хотя мой /etc/ssh/sshd_config имеет PermitRootLogin yes, я не могу войти в систему как root, по-видимому, потому, что это не «настоящая» учетная запись с отдельным паролем.

Как настроить ключи SSH, чтобы процесс мог удаленно войти в систему как root в Ubuntu?

44
задан 24 August 2017 в 00:26

4 ответа

Часть 1: ключ SSH без пароля

Для установки соединения SSH без пароля для пользователя root, у Вас должен быть корневой доступ на сервере. Самый легкий метод должен временно позволить корню входить в систему по ssh через пароль. Так или иначе Вы должны базироваться доступ на сервере, чтобы сделать это. Если у Вас нет корневого доступа на сервере, свяжитесь с администратором сервера для справки.

На клиенте (где Вы ssh ОТ)

Сначала сделайте ssh ключ без пароля. Я высоко предлагаю, чтобы Вы дали ему имя скорее затем использование значения по умолчанию

ssh-keygen -f foo

-f опция указывает имя файла, нечто является примером, используйте любое имя, которого Вы желаете.

Когда Вам предлагают пароль, просто поразите клавишу Enter, и Вы генерируете ключ без пароля.

Затем необходимо передать ключ к серверу. Самый легкий метод должен использовать ssh-copy-id . Чтобы сделать это, необходимо временно позволить корень ssh в сервер.

На сервере (где Вы 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

Часть 2: Выполнение команд через sudo, не вводя пароль

Вы настраиваете sudo, чтобы позволить Вам командам выполнения без пароля.

Этому отвечают здесь в двух местах:

Из этих двух я предлагаю позволить как можно меньше команд (первый ответ) скорее затем все команды (второй ответ).

57
ответ дан 24 August 2017 в 00:26

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
5
ответ дан 24 August 2017 в 00:26

PermitRootLogin контролирует, разрешено ли пользователю с именем «root» (если быть точным: любой пользователь с UID 0) входить в систему. Если вы входите в систему как root, вам не нужно sudo выполнять привилегированные задачи.

С другой стороны, если вы входите в систему под учетной записью пользователя и используете sudo без пароля, вы должны настроить файл sudoers без необходимости возиться с /etc/ssh/sshd_config. См. Как заставить Ubuntu навсегда запомнить пароль после первого раза

.
0
ответ дан 24 August 2017 в 00:26

Вы путаете две разных вещи:

журнал без пароля используется, чтобы удостовериться, что люди не могут войти в Вашу систему удаленно путем предположения пароля. Если Вы можете ssh username@machine и соединяться без пароля, это настраивается правильно и не имеет ничего иного, чтобы сделать с этим.

sudo используется, чтобы разрешить учетной записи обычного пользователя делать что-то с полномочиями суперпользователя. Это действительно требует, чтобы пользователь ввел их пароль. Это происходит, соединены ли Вы удаленно (через или защищенный паролем SSH без пароля) или локальны на машине. Вы пытаетесь установить sudo для не просьбы пароль, который не рекомендуется, но можно изучить, как сделать это с помощью ответа как https://askubuntu.com/a/74083/6161

Отметьте будущим читателям этого ответа:

Мой выше ответа не отвечает на фактический вопрос исходного плаката, он описывает то, что необходимо сделать вместо этого. Если Вы действительно хотите позволить удаленные соединения непосредственно корневой учетной записи, необходимо включить корневую учетную запись (см. мой комментарий ниже). Снова, позвольте мне сказать, НЕ позволяют удаленные удаленные входы в систему Вашей корневой учетной записи.

8
ответ дан 24 August 2017 в 00:26

Другие вопросы по тегам:

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