Нужно ли запускать sshd-сервер в привилегии root для входа без пароля?

Я имею в виду:

если sshd не запускается в учетной записи root, то как он может позволить удаленному ssh-клиенту запускать оболочку или другую команду в учетной записи root?

если sshd вызовет команду входа в систему, пользователь может войти в систему как корень. потому что пользователь предоставил root passowrd, и UNIX это знает.

BUT sshd также имеет функцию passowrd-less. То есть хранит открытый ключ клиента ssh. В этой ситуации клиент ssh не вводит пароль для команды входа. как система UNIX позволяет клиенту ssh запускать оболочку как пользователя ROOT? если sshd не является учетной записью root.

Оригинал:

Мой вопрос: sshd может использоваться для входа в систему без пароля.

так, нужно ли это запускать в привилегии root?

Если нет, то как сервер разрешает клиенту работать в учетной записи root?

Ранее это было задано на ServerFault . Цитирование с небольшими изменениями и примечаниями:

Запустите процесс с помощью /usr/sbin/sshd -f ~/.ssh/sshd_config где ~/.ssh/sshd_config – это новый файл, который вы создали. Среди других опций (таких как другой ключ хоста, другой порт и т. Д.) Вам нужно добавить строку UsePrivilegeSeparation no . Это предотвратит попытку процесса sshd выполнить любые вызовы setuid или setgid и позволит ему продолжать работать как ваш пользователь и принимать подключения как ваш пользователь.

Также не забудьте использовать непривилегированный порт (> 1024).

Я считаю, что вам нужен ssh-keygen , который запоминает вашу «подпись устройства». Таким образом, даже вы изменили свой пароль, он все равно работает до тех пор, пока вы ssh с того же устройства.

Вот подробное руководство по настройке.

Нужно ли запускать его в привилегиях root?

  • Нет, вам нужно только root-привилегия на хост-сервере при его настройке, чтобы отредактировать файл в домашнем каталоге root . Как только он настроен, вы можете сделать это, не вводя пароль root.