Как управлять файлом конфигурации SSH в Windows и Linux — CloudSavvy IT

SSH

Ваш Конфигурационный файл 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, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *