LINUX.ORG.RU
решено ФорумAdmin

login as root with SSH key


0

1

Скажите, а можно сделать такую фичу, чтобы по SSH можно было зайти как root с использованием сгенерированного ключа, но при этом нельзя было войти через keyboard authentication?

Вариант сгенерировать сложный пароль и забыть его — не подходит (точнее и так ясно), но хочется его тоже оставить вменяемо-читаемым для, например, логина с консоли или su (последнее - для FreeBSD).

Интересует как для линукса, так и для FreeBSD, для последней - даже больше.

Если правильно понял:

Сначала от рута ssh-copy-id host, затем в конфиг сервера - PasswordAuthentication no

(ну и проверить PermitRootLogin yes)

uspen ★★★★★
()

man sshd_config:

PermitRootLogin
             Specifies whether root can log in using ssh(1).  The argument must be “yes”, “without-password”, “forced-commands-only”, or “no”.  The default is “yes”.

             If this option is set to “without-password”, password authentication is disabled for root.

             If this option is set to “forced-commands-only”, root login with public key authentication will be allowed, but only if the command option has been specified (which may be useful for taking
             remote backups even if root login is normally not allowed).  All other authentication methods are disabled for root.

             If this option is set to “no”, root is not allowed to log in.
leave ★★★★★
()

>Скажите, а можно сделать такую фичу, чтобы по SSH можно было зайти как root с использованием сгенерированного ключа, но при этом нельзя было войти через keyboard authentication?


на любом юниксе
PasswordAuthentication no

tazhate ★★★★★
()
Ответ на: комментарий от dexpl

Спасибо, PermitRootLogin without-password оно самое.

PS Как войти на форум??? Нажимаю «Вход» в правом верхнем углу, ввожу имя/пароль, нажимаю кнопку «вход», и оно мне говорит 404 страница не найдена. Спасаюсь тем, что прям при написании сообщения можно имя с паролем указать.

shamus24
() автор топика
Ответ на: комментарий от shamus24

> PS Как войти на форум???

Не знаю. Давным-давно залогинился и с тех пор не выхожу, ввиду чего помочь не могу

dexpl ★★★★★
()

Выбираем нужный алгоритм и длину ключа. Пусть выбрали rsa/2048. Заходим на локальный хост под тем пользователем, под которым планируем подключаться как root у удалённому хосту и делаем, к примеру, так:

# ssh-keygen -t rsa -b 2048 -f ~/.ssh/key_file

Дважды ввести пароль для сгенерированной пары ключей. Пара ключей запишется в key_file и key_file.pub. Теперь отправляем public key на удалённый хост:

ssh-copy-id -i ~/.ssh/key_file root@удалённый_хост

Ввести пароль root для удалённого хоста. Теперь зайти под root на удалённый хост и проверить, что новый public key дописался к /root/.ssh/authorized_keys. Потом на локальном хосте в /etc/ssh/ssh_config добавляем строку:

IdentityFile ~/.ssh/key_file

Тут есть один нюанс: когда таких IdentityFile несколько, команда ssh посылает их на удалённый хост один за другим, пока не подберёт нужный. Неудачная попытка засчитывается за попытку авторизации, а их не может быть больше, чем параметр MaxAuthTries в /etc/ssh/sshd_config на удалённом хосте, по умолчанию параметр равен 6, если надо увеличить его, то сделайте это сейчас: зайдите на удалённый хост, измените параметр, проверьте конфигурационный файл командой

# sshd -t

и перезапустите sshd, если предыдущая команда не вывела ошибок. Если ошибки есть, то попытка перезапуска ведёт, естественно, к утрате контроля над удалённым хостом. Теперь пробуем зайти на удалённый хост из под локального пользователя, под которым генерировали ключи:

# ssh удалённый_хост -l root

Если увидели сообщение

Enter passphrase for key [~/.ssh/key_file]:

и введя пароль ключа, вошли на удалённый хост - значит всё правильно. Но удалённый вход с парольной аутентификацией ещё возможен, если неправильно ввести пароль ключа несколько раз, то будет предложено ввести пароль root. Чтобы отключить эту возможность (не делайте этого, пока не убедитесь, что можете войти на удалённый хост по ключу!), надо зайти на удалённый хост и изменить в файле /etc/ssh/sshd_config строку

PasswordAuthentification yes

на

PasswordAuthentification no

После этого обязательно надо проверить конфигурацию sshd_config командой:

# sshd -t

и убедиться, что она не выводит ошибок. После этого можно перезапустить sshd. Для разных дистрибутивов это делается по-разному. Для моего Slackware это:

# /etc/rc.d/rc.sshd restart

После этого можно заходить на удалённый хост по ssh, используя ключ, а ввод пароля с клавиатуры будет запрещён. Делать всё надо аккуратно, иначе есть риск вообще потерять доступ к удалённому хосту.

OlegLPS
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.