
SSH без пароля или аутентификация с использованием шифрованных ключей
У вас имеется выделенный сервер или ВПСка и вы используете ssh для подключения к нему? Придумали крутой пароль для своей же безопасность более 10 символов? Каждый день заходите на него много раз? И надоело вводить этот, то тогда я расскажу в своей статье «SSH без пароля или аутентификация с использованием шифрованных ключей» как это можно легко сделать.
Ключики для SSH. Методы Identity и Pubkey.
Кто использует методы идентификации, такие как Identity и Pubkey, то в них нет нужды в использовании статических паролей. Так как это очень надоедает вводить очень длинные пароли для своей же безопасности, которые довольно легко перехватуются Keylogger -ом, на худой конец их можно просто увидеть у кого то, а так мы будем хранить на диске 2 ключа, которые будут использованы как проверка подлиности.
Особенности этого использования:
Любой человек который захочет войти на ваш сервер с использованием учетки провалиться т.к ему нужно будет иметь приватный ключ и так же кодовое слово для расшифрования.
Системный администратор своего сервера легко может удалить все пароли для своих учеток, чтобы исключить его дискредитацию.
Вы легко сможете заюзать программу ssh-agent и она будет предоставлять аутентификационные данные сама для вас.
Можно так же установить некоторые ограничения, например можно запретить перенаправление портов для использовании некоторых утилит и т.д.
Установить ssh-сервера в Debian/Ubuntu/Linux Mint
Чтобы это сделать нужно выполнить команду:
# sudo apt-get install openssh-server
Чтобы запустить сервер нужно выполнить:
# sudo /etc/init.d/ssh start
Чтобы остановить сервер нужно выполнить:
# sudo /etc/init.d/ssh stop
Чтобы перезапустить сервер нужно выполнить:
# sudo /etc/init.d/ssh restart
Создание Identity и Pubkey или создание открытых и закрытых SSH ключей.
Чтобы сгенерировать 2 ключа, нужно использовать утилиту ssh-keygen:
# ssh-keygen -t rsa -b 1024 -f $HOME/.ssh/id_rsa
Опция «-t rsa» я указал тип для создаваемого ключа, но так же можно сгенерировать и с другими опциями, например— rsa1, rsa и dsa.
Паблик (открытый )ключ нужно необходимо скопировать на сервер $HOME/.ssh/authorized_keys.
Настройка SSH-сервера
Все что я делал выше это я делал на локальном компьютере, но теперь нужно показать для удаленного нашего сервера или ВПСки, то есть куда я будем подключаться.
Ключи уже сгенерированы и имеются в системе, что нужно следующем эпате, так это разрешить данную опцию для аутентификации на самом SSH-сервере, но для самого начала я определю какой нам тип будет нужен — Pubkey или может Identity, для этого я установлю следующие настройки в самом конфиге ssh:
# vim /etc/ssh/sshd_config
[...] RSAAuthentication yes [...] PubkeyAuthentication yes [...] AuthorizedKeysFile .ssh/authorized_keys [...]
Выложу стандартный sshd_config в качестве примера:
Для чтения, перейдите по ссылке.
Чтобы скачать используйте команду:
# wget http://linux-notes.org/wp-content/uploads/files/ssh_open_ssh/sshd_config
Выложу документацию на русском языке, вы ее можете прочитать:
докуметация_на_русском_языке_для_настройки_ssh-server
Копирование файла с ключом на удалённый наш сервер.
1. можно скопировать:
# ssh-copy-id -i ~/.ssh/id_rsa.pub your_user@remote_or_server_host
2. Делаем все ручками.
# cat ~/.ssh/id_rsa.pub | ssh -l your_user@remote_server_host ‘mkdir -p .ssh; touch .ssh/authorized_keys; cat >> .ssh/authorized_keys; chmod 700 ~/.ssh; chmod 700 ~/.ssh/authorized_keys’
Так же можно выполнить:
# scp ~/.ssh/id_rsa.pub youruser@remote.server.host # ssh your_user@remote_server_host # [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 700 ~/.ssh) # cat ~/id_rsa.pub >> ~/.ssh/authorized_keys # chmod 700 ~/.ssh/authorized_keys
После всего этого можно и сделать проверку:
# ssh your_user@remote_server_host
Должно все работать, только есть вы не поставили пароль на сам ключ. 😉
Как заменить все SSH ключи на сервере?
В консоле вводим команду для удалении всех имеющихся ключей, для этого выполняем:
# rm /etc/ssh/ssh_host_*
Затем нужно сгенерировать новые ключики, а то сервер будет ругаться, типа этого:
Could not load host key: /etc/ssh/ssh_host_rsa_key
По этому я выполню команду и решу все это так:
# dpkg-reconfigure openssh-server
Утилита созаст нам пару ключиков что и решит нашу собственно задачу.
После конечно же ребутимся:
# reboot
Тема «SSH без пароля или аутентификация с использованием шифрованных ключей» завершена. Если есть вопросы, то пишите мне.