Как управлять файлом конфигурации SSH в Windows и Linux – CloudSavvy IT
Ваш Конфигурационный файл SSH позволяет вам определить конкретные настройки для каждого хоста SSH, что значительно упрощает подключение к этому хосту. Определяя многие из этих общих или необычных свойств в файле, это устраняет необходимость запоминать этот набор параметров каждый раз, когда требуется соединение.
Определение SSH-соединения
Если файл, ~/.ssh/config
не существует, вы можете пойти дальше и создать это сейчас. Как правило, этот файл существует в .ssh
«Скрытый» каталог, скрытый только потому, что большинство операционных систем не отображают каталоги, начинающиеся с .
, Кроме того, этот каталог обычно находится в домашнем каталоге или домашнем каталоге пользователя, запустившего ssh, следовательно, ~
запись, обозначающая домашний каталог.
Важно следить за разрешениями в рамках .ssh
папки. Большинство клиентов SSH хотят, чтобы файлы были в режиме 600
в этой папке. Если вы ссылаетесь на эту папку из подсистемы Windows для Linux, убедитесь, что chmod 600 ~\.ssh\*
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Итак, как же выглядит простое SSH-соединение в этом файле? Пример простой конфигурации приведен ниже.
Host my-ssh-host
HostName 10.0.0.5
Port 22
User myuser
Как вы можете заметить из приведенной выше конфигурации, это примерно настолько просто, насколько это возможно. На самом деле, вы можете опустить порт, так как это не является строго необходимым, потому что 22
порт SSH по умолчанию. Определив это соединение, в командной строке мы можем просто сделать следующее.
ssh my-ssh-host
Соединение обычно запрашивает пароль, так как соединение SSH не должно быть незащищенным.
Публичные / частные ключи
Практически в каждом руководстве или руководстве по настройке SSH в той или иной мере упоминаются открытые / закрытые ключи. Это предпочтительный способ настройки соединения SSH. Вместо пароля, который можно взломать или угадать, необходимо получить файл ключа. В этом руководстве не рассматриваются способы их создания, поэтому давайте предположим, что набор уже существует и правильно настроен. Как мы скажем нашей конфигурации хоста использовать этот файл?
Host my-ssh-host
HostName 10.0.0.5
Port 22
User myuser
IdentityFile ~/.ssh/id_ed25519_myuser
IdentitiesOnly yes
Здесь введены две новые команды. IdentityFile
и IdentitiesOnly
команды. Во-первых, нам нужно сообщить SSH, где находится файл ключа, в этом случае мы сохранили файл в .ssh
каталог (будьте осторожны с разрешениями). Во-вторых, мы определили тег с именем IdentitiesOnly
, Это скажет SSH не пробовать каждый файл идентификации в этой папке, а только тот, который определен. По умолчанию SSH будет проходить и пробовать каждый файл идентификации, пока не найдет нужный. Часто это приводит кСлишком много ошибок аутентификации для пользователя myuser”На целевом сервере, если существует много идентификаторов.
Сложные конфигурации
Есть много сценариев, которые мы могли бы рассмотреть в этой статье, но давайте рассмотрим несколько общих и полезных.
ForwardAgent
Что если у вас есть сценарий, в котором вы открыли SSH-соединение с целевым сервером, который затем должен установить еще одно SSH-соединение со вторым сервером с этого исходного целевого сервера? Вы можете подумать, что вам нужно будет сохранить те же ключи SSH на этом целевом сервере, чтобы выполнить следующий переход. Есть команда, метко названная ForwardAgent
, что позволяет вам «переслать» ваши локальные ключи на следующий сервер в прыжке.
Host my-ssh-host
HostName 10.0.0.5
Port 22
User myuser
IdentityFile ~/.ssh/id_ed25519_myuser
IdentitiesOnly yes
ForwardAgent yes
ProxyJump
Похожий на ForwardAgent
часто требуется открыть вторичное соединение SSH напрямую через первую (или вторую) цель. Во многих случаях это связано с тем, что машина может быть отключена от обычного Интернета, но имеет соединение с «перемычкой», которая затем позволяет открыть соединение на сервере с межсетевым экраном. Начиная с версии SSH 7.3 и выше, ProxyJump
Команда позволяет нам легко выполнить это.
Host my-ssh-host
HostName 10.0.0.5
Port 22
User myuser
IdentityFile ~/.ssh/id_ed25519_myuser
IdentitiesOnly yes
ForwardAgent yes
ProxyJump myuser@10.0.0.6:22,myuser2@10.0.0.7:10005
Как видно выше, здесь есть два сервера. Сначала SSH-соединение будет 10.0.0.5
но затем немедленно откройте соединение с 10.0.0.6
затем он, наконец, откроет соединение, используя другого пользователя и порт для 10.0.0.7
,
SSH Proxy Tunnel
Что если у вас есть необходимость настроить туннель SOCKSv5? Это легко сделать с помощью файла конфигурации. Мы вводим три новые команды здесь, DynamicForward
, ControlMaster
, и ControlPath
,
Host my-ssh-host
HostName 10.0.0.5
Port 22
User myuser
IdentityFile ~/.ssh/id_ed25519_myuser
IdentitiesOnly yes
DynamicForward 8080
ControlMaster auto
ControlPath ~/.ssh/%r@%h:%p
DynamicForward
команда – это порт, который мы на самом деле ищем для прокси через наше соединение SSH, например порт 8080
, ControlMaster
установлен в auto
, что означает, что если соединение существует, то используйте его, но если нет, создайте новое. Наконец, ControlPath
устанавливает местоположение фактического файла сокета. В этом случае он использует формат именования %r@%h:%p
что соответствует myuser@10.0.0.5:22
в этом случае соединения.
Вывод
В файле конфигурации SSH много энергии. Можно определить гораздо более сложные примеры, в дополнение к простоте определения множества различных хостов в одном месте. Благодаря этому не только хорошо документируются соединения с хостом, но и обеспечивается быстрый и легкий доступ к командной строке. Если вы решите поставить этот файл под контроль версий, вы добавите возможность вести историю своих хостов и потенциально избавите себя от большой головной боли в будущем. Как вы можете заметить, файл конфигурации SSH упрощает определение хостов SSH!
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)