Как настроить пользовательские соединения SSH для упрощения удаленного доступа
SSH (SSH-клиент) — программа для удаленного доступа к машине, позволяющая пользователю выполнять команды на удаленном хосте. Это один из наиболее рекомендуемых методов входа на удаленный хост, поскольку он предназначен для обеспечения безопасной зашифрованной связи между двумя ненадежными хостами через незащищенную сеть.
SSH использует как общесистемный, так и пользовательский (пользовательский) файл конфигурации. В этом руководстве мы объясним, как создать собственный файл конфигурации ssh и использовать определенные параметры для подключения к удаленным хостам.
Требования:
- У вас должен быть установлен клиент OpenSSH на рабочем столе Linux.
- Ознакомьтесь с общими параметрами, используемыми для удаленных подключений через ssh.
Файлы конфигурации SSH-клиента
Ниже указано расположение файлов конфигурации ssh-клиента:
/etc/ssh/ssh_config
— это общесистемный файл конфигурации по умолчанию. Он содержит настройки, которые применяются ко всем пользователям клиентского компьютера ssh.~/.ssh/config
или$HOME/.ssh/config
– это пользовательский/настраиваемый файл конфигурации. Он имеет конфигурации, применимые к конкретному пользователю. Поэтому он переопределяет настройки по умолчанию в общесистемном файле конфигурации. Это файл, который мы создадим и будем использовать.
По умолчанию пользователи аутентифицируются по ssh с использованием паролей, однако вы можете настроить вход по ssh без пароля с помощью ssh keygen за 5 простых шагов.
Примечание. Если каталог ~/.ssh
не существует в вашей настольной системе, создайте его со следующими разрешениями.
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
Приведенная выше команда chmod подразумевает, что только пользователь может иметь разрешения на чтение, запись и выполнение в каталоге, как того требуют настройки ssh.
Как создать пользовательский файл конфигурации SSH
Этот файл обычно не создается по умолчанию, поэтому вам необходимо создать его с разрешениями на чтение/запись только для пользователя.
touch ~/.ssh/config
chmod 0700 ~/.ssh/config
Приведенный выше файл содержит разделы, определенные спецификациями хостов, и этот раздел применяется только к хостам, которые соответствуют одному из шаблонов, установленных в спецификации.
Обычный формат ~/.ssh/config
следующий: все пустые строки, а также строки, начинающиеся с ’#’
, считаются комментариями:
Host host1
ssh_option1=value1
ssh_option2=value1 value2
ssh_option3=value1
Host host2
ssh_option1=value1
ssh_option2=value1 value2
Host *
ssh_option1=value1
ssh_option2=value1 value2
Из формата выше:
- Хост-хост1 – это определение заголовка для хост1. Здесь начинается спецификация хоста и заканчивается следующим определением заголовка: Хост-хост2. секция.
- host1, host2 — это просто псевдонимы хостов, которые можно использовать в командной строке, а не фактические имена хостов удаленных хостов.
- Такие параметры конфигурации, как ssh_option1=value1, ssh_option2=value1 value2, применяются к соответствующему хосту и должны иметь отступ для хорошо организованного форматирования.
- Для такого параметра, как ssh_option2=value1 value2, сначала рассматривается значение value1, а затем value2.
- Определение заголовка Host * (где
*
— это шаблон — подстановочный знак, который соответствует нулю или более символам) будет соответствовать нулю или более хостам.
Учитывая приведенный выше формат, ssh читает файл конфигурации именно так. Если вы выполните команду ssh для удаленного доступа к host1 следующим образом:
ssh host1
Приведенная выше команда ssh выполняет следующие действия:
- сопоставить псевдоним хоста host1 в файле конфигурации и применить параметры, установленные в заголовке определения, Host Host1.
- затем переходит к следующему разделу хоста, Хост2, и обнаруживает, что имя, указанное в командной строке, не совпадает, поэтому никакие параметры здесь не используются.
- Он переходит к последнему разделу Хост *, который соответствует всем хостам. Здесь все параметры этого раздела применяются к хост-соединению. Но он не может переопределить какие-либо значения параметров, которые уже использовались в предыдущих разделах.
- То же самое относится и к host2.
Как использовать пользовательский файл конфигурации SSH
Как только вы поймете, как работает файл конфигурации ssh-клиента, вы можете создать его следующим образом. Не забудьте использовать параметры и значения (псевдонимы хостов, номера портов, имена пользователей и т. д.), применимые к вашей серверной среде.
Откройте файл конфигурации в вашем любимом редакторе:
vi ~/.ssh/config
И определим необходимые разделы:
Host fedora25
HostName 192.168.56.15
Port 22
ForwardX11 no
Host centos7
HostName 192.168.56.10
Port 22
ForwardX11 no
Host ubuntu
HostName 192.168.56.5
Port 2222
ForwardX11 yes
Host *
User tecmint
IdentityFile ~/.ssh/id_rsa
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
Подробное объяснение вышеуказанных параметров конфигурации ssh.
- HostName – определяет реальное имя хоста для входа в систему, альтернативно вы можете использовать числовые IP-адреса, это также разрешено (как в командной строке, так и в спецификациях HostName) .
- Пользователь – указывает пользователя, под которым будет выполнен вход.
- Порт — задает номер порта для подключения к удаленному хосту, значение по умолчанию — 22. Используйте номер порта, указанный в файле конфигурации sshd удаленного хоста.
- Протокол – этот параметр определяет версии протокола, которые должен поддерживать ssh, в порядке предпочтения. Обычными значениями являются ’1’ и ’2’, несколько версий должны быть разделены запятыми.
- IdentityFile — указывает файл, из которого считывается идентификатор аутентификации пользователя DSA, Ed25519, RSA или ECDSA.
- ForwardX11 – определяет, будут ли соединения X11 автоматически перенаправляться по защищенному каналу и установленному DISPLAY. Он имеет два возможных значения: «да» или «нет».
- Сжатие – используется для установки сжатия во время удаленного подключения со значением да». По умолчанию используется значение «нет».
- ServerAliveInterval – устанавливает интервал тайм-аута в секундах, по истечении которого, если от сервера не получен ответ (или данные), ssh отправит сообщение по зашифрованному каналу для запроса ответа от сервера. Значение по умолчанию — 0, что означает, что сообщения не будут отправляться на сервер, или 300, если определен параметр BatchMode.
- ServerAliveCountMax — устанавливает количество активных сообщений сервера, которые могут быть отправлены без получения по ssh какого-либо ответа от сервера.
- LogLevel – определяет уровень детализации, который используется при регистрации сообщений из ssh. Допустимые значения включают: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 и DEBUG3. По умолчанию стоит ИНФО.
Стандартный способ подключения к любому удаленному хосту Linux (в моем случае CentOS 7), определенный во втором разделе файла конфигурации выше, мы обычно вводим следующую команду:
ssh -i ~/.ssh/id_rsa -p 22 [email
Однако, используя файл конфигурации ssh-клиента, мы можем просто ввести следующую команду:
ssh centos7
Дополнительные параметры и примеры использования можно найти на странице конфигурации клиента ssh:
$man ssh_config
На данный момент это все, в этом руководстве мы объяснили вам, как использовать пользовательский (пользовательский) файл конфигурации ssh-клиента в Linux. Используйте форму обратной связи ниже, чтобы написать нам по поводу этой статьи.