Поиск по сайту:

Как настроить пользовательские соединения SSH для упрощения удаленного доступа


SSH (SSH-клиент) — программа для удаленного доступа к машине, позволяющая пользователю выполнять команды на удаленном хосте. Это один из наиболее рекомендуемых методов входа на удаленный хост, поскольку он предназначен для обеспечения безопасной зашифрованной связи между двумя ненадежными хостами через незащищенную сеть.

SSH использует как общесистемный, так и пользовательский (пользовательский) файл конфигурации. В этом руководстве мы объясним, как создать собственный файл конфигурации ssh и использовать определенные параметры для подключения к удаленным хостам.

Требования:

  1. У вас должен быть установлен клиент OpenSSH на рабочем столе Linux.
  2. Ознакомьтесь с общими параметрами, используемыми для удаленных подключений через ssh.

Файлы конфигурации SSH-клиента

Ниже указано расположение файлов конфигурации ssh-клиента:

  1. /etc/ssh/ssh_config — это общесистемный файл конфигурации по умолчанию. Он содержит настройки, которые применяются ко всем пользователям клиентского компьютера ssh.
  2. ~/.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 – это определение заголовка для хост1. Здесь начинается спецификация хоста и заканчивается следующим определением заголовка: Хост-хост2. секция.
  2. host1, host2 — это просто псевдонимы хостов, которые можно использовать в командной строке, а не фактические имена хостов удаленных хостов.
  3. Такие параметры конфигурации, как ssh_option1=value1, ssh_option2=value1 value2, применяются к соответствующему хосту и должны иметь отступ для хорошо организованного форматирования.
  4. Для такого параметра, как ssh_option2=value1 value2, сначала рассматривается значение value1, а затем value2.
  5. Определение заголовка Host * (где * — это шаблон — подстановочный знак, который соответствует нулю или более символам) будет соответствовать нулю или более хостам.

Учитывая приведенный выше формат, ssh читает файл конфигурации именно так. Если вы выполните команду ssh для удаленного доступа к host1 следующим образом:


ssh host1

Приведенная выше команда ssh выполняет следующие действия:

  1. сопоставить псевдоним хоста host1 в файле конфигурации и применить параметры, установленные в заголовке определения, Host Host1.
  2. затем переходит к следующему разделу хоста, Хост2, и обнаруживает, что имя, указанное в командной строке, не совпадает, поэтому никакие параметры здесь не используются.
  3. Он переходит к последнему разделу Хост *, который соответствует всем хостам. Здесь все параметры этого раздела применяются к хост-соединению. Но он не может переопределить какие-либо значения параметров, которые уже использовались в предыдущих разделах.
  4. То же самое относится и к 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.

  1. HostName – определяет реальное имя хоста для входа в систему, альтернативно вы можете использовать числовые IP-адреса, это также разрешено (как в командной строке, так и в спецификациях HostName) .
  2. Пользователь – указывает пользователя, под которым будет выполнен вход.
  3. Порт — задает номер порта для подключения к удаленному хосту, значение по умолчанию — 22. Используйте номер порта, указанный в файле конфигурации sshd удаленного хоста.
  4. Протокол – этот параметр определяет версии протокола, которые должен поддерживать ssh, в порядке предпочтения. Обычными значениями являются ’1’ и ’2’, несколько версий должны быть разделены запятыми.
  5. IdentityFile — указывает файл, из которого считывается идентификатор аутентификации пользователя DSA, Ed25519, RSA или ECDSA.
  6. ForwardX11 – определяет, будут ли соединения X11 автоматически перенаправляться по защищенному каналу и установленному DISPLAY. Он имеет два возможных значения: «да» или «нет».
  7. Сжатие – используется для установки сжатия во время удаленного подключения со значением да». По умолчанию используется значение «нет».
  8. ServerAliveInterval – устанавливает интервал тайм-аута в секундах, по истечении которого, если от сервера не получен ответ (или данные), ssh отправит сообщение по зашифрованному каналу для запроса ответа от сервера. Значение по умолчанию — 0, что означает, что сообщения не будут отправляться на сервер, или 300, если определен параметр BatchMode.
  9. ServerAliveCountMax — устанавливает количество активных сообщений сервера, которые могут быть отправлены без получения по ssh какого-либо ответа от сервера.
  10. 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. Используйте форму обратной связи ниже, чтобы написать нам по поводу этой статьи.