Ключи SSH обеспечивают более безопасный способ доступа к выделенному серверу с SSH, нежели с помощью пароля напрямую. В то время как пароль, в конечном счете, может быть взломан путем подбора, ключи SSH почти невозможно расшифровать с помощью перебора (bruteforce) в одиночку. Создание Ключевой Пары предоставляет вам две длинные строки символов: публичный и приватный ключи. Вы можете разместить публичный ключ на любом сервере, а затем разблокировать сервер, подключившись к нему с клиента, который уже имеет закрытый приватный ключ. Когда оба ключа совпадают, система разблокирует доступ без необходимости ввода пароля. Вы можете повысить безопасность еще больше, защищая закрытый ключ кодовой фразой.
Шаг первый – Создание RSA пары ключей.
Первым шагом является создание пары ключей на клиентской машине (будет просто замечательно, если это будет ваш компьютер):
ssh-keygen -t rsa
Шаг второй – Сохранение ключа и кодовой фразы
После того, как вы ввели команду Gen Key, вы получите еще несколько запросов:
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Если вам удобно, нажмите клавишу ввода и , сохраните файл на своем личном компьютере (в данном случае, мой пример – пользователь называется «демо»).
Только от вас зависит, хотите ли вы использовать кодовую фразу. Ввод фразы имеет свои преимущества: безопасность ключа, независимо от того, как он зашифрован, а так же её невидимость для других пользователей, что немаловажно. Если объект защищен парольной фразой, то несанкционированным пользователям просто невозможно подключиться к процессу. Они не смогут войти в процесс не зная этой кодовой фразы, и в данной ситуации, даже покупка взломанных кодов и пользователей не решает проблему. Единственный недостаток при использовании кодовой фразы – ее придется вводить каждый раз, при использовании Ключевой Пары.
Весь процесс генерации ключа выглядит так:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+ | .oo. | | . o.E | | + . o | | . = = . | | = S = . | | o + = + | | . o + o . | | . o | | | +-----------------+
Открытый ключ в настоящее время находится в /home/demo/.ssh/id_rsa.pub . закрытый ключ (идентификация) в настоящее время находится в /home/demo/.ssh/id_rsa
Шаг третий – копирование Публичного Ключа.
После того, как ключевая пара сгенерирована, пора поставить открытый ключ на сервере, который мы будем использовать.
Вы можете скопировать открытый ключ в authorized_keys машины с помощью команды ssh-copy-id. Не забудьте заменить имя пользователя и IP-адрес из примера ниже, на нужные вам.
ssh-copy-id user@123.45.56.78
Либо вы можете вставить в ключи с использованием SSH:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Независимо от того, какой метод вы выбрали, вы должны увидеть что-то вроде:
The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:7d:13:57:2e:31:4d:5e:c3:a8:a3:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
user@12.34.56.78's password:
Теперь поопробуйте залогиниться с помощью:
ssh user@12.34.56.78
и проверьте:
~/.ssh/authorized_keys
Это необходимо для того, чтобы убедиться что мы не создали лишние ключи.
Теперь вы можете авторизоваться как user@12.34.56.78 и не увидите предложения ввода пароля. Однако, если вы установите парольную фразу, вам будет предложено ввести ключевую фразу на тот момент (и всякий раз, когда вы захотите еще войти в будущем).
Дополнительный четвертый этап – отключить пароль для суперпользователя (администратора с root правами) в системе.
После того, как вы скопировали ключи SSH к вашему серверу и убедились, что вы можете войти с ключами SSH лично, вы можете пойти дальше и ограничить вход администратора, чтобы он допускался только с помощью ключей SSH.
Для того чтобы сделать это, откройте файл SSH конфигурации:
sudo nano /etc/ssh/sshd_config
в этом файле найдите строку, которая включает PermitRootLogin и измените её, чтобы разрешить пользователям подключаться только используя их SSH ключ
PermitRootLogin without-password
Убедитесь, что изменения вступили в силу:
reload ssh (либо service sshd restart)