Протокол SSH – это безопасный протокол, который обычно используется для подключения к удаленным устройствам, таким как серверы и сетевые устройства, включая маршрутизаторы и коммутаторы. Он работает в конфигурации клиент-сервер и по умолчанию прослушивает порт 22 (хотя при необходимости его можно изменить). SSH использует различные методы шифрования и хеширования, чтобы гарантировать, что связь между клиентом и удаленным хостом зашифрована и защищена от подслушивания.
Файлы SSH хранятся в папке .ssh. Это скрытая папка, которая находится в домашнем каталоге. Каталог .Ssh не создается по умолчанию; он создается, когда вы инициируете соединение с удаленным хостом или используете команду ssh-keygen для генерации закрытого и открытого ключей аутентификации, как если бы вы хотели настроить беспарольную аутентификацию ssh.
Каталог .ssh содержит важные файлы SSH, такие как:
- Открытый и закрытый ключи ( id_rsa и id_rsa.pub).
- Файл Known_hosts – содержит открытые ключи всех удаленных систем.
- Конфигурационный файл конфигурации клиента
Если файл конфигурации не существует, вы можете легко создать его, как показано.
$ touch ~/.ssh/config
Файл конфигурации клиента .ssh/config
Каждый раз, когда вы инициируете SSH-соединение, вам необходимо указывать такие детали, как IP-адрес или имя домена, а также порт, который SSH прослушивает. Например,
$ ssh andreyex@192.168.2.103 -p 22
Всегда может быть сложно помнить такие детали. И здесь на помощь приходит файл ~/.ssh/config. Файл ~/.ssh/config – это файл конфигурации, который позволяет вам настраивать детали конфигурации удаленного хоста для каждого пользователя. Это избавляет вас от мучительной необходимости постоянно вспоминать детали каждого хоста, необходимые для подключения.
Появится образец файла конфигурации, как показано.
Host staging-server HostName 192.168.2.103 User andreyex Port 22
Простая команда SSH для удаленного хоста будет выглядеть следующим образом:
$ ssh staging-server
Разрешения для файла .ssh/config
По умолчанию файл конфигурации клиента ~/.ssh/config имеет права доступа 644 файла. Вы можете проверить это, используя команду ls с параметрами -la следующим образом.
$ ls -la ~/.ssh/config
Это означает, что владелец и группа файла имеют разрешения на чтение и запись (rw), в то время как другие пользователи имеют разрешения только на чтение (r).
-rw-rw-r--
ПРИМЕЧАНИЕ:
Как правило, никогда не назначайте разрешения на запись другим пользователям. Это создает угрозу безопасности вашего файла, и другие пользователи, которые не являются вами или вашей группой, могут изменять содержимое файла. Назначение разрешений на запись приведет к ошибке ‘Bad owner or permissions’, как показано ниже.
Здесь файлу конфигурации были назначены разрешения 666. Это означает, что каждый может читать и записывать файл.
Точно так же здесь применяется тот же случай, когда файлу было назначено 777 разрешений. Это означает, что каждый может читать, писать и выполнять файл. Проще говоря, у всех есть права на потенциально опасный файл.
Лучшая практика рекомендует оставить разрешения по умолчанию на 664 или 600, где только владелец имеет разрешения на чтение и запись (rw). Таким образом, файл не будет изменен неавторизованными пользователями.
Кроме того, убедитесь, что файл принадлежит вам. Если файл будет изменен на другого пользователя, SSH не сможет разрешить имя хоста, указанное в файле конфигурации.
В приведенном ниже примере владелец ~/.ssh/config был установлен на bob: bob.
Чтобы решить эту проблему, мы вернулись к исходному владению файлом с помощью команды chown.
$ sudo chown andreyex:andreyex ~/.ssh/config
Теперь, когда права доступа к файлу восстановлены, я могу получить доступ, вызвав команду SSH, за которой следует имя хоста, указанное в файле конфигурации.
$ ssh staging-server
И это все, что вам нужно знать о настройке разрешений для файла ~/.ssh/config. Убедитесь, что вы не установили разрешения на чтение для остальных пользователей, и убедитесь, что файл принадлежит вам.