Поиск по сайту:
Знание без нравственной основы — ничего не значит (Л. Толстой).

Примеры файлов конфигурации в OpenSSH

16.05.2018
Примеры файлов конфигурации в OpenSSH

Сейчас мы создадим и настроим конфигурационный файл для OpenSSH.

Глобальный или локальный файл конфигурации для SSH-клиента может создавать ярлыки для сервера sshd, включая расширенные параметры клиента ssh. Вы можете настроить свой SSH-клиент OpenSSH с помощью различных файлов следующим образом, чтобы сэкономить время и набрать часто используемые параметры командной строки ssh-клиента, такие как порт, имя пользователя, имя хоста, файл идентификатора и многое другое.

Давайте используем некоторые общие примеры файлов конфигурации OpenSSH.

Конфигурация клиента в конфигурационном файле OpenSSH для всей системы

  1. /etc/ssh/ssh_config : Этот файл устанавливает конфигурацию по умолчанию для всех пользователей клиентов OpenSSH на этом рабочем столе/ноутбуке и должен быть доступен для чтения всем пользователям системы.

Конфигурация клиента OpenSSH для конкретного пользователя

  1. ~/.ssh/config или $HOME/.ssh/config: Это файл собственной конфигурации пользователя, который переопределяет параметры в файле конфигурации глобального клиента/etc/ssh/ssh_config.

Конфигурационные файлы ~/.ssh/

