- Perform SSH public key authentication with PSSH (without password) in Linux
- How login to Linux server works without password?
- Configure SSH public key authentication
- 1. Generate SSH key pair (private and public)
- 2. Copy public key to remote Linux machine (authorized_keys)
- 3. Configuring and Securing Login (sshd_config)
- Create ssh authenticating agent (ssh-agent)
- Install PSSH
- Perform parallel SSH (PSSH)
- Related Posts
- Как настроить аутентификацию по ключу SSH в Linux
- Как сделать ваши соединения Secure Shell еще более безопасными
- Что такое аутентификация по ключу?
- Генерация пары ключей SSH
- Скопируйте ваш открытый ключ на удаленный компьютер
- Тестирование соединения
- Отключение аутентификации по паролю
- Авторизация по ключу SSH
- Как работают ключи SSH?
- Как создать ключи SSH?
- Загрузка ключа на сервер
- Отключение проверки пароля
- Выводы
Perform SSH public key authentication with PSSH (without password) in Linux
Table of Contents
SSH public key authentication. ssh authorized_keys. ssh with key. ssh key login. linux enable ssh public key authentication. generate ssh key and add ssh key to server. ssh login with private key without password using authorized_keys. add public key to server. how to ssh with private key. Linux login without password. create ssh key. ssh add key. ssh keygen. login to linux server using ssh key. where are ssh keys stored. ssh use public key centos. rhel ssh public key authentication. rhel ssh key exchange. login to linux server without password centos.
PSSH is a utility to perform SSH from one server to multiple client nodes in parallel and perform certain task as defined. By default PSSH has -A argument using which the tool will prompt for password which will be used to connect to all the target host.
But we can also configure PSSH to use SSH public key authentication. You can login to multiple Linux server using SSH Key, either with passphrase or password less (without password).
How login to Linux server works without password?
Secure Shell relies on a technology called public-key cryptography. It works similarly to a safe deposit box at the bank: You need two keys to open the box or at least multiple layers of security/checks have to be crossed. In the case of public-key cryptography, you need two mathematical keys: a public one and a private one.
The actual process of encrypting data and sending it from one person to the next requires several steps. We’ll use the popular “Alice and Bob” analogy and go through the process one step at a time as they both try to communicate in a secure manner with one another.
Alice fetches Bob’s public key
Alice uses Bob’s public key, along with her private key, to encrypt and sign the data, respectively.
Alice sends the encrypted data to Bob.
Bob fetches Alice’s public key.
Bob uses Alice’s public key, along with his private key, to verify and decrypt the data, respectively
Configure SSH public key authentication
In the below steps I will configure SSH public key authentication between 3 nodes for root user.
I have 3 nodes with me using which I will configure SSH public key authentication to login to Linux server without password
- centos-master
- centos-client-1
- centos-client-2
Here, I will generate SSH key pair on centos-master using which we will attempt to login and connect to centos-client nodes without password (using ssh public key authentication)
SSH communication is secured using public key cryptography. When a user connects to the SSH-server using SSH-client for the first time, the SSH program stores the SSH-server public key in the user’s home directory inside a file, known_hosts , in a hidden folder named
1. Generate SSH key pair (private and public)
The first step would be to generate private and public ssh key. Here centos-master will be my master server.
In this step, the client uses a special utility, ssh-keygen, to generate an SSH key pair for authentication with the server. This utility is bundled with OpenSSH and by default it creates a 2048-bit RSA key pair. It supports RSA and DSA, both with different lengths of keys. A key length of 4096 bits is recommended for establishing a secure connection between two machines. The following diagram shows how to create a RSA (Rivest-Shamir-Adleman) key pair of 2048-bit:
2. Copy public key to remote Linux machine (authorized_keys)
When you connect to your remote host, SSH validates the key ID you’re providing against a list of authorized_keys . There is one utility, ssh-copy-id , which is also bundled with OpenSSH and can be used to copy the key to the remote system. It automatically copies the
/.ssh/id_rsa.pub file by default into the remote system
We use ssh-copy-id because it copies the public key and also appends the public key to the authorized_keys . Provide the path of the public key using -i argument. This public key will be copied to our centos-client-1 node and the content of the public SSH key will be appended to root user’s /root/.ssh/authorized_keys
Similarly I will copy SSH public key to centos-client-2 for root user’s authorized_keys
3. Configuring and Securing Login (sshd_config)
Additional security measures can be enabled by modifying the OpenSSH server configuration file /etc/ssh/sshd_config , on the remote host. Following are the some steps that can be taken to secure the SSH logins:
Now, since we have configured the SSH key-based authentication in the previous section, we can disable the password authentication to secure SSH logins in the SSH server configuration file. Edit the SSH daemon config file on the remote host running the SSH server and set the PasswordAuthentication directive value to no as shown here:
Prohibit direct login as the root user through SSH, as the root user has unrestricted privileges and exists by default on every Linux system. To secure the root user account through SSH, we can do following changes in configuration file:Comment the line with the directive PermitRootLogin as shown here:
Allow only key-based ssh login in the root account by setting the directive PermitRootLogin value as without-password as shown here:
After making changes in the SSH server configuration file /etc/ssh/sshd_config , restart the sshd service to bring the applied changes into effect, as shown here:
Create ssh authenticating agent (ssh-agent)
However, we did still have to enter the password we set on the private SSH key. If you have to do this each time you want to connect to a remote host, it defeats the purpose of setting up key-based authentication. SSH agent, a small daemon that keeps unlocked private SSH keys in memory.
ssh-agent is a program to hold private keys used for public key authentication (RSA, DSA, ECDSA, Ed25519). ssh-agent is usually started in the beginning of an X-session or a login session, and all other windows or programs are started as clients to the ssh-agent program.
Verify the process status
Install PSSH
Next you can install PSSH using yum
Perform parallel SSH (PSSH)
Now we are all setup with SSH public key authentication and we can execute PSSH without the need of giving any password. Additionally I am using some more SSHD options with PSSH to disable password based login and select passphrase based authentication.
As you see I did not use «-A» and yet the PSSH tool was able to connect to all the provided host without prompting for any password.
Lastly I hope the steps from the article to generate SSH Key pair and configure SSH public key authentication using PSSH with authorized_keys in RHEL/CentOS 7 Linux was helpful. So, let me know your suggestions and feedback using the comment section.
Related Posts
Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud
If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.
For any other feedbacks or questions you can either use the comments section or contact me form.
Thank You for your support!!
Источник
Как настроить аутентификацию по ключу SSH в Linux
Как сделать ваши соединения Secure Shell еще более безопасными
Secure Shell является наиболее широко используемым средством входа на удаленный сервер Linux (или компьютер). Используя этот инструмент, вы получаете доступ к командной строке на удаленном компьютере через безопасный туннель. Из коробки вам будет предложено ввести пароль удаленного пользователя. Хотя это все еще более безопасно, чем использование более старых методов (таких как telnet), его можно сделать еще более безопасным с помощью SSH Key Authentication.
Что такое аутентификация по ключу?
Понимание аутентификации ключей на самом деле довольно просто. Представьте, что у вас есть замок, и единственный способ открыть его – использовать определенный ключ, который, как вам известно, принадлежит вам. Как замок узнает, что ключ принадлежит вам? Потому что ключ содержит уникальную для вас подпись. Внутри замка есть соответствующая подпись, которую ключ использует для сравнения. Если подписи совпадают, они откроются. Если ключ подходит, но подписи не совпадают, замок не открывается.
Это основа для аутентификации по ключу SSH. В реальной жизни это работает так, что вы создаете пару ключей (которая содержит закрытый и открытый ключи) и копируете открытый ключ на сервер, на который хотите войти. Если вы попытаетесь войти с аутентификацией по ключу, а у сервера нет открытого ключа, соответствующего вашему личному ключу, он не разрешит вам доступ.
Давайте заставим это работать.
Генерация пары ключей SSH
Первое, что нужно сделать, это создать пару ключей SSH. Для этого выполните следующие действия:
Откройте окно терминала на рабочем столе.
Присвойте ключу имя и местоположение (используйте настройки по умолчанию, используя Enter/Return на клавиатуре).
Введите и подтвердите ключевую фразу для ключа (убедитесь, что она является надежной и уникальной)
Теперь у вас есть пара ключей SSH. Эти два файла будут найдены в
/.ssh и будут называться:
- id_rsa – закрытый ключ
- id_rsa.pub – открытый ключ.
Скопируйте ваш открытый ключ на удаленный компьютер
Затем вы должны скопировать файл открытого ключа на удаленный компьютер, на который хотите войти. Это можно сделать с помощью команды:
Где USER – это имя пользователя на удаленном компьютере, а REMOTE_IP – это IP-адрес удаленного компьютера.
Если вы впервые зашли в безопасное место на удаленном компьютере, вам будет предложено ввести да , чтобы продолжить подключение, в противном случае вам будет предложено ввести пароль пользователя на удаленном компьютере. машина. После успешного ввода удаленного пароля ключ будет скопирован, и вы будете готовы проверить соединение.
Тестирование соединения
Проверьте соединение, введя команду:
Где USER – это имя пользователя на удаленном компьютере, а REMOTE_IP – это IP-адрес удаленного компьютера. Вместо запроса пароля пользователя вам будет предложено ввести ключевую фразу пары ключей SSH. После того, как вы ввели правильную ключевую фразу, вам будет разрешен доступ к удаленному компьютеру. Поздравляем, SSH Key Authentication запущена и работает.
Отключение аутентификации по паролю
Вы можете сделать этот шаг дальше, отключив аутентификацию по паролю. С этой конфигурацией единственный способ получить доступ к удаленному компьютеру – с компьютера, содержащего закрытый ключ из соответствующей пары. Другими словами, нет пары ключей, нет доступа.
Чтобы отключить аутентификацию по паролю, войдите на удаленный компьютер и введите команду:
В этом файле найдите строку:
Измените эту строку на:
Сохраните и закройте файл. Перезапустите SSH с помощью команды:
Теперь, если вы попытаетесь войти на эту удаленную машину с любого рабочего стола (или сервера), который не содержит закрытый ключ, доступ будет запрещен.
Поздравляем, вы успешно сделали вход в удаленную систему Linux более безопасным с помощью SSH.
Источник
Авторизация по ключу SSH
SSH или Secure Shell — это зашифрованный протокол, который часто используется для взаимодействия и удаленного управления серверами. Если вы захотите что-либо сделать на удаленном сервере, скорее всего, вам придется воспользоваться SSH и работать через терминал.
В SSH существует несколько способов авторизации. Вы можете каждый раз вводить пароль пользователя или использовать более безопасный и надежный способ — ключи SSH. Что самое интересное, он более удобен для применения, вам даже не нужно будет вводить пароль. В этой статье мы рассмотрим как настраивается авторизация по ключу SSH.
Как работают ключи SSH?
SSH сервер может выполнять аутентификацию пользователей с помощью различных алгоритмов. Самый популярный — это аутентификация по паролю. Он достаточно прост, но не очень безопасный. Пароли передаются по безопасному каналу, но они недостаточно сложны для противостояния попыткам перебора. Вычислительная мощность современных систем в сочетании со специальными скриптами делают перебор очень простым. Конечно, существуют другие способы дополнительной безопасности, например, fail2ban, но аутентификация по ключу SSH более надежна.
Каждая пара ключей состоит из открытого и закрытого ключа. Секретный ключ сохраняется на стороне клиента и не должен быть доступен кому-либо еще. Утечка ключа позволит злоумышленнику войти на сервер, если не была настроена дополнительная аутентификация по паролю.
Открытый ключ используется для шифрования сообщений, которые можно расшифровать только закрытым ключом. Это свойство и используется для аутентификации с помощью пары ключей. Открытый ключ загружается на удаленный сервер, к которому необходимо получить доступ. Его нужно добавить в специальный файл
Когда клиент попытается выполнить проверку подлинности через этот ключ, сервер отправит сообщение, зашифрованное с помощью открытого ключа, если клиент сможет его расшифровать и вернуть правильный ответ — аутентификация пройдена.
Как создать ключи 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 с помощью символа >>, это позволит не перезаписывать существующие ключи:
/.ssh/id_rsa.pub | ssh username@remote_host «mkdir -p
Здесь вам тоже нужно набрать yes, если вы подключаетесь к новому серверу, а затем ввести пароль. Теперь вы можете использовать созданный ключ для аутентификации на сервере:
Если вы не захотели создать ssh ключ с доступом по паролю, то вы сразу же будете авторизованы, что очень удобно. Иначе, сначала вам придется ввести фразу-пароль для расшифровки ключа.
Отключение проверки пароля
Если пароль больше не будет использоваться, то для увеличения безопасности системы лучше его вовсе отключить. Но убедитесь, что ключ надежно сохранен и вы его не потеряете, потому что по паролю вы больше не войдете. Авторизуйтесь на сервере, затем откройте конфигурационный файл /etc/ssh/sshd_config и найдите там директиву PasswordAuthenticatin. Нужно установить ее значение в No:
sudo vi /etc/ssh/sshd_config
Теперь сохраните файл и перезапустите службу ssh:
sudo service ssh restart
Дальше будет возможно только подключение по ключу ssh, пароль не будет приниматься.
Выводы
В этой статье мы рассмотрели как выполняется авторизация по ключу ssh, настройка ключей ssh и добавить ssh ключ. Теперь вы можете войти на сервер без ввода пароля. Если у вас остались вопросы, спрашивайте в комментариях!
Источник