- Авторизация по ключу SSH
- Как работают ключи SSH?
- Как создать ключи SSH?
- Загрузка ключа на сервер
- Отключение проверки пароля
- Выводы
- Generate SSH Keys on Linux Mint 21
- What are SSH Keys
- Generating SSH Keys on Linux Mint 21
- Conclusion
- About the author
- Aaliyan Javaid
- Generate SSH Keys with ssh-keygen Command
- Install ssh-keygen Command
- Generate SSH Keys (Public Key, Private Key)
- Generate RSA SSH Keys (Public Key, Private Key)
- Generate DSA SSH Keys (Public Key, Private Key)
- Generate ECDSA SSH Keys (Public Key, Private Key)
- Generate ED25519 SSH Keys (Public Key, Private Key)
- Set SSH Key Size
- Copy SSH (Public) Key To Remote SSH Server
Авторизация по ключу SSH
SSH или Secure Shell — это зашифрованный протокол, который часто используется для взаимодействия и удаленного управления серверами. Если вы захотите что-либо сделать на удаленном сервере, скорее всего, вам придется воспользоваться SSH и работать через терминал.
В SSH существует несколько способов авторизации. Вы можете каждый раз вводить пароль пользователя или использовать более безопасный и надежный способ — ключи SSH. Что самое интересное, он более удобен для применения, вам даже не нужно будет вводить пароль. В этой статье мы рассмотрим как настраивается авторизация по ключу SSH.
Как работают ключи SSH?
SSH сервер может выполнять аутентификацию пользователей с помощью различных алгоритмов. Самый популярный — это аутентификация по паролю. Он достаточно прост, но не очень безопасный. Пароли передаются по безопасному каналу, но они недостаточно сложны для противостояния попыткам перебора. Вычислительная мощность современных систем в сочетании со специальными скриптами делают перебор очень простым. Конечно, существуют другие способы дополнительной безопасности, например, fail2ban, но аутентификация по ключу SSH более надежна.
Каждая пара ключей состоит из открытого и закрытого ключа. Секретный ключ сохраняется на стороне клиента и не должен быть доступен кому-либо еще. Утечка ключа позволит злоумышленнику войти на сервер, если не была настроена дополнительная аутентификация по паролю.
Открытый ключ используется для шифрования сообщений, которые можно расшифровать только закрытым ключом. Это свойство и используется для аутентификации с помощью пары ключей. Открытый ключ загружается на удаленный сервер, к которому необходимо получить доступ. Его нужно добавить в специальный файл ~/.ssh/authorized_keys.
Когда клиент попытается выполнить проверку подлинности через этот ключ, сервер отправит сообщение, зашифрованное с помощью открытого ключа, если клиент сможет его расшифровать и вернуть правильный ответ — аутентификация пройдена.
Как создать ключи SSH?
Сначала необходимо создать ключи ssh для аутентификации на локальном сервере. Для этого существует специальная утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создает пару 2048 битных RSA ключей, которая подойдет не только для SSH, но и для большинства других ситуаций.
И так, генерация ключей ssh выполняется командой:
Утилита предложит вам выбрать расположение ключей. По умолчанию ключи располагаются в папке ~/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.
Затем утилита предложит ввести пароль для дополнительного шифрования ключа на диске. Его можно не указывать, если не хотите. Использование дополнительного шифрования имеет только один минус — необходимость вводить пароль, и несколько преимуществ:
- Пароль никогда не попадет в сеть, он используется только на локальной машине для расшифровки ключа. Это значит что перебор по паролю больше невозможен.
- Секретный ключ хранится в закрытом каталоге и у клиента ssh нет к нему доступа пока вы не введете пароль;
- Если злоумышленник хочет взломать аутентификацию по ключу SSH, ему понадобится доступ к вашей системе. И даже тогда ключевая фраза может стать серьезной помехой на его пути.
Но все же, это необязательное дополнение и если не хотите, то вы можете просто нажать Enter. Тогда доступ по ключу ssh будет выполняться автоматически и вам не нужно будет что-либо вводить.
Теперь у вас есть открытый и закрытый ключи SSH и вы можете использовать их для проверки подлинности. Дальше нам осталось разместить открытый ключ на удаленном сервере.
Загрузка ключа на сервер
Когда генерация ключей завершена, нам осталось только загрузить ключ на сервер. Для загрузки ключа можно использовать несколько способов. В некоторых случаях вы можете указать ключ в панели управления сервером, например, сPanel или любой другой. Но мы такой способ рассматривать не будем. Мы рассмотрим ручные способы.
Самый простой способ скопировать ключ на удаленный сервер — это использовать утилиту ssh-copy-id. Она тоже входит в пакет программ OpenSSH. Но для работы этого метода вам нужно иметь пароль доступа к серверу по SSH. Синтаксис команды:
При первом подключении к серверу система может его не распознать, поэтому вам нужно ввести yes. Затем введите ваш пароль пользователя на удаленном сервере. Утилита подключится к удаленному серверу, а затем использует содержимое ключа id.rsa.pub для загрузки его на сервер в файл ~/.ssh/authorized_keys. Дальше вы можете выполнять аутентификацию с помощью этого ключа.
Если такой способ по какой-либо причине для вас не работает, вы можете скопировать ключ по ssh вручную. Мы создадим каталог ~/.ssh, а затем поместим наш ключ в файл authorized_keys с помощью символа >>, это позволит не перезаписывать существующие ключи:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host «mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys»
Здесь вам тоже нужно набрать yes, если вы подключаетесь к новому серверу, а затем ввести пароль. Теперь вы можете использовать созданный ключ для аутентификации на сервере:
Если вы не захотели создать ssh ключ с доступом по паролю, то вы сразу же будете авторизованы, что очень удобно. Иначе, сначала вам придется ввести фразу-пароль для расшифровки ключа.
Отключение проверки пароля
Если пароль больше не будет использоваться, то для увеличения безопасности системы лучше его вовсе отключить. Но убедитесь, что ключ надежно сохранен и вы его не потеряете, потому что по паролю вы больше не войдете. Авторизуйтесь на сервере, затем откройте конфигурационный файл /etc/ssh/sshd_config и найдите там директиву PasswordAuthenticatin. Нужно установить ее значение в No:
sudo vi /etc/ssh/sshd_config
Теперь сохраните файл и перезапустите службу ssh:
Дальше будет возможно только подключение по ключу ssh, пароль не будет приниматься.
Выводы
В этой статье мы рассмотрели как выполняется авторизация по ключу ssh, настройка ключей ssh и добавить ssh ключ. Теперь вы можете войти на сервер без ввода пароля. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Generate SSH Keys on Linux Mint 21
SSH or secure shell come in handy when one needs to remotely access a system as the user password authentication method seems to be more vulnerable in terms of security. The SSH system is a client server-based model that uses port 22 by default but this port can be changed if one is concerned more about security. To access any system remotely one needs to generate SSH keys first on the system through which you will access the other system, so read this guide to generate SSH keys on Linux Mint 21.
What are SSH Keys
As mentioned above, secure shell keys are the keys used to authenticate the connection between two devices as the SSH method is based on the client server model. There are mainly two keys required to establish a connection between two devices; one is a public key that is to be shared with the system that is being accessed remotely. The other key is the private key that is used by the client system to decrypt the messages received from the remote system or server.
Generating SSH Keys on Linux Mint 21
Generating SSH keys on Linux Mint 21 is an easy process if one follows the below mentioned steps:
Step 1: To start the SSH key generating process use the below given command and give a name to the key file:
Step 2: Next enter the security key that is easy to remember as there is no option of setting an new password for the same file if you forget the password:
Once both the password matches the SSH key will be generated:
Now you can check if the SSH key is generated or not using the ls command, remember that there are two files created when the SSH key is generated one is a public key that will be shared to the system you are accessing.
Whereas the other is the private key that must not be shared with anyone as the system will decrypt the message from the server using private key:
To view your SSH public key use:
Conclusion
SSH keys are sort of authentication keys used to access other systems remotely in a more secure way. There are mainly two keys required to establish a connection between two devices; one is a public key that is to be shared with the system which is being accessed remotely. The other key is the private key that is used by the client system to decrypt the messages received from the remote system or server.
About the author
Aaliyan Javaid
I am an electrical engineer and a technical blogger. My keen interest in embedded systems has led me to write and share my knowledge about them.
Generate SSH Keys with ssh-keygen Command
Linux and other operating systems provide the ssh-keygen command in order to generate SSH keys. SSH keys consist of a key pair which are called Public Key and Private Key. These cans can be used to automatic or passwordless certificate-based login to the remote SSH server.
Install ssh-keygen Command
All Linux distributions like Ubuntu, Debian, Mint, Kali CentOS, Fedora, RHEL, SUSE, and BSD variants provide the ssh-keygen as a package. In can be installed for apt, apt-get, yum, dnf package managers like below.
Ubuntu, Debian Mint, Kali with apt:
sudo apt install openssh-client
Ubuntu, Debian Mint, Kali with apt-get:
sudo apt-get install openssh-client
CentOS Fedora, RHEL with yum:
sudo yum install openssh-client
CentOS Fedora, RHEL with dnf:
sudo dnf install openssh-client
Generate SSH Keys (Public Key, Private Key)
As a secure protocol SSH uses public-key cryptography for encryption and authentication for hosts and users. The authentication keys which are consist of Public Key and Private key are created with the ssh-keygen command which can generate different types of keys like RSA, DSA, ECDSA, ED25519.
If the ssh-keygen is called without any options and parameters it will create a RSA key by defualt which size is 2048 bit.
Generating public/private rsa key pair. Enter file in which to save the key (/home/ismail/.ssh/id_rsa): /home/ismail/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ismail/.ssh/id_rsa Your public key has been saved in /home/ismail/.ssh/id_rsa.pub The key fingerprint is: SHA256:EMYPpCNIVLAJepvKRSVhKwtLCzSpL43Dftlr44V2uXg ismail@ubuntu The key's randomart image is: +---[RSA 3072]----+ |o+=.++ | |=o= +oo. | |=ooo .o | |=o=+ . .. | |o*o. S | |=o+ . . | |o+ oo + | | . o.++E. | | . o++. | +----[SHA256]-----+
If there is already a key with the same file name you will be asked whether overwrite or not. If you type Y and continue the SSH key creation continue.
Generate RSA SSH Keys (Public Key, Private Key)
The RSA is the most popular public and private key algorithm which can be generated with the ssh-keygen command. The RSA keys can be generated by specifying the type with the -t option and rsa parameter like below.
Generate DSA SSH Keys (Public Key, Private Key)
The DSA is another popular cryptographic algorithm that is used to generate SSH keys too. The DSA is a very fast and feasible alternative to the RSA algorithm. The DSA keys can be generated by specifying the type with the -t option and dsa parameter like below.
Generate ECDSA SSH Keys (Public Key, Private Key)
Generate ED25519 SSH Keys (Public Key, Private Key)
Set SSH Key Size
By default the RSA key size is 2048 bit, DSA key size is 1024 bit. But the key size can be changed where increasing the key size makes the keys and communication more secure. But the downside is if the data or bandwidth is high the performance will be lower but this is not a problem for SSH and SSH communication. The -b options and the bit size can be specified to the ssh-keygen like below. This key size option can be used for all algorithms.
ssh-keygen -t rsa -t 4096 ssh-keygen -t dsa -t 1024 ssh-keygen -t ecdsa -t 512 ssh-keygen -t ed25519 -t 512
Copy SSH (Public) Key To Remote SSH Server
Generated keys can be used for passwordless or key-based authentication which makes the SSH connection easier and more practical. The ssh-copy-id command is used to copy the current user default SSH keys to the specified remote SSH server.
By default, the username is set as the current username but different usernames can be specified explicitly. The @ sign is used to separate the username from the remote host IP address or hostname.
ssh-copy-id ismail@192.168.10.10
Alternatively the remote system hostname can be used to copy SSH key. But the hostname should be successfully resolved into the IP address.
ssh-copy-id ismail@linuxtect.com