Для создания файла конфигурации ssh, существуют следующие правила:

  • Вам нужно отредактировать ~/.ssh/config в текстовом редакторе, например vi.
  • Один конфигурационный параметр для каждой строки разрешен в файле конфигурации с именем параметра, за которым следуют его значение или значения. Синтаксис:
    config value
    config1 value1 value2
  • Вы можете использовать знак равенства (=) вместо пробела между именем параметра и значениями.
    config=value
    config1=value1 value2
  • Все пустые строки игнорируются.
  • Все строки, начинающиеся с хеша (#), игнорируются.
  • Все значения чувствительны к регистру, но имена параметров отсутствуют.

Совет:
Если это новый Linux, Apple OS X/Unix, или если вы никогда не использовали ssh, прежде чем создавать каталог ~/.ssh/, используйте следующий синтаксис:

mkdir -p $HOME/.ssh

chmod 0700 $HOME/.ssh

 

Примеры

Для демонстрационной цели наша установка выглядит следующим образом:

  1. Клиент локального рабочего стола – Apple OS X или Ubuntu (Linux).
  2. Удаленный сервер Unix – сервер OpenBSD, на котором запущен последний сервер OpenSSH.
  3. Удаленный сервер OpenSSH ip/host: 75.126.153.206 (server1.andreyex.ru)
  4. Удаленный пользователь сервера OpenSSH: andreyex
  5. Удаленный порт OpenSSH: 4242
  6. Локальный файл файла приватного ключа ssh:/nfs/shared/users/andreyex/keys/server1/id_rsa

Основываясь на приведенной выше информации, моя команда ssh выглядит следующим образом:
$ ssh -i /nfs/shared/users/andreyex/keys/server1/id_rsa -p 4242 andreyex@server1.andreyex.ru

или
$ ssh -i /nfs/shared/users/andreyex/keys/server1/id_rsa -p 4242 -l andreyex server1.andreyex.ru

 

Вы можете избежать ввода всех параметров команды ssh во время входа в удаленную машину и/или для выполнения команд на удаленной машине. Все, что вам нужно сделать, это создать файл конфигурации ssh. Откройте приложение Терминал и создайте свой файл конфигурации, введя следующую команду:

## edit file in $HOME dir
 
vi ~/.ssh/config

 

или

## edit file in $HOME dir
 
vi $HOME/.ssh/config

 

Добавьте/примените следующий параметр конфигурации для ярлыка на server1 в соответствии с нашей установкой образца:

Host server1
     HostName server1.andreyex.ru
     User andreyex
     Port 4242
     IdentityFile/nfs/shared/users/andreyex/keys/server1/id_rsa

 

Сохраните и закройте файл. Чтобы открыть новый сеанс SSH на server1.andreyex.ru, введите следующую команду:

$ ssh server1

 

Добавление другого хоста

Добавьте в свой файл ~/.ssh/config следующее:

Host nas01
     HostName 192.168.1.100
     User root
     IdentityFile ~/.ssh/nas01.key

 

Вы можете просто ввести:

$ ssh nas01

 

Объедините все это

Вот мой примерный файл ~/.ssh/config, который объясняет и создает, проектирует и оценивает различные потребности в удаленном доступе с помощью ssh client:

### по умолчанию для всех ##
Host *
     ForwardAgent no
     ForwardX11 no
     ForwardX11Trusted yes
     User andreyex
     Port 22
     Protocol 2
     ServerAliveInterval 60
     ServerAliveCountMax 30
 
## переопределение согласно хосту ##
Host server1
     HostName server1.andreyex.ru
     User andreyex
     Port 4242
     IdentityFile/nfs/shared/users/andreyex/keys/server1/id_rsa
 
## Домашний сервер nas ##
Host nas01
     HostName 192.168.1.100
     User root
     IdentityFile ~/.ssh/nas01.key
 
## Вход в Aws Cloud ##
Host aws.apache
     HostName 1.2.3.4
     User wwwdata
     IdentityFile ~/.ssh/aws.apache.key
 
## Вход на внутренний сервер локальной сети в 192.168.0.251 через наш публичный офис Великобритании ssh на основе шлюза с помощью ##
## $ ssh uk.gw.lan ##
Host uk.gw.lan uk.lan
     HostName 192.168.0.251
     User andreyex
     ProxyCommand  ssh andreyex@gateway.uk.andreyex.ru nc %h %p 2>/dev/null
 
## Наш Прокси-Сервер ##
## Вперед всех локальный порт 3128 трафик на порт 3128 на удаленном сервере vps1.andreyex.ru  ## 
## $ ssh -f -N  proxyus ##
Host proxyus
    HostName vps1.andreyex.ru
    User breakfree
    IdentityFile ~/.ssh/vps1.andreyex.ru.key
    LocalForward 3128 127.0.0.1:3128

 

Понимание конфигурации записи ~/.ssh/

  • Host: Определяет, для какого хоста или узла используется раздел конфигурации. Раздел заканчивается новой частью хоста или концом файла. Единый *шаблон может использоваться для обеспечения глобальных значений по умолчанию для всех хостов.
  • HostName: Указывает имя реального хоста для входа в систему. Также допускаются цифровые IP-адреса.
  • User : Определяет имя пользователя для соединения SSH.
  • IdentityFile: Указывает файл, с которого считывается идентификатор аутентификации DSA, ECDSA или DSA пользователя. По умолчанию используется протокол ~/.ssh/identity для протокола версии 1 и ~/.ssh/id_dsa, ~/.ssh/id_ecdsa и ~/.ssh/id_rsa для протокола версии 2.
  • ProxyCommand: Указывает команду для подключения к серверу. Командная строка продолжается до конца строки и выполняется с помощью оболочки пользователя. В командной строке любое вхождение % h будет заменено именем хоста для подключения, % p на порт и % r именем удаленного пользователя. Команда может быть в основном что угодно, и она должна считывать со своего стандартного ввода и записывать на стандартный вывод. Эта директива полезна в сочетании с nc (1) и поддержкой ее прокси. Например, следующая директива будет подключаться через прокси-сервер HTTP по адресу 192.1.0.253:
    ProxyCommand/usr/bin/nc -X connect -x 192.1.0.253:3128 %h %p
  • LocalForward: Указывает, что TCP-порт на локальном компьютере будет перенаправлен по защищенному каналу на указанный хост и порт с удаленного компьютера. Первым аргументом должен быть порт [bind_address:], а вторым аргументом должен быть host: hostport.
  • Port : Указывает номер порта для подключения на удаленном хосте.
  • Protocol: Указывает версии протокола ssh (1), которые должны поддерживаться в порядке предпочтения. Возможные значения: 1 и 2.
  • ServerAliveInterval: Устанавливает интервал ожидания в секундах, после которого, если данные не были получены с сервера, ssh (1) отправит сообщение через зашифрованный канал, чтобы запросить ответ от сервера.
  • ServerAliveCountMax: Устанавливает количество живых сообщений сервера, которые могут быть отправлены без ssh (1), получая любые сообщения с сервера. Если это пороговое значение достигнуто во время отправки сообщений сервера, ssh отключится от сервера, завершив сеанс.

Ускорить сессию ssh

Мультиплексирование – это не что иное, как отправка более одного ssh-соединения по одному соединению. OpenSSH может повторно использовать существующее TCP-соединение для нескольких одновременных сеансов SSH. Это приводит к сокращению накладных расходов при создании новых TCP-соединений. Обновите файл ~/.ssh/config:

Host server1
        HostName server1.andreyex.ru
        ControlPath ~/.ssh/controlmasters/%r@%h:%p
        ControlMaster auto

 

В этом примере я просматриваю один хост для доступа к другому серверу, т. е. Перехватывает хост с помощью ProxyCommand :

## ~/.ssh/config ##
Host internal
  HostName 192.168.1.100
  User vivek
  ProxyCommand ssh buba@vpn.andreyex.net.in -W %h:%p
  ControlPath ~/.ssh/controlmasters/%r@%h:%p
  ControlMaster auto

 

Заметка о псевдонимах оболочки (устаревший метод)

ПРЕДУПРЕЖДЕНИЕ! Эта настройка на основе bash shell aliased может работать для вас. Тем не менее, мы рекомендуем вам использовать файл ~/.ssh/config для улучшения результатов в долгосрочной перспективе. Конфигурационный файл SSH – это более продвинутые и элегантные решения. Команда alias используется только здесь для демонстрационной цели, и она здесь из-за исторических причин.

Псевдоним – это не что иное, как ярлык для команд, и вы можете создать псевдоним, используя следующий синтаксис в файле ~/.bashrc :

## создайте новый псевдоним оболочки bash следующим образом ##
 
alias server1="ssh -i/nfs/shared/users/andreyex/keys/server1/id_rsa -p 4242 andreyex@server1.andreyex.ru"

 

Затем, чтобы ssh в server1 вместо того, чтобы вводить полную команду ssh -i/nfs/shared/users/andreyex/keys/server1/id_rsa -p 4242 andreyex@server1.andreyex.ru, вам нужно было бы только ввести команду ‘server1’ и нажать клавишу [ENTER]:

$ server1

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Сергей

Спасибо за информацию! Подскажите, если ssh-ключ использует пароль, нужно вносить какие-то настройки в файл конфигурации ssh? Потому что с найстройками из Вашей статьи ssh не хочет подключаться к серверу, но при вводе команды и всех параметров (IP-адреса, порта, имени пользователя) вручную все работает.

Читайте также

Спасибо!

Теперь редакторы в курсе.