Сейчас мы создадим и настроим конфигурационный файл для OpenSSH.
Глобальный или локальный файл конфигурации для SSH-клиента может создавать ярлыки для сервера sshd, включая расширенные параметры клиента ssh. Вы можете настроить свой SSH-клиент OpenSSH с помощью различных файлов следующим образом, чтобы сэкономить время и набрать часто используемые параметры командной строки ssh-клиента, такие как порт, имя пользователя, имя хоста, файл идентификатора и многое другое.
Давайте используем некоторые общие примеры файлов конфигурации OpenSSH.
Конфигурация клиента в конфигурационном файле OpenSSH для всей системы
- /etc/ssh/ssh_config : Этот файл устанавливает конфигурацию по умолчанию для всех пользователей клиентов OpenSSH на этом рабочем столе/ноутбуке и должен быть доступен для чтения всем пользователям системы.
Конфигурация клиента OpenSSH для конкретного пользователя
- ~/.ssh/config или $HOME/.ssh/config: Это файл собственной конфигурации пользователя, который переопределяет параметры в файле конфигурации глобального клиента/etc/ssh/ssh_config.
Конфигурационные файлы ~/.ssh/
Для создания файла конфигурации ssh, существуют следующие правила:
- Вам нужно отредактировать ~/.ssh/config в текстовом редакторе, например vi.
- Один конфигурационный параметр для каждой строки разрешен в файле конфигурации с именем параметра, за которым следуют его значение или значения. Синтаксис:
config value config1 value1 value2
- Вы можете использовать знак равенства (=) вместо пробела между именем параметра и значениями.
config=value config1=value1 value2
- Все пустые строки игнорируются.
- Все строки, начинающиеся с хеша (#), игнорируются.
- Все значения чувствительны к регистру, но имена параметров отсутствуют.
Примеры
Для демонстрационной цели наша установка выглядит следующим образом:
- Клиент локального рабочего стола – Apple OS X или Ubuntu (Linux).
- Удаленный сервер Unix – сервер OpenBSD, на котором запущен последний сервер OpenSSH.
- Удаленный сервер OpenSSH ip/host: 75.126.153.206 (server1.andreyex.ru)
- Удаленный пользователь сервера OpenSSH: andreyex
- Удаленный порт OpenSSH: 4242
- Локальный файл файла приватного ключа 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
Заметка о псевдонимах оболочки (устаревший метод)
Псевдоним – это не что иное, как ярлык для команд, и вы можете создать псевдоним, используя следующий синтаксис в файле ~/.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