- Использование файла конфигурации SSH
- Подготовка
- Расположение файла конфигурации SSH
- Структура и шаблоны файла конфигурации SSH
- Пример файла конфигурации SSH
- Пример файла конфигурации общего SSH
- Переопределить параметр файла конфигурации SSH
- Выводы
- Как создать файл в терминале
- 1. Редактор nano
- 2. Редактор Vi
- 3. Оператор перенаправления >
- 4. Оператор перенаправления вывода >>
- 5. Оператор перенаправления 2>
- 6. Оператор перенаправления и head
- 7. Команда cp
- 8. touch
- 9. Утилита dd
- Создание специальных файлов в Linux
- Выводы
Использование файла конфигурации SSH
Если вы регулярно подключаетесь к нескольким удаленным системам через SSH, вы обнаружите, что запомнить все удаленные IP-адреса, разные имена пользователей, нестандартные порты и различные параметры командной строки сложно, если вообще возможно.
Один из вариантов — создать псевдоним bash для каждого подключения к удаленному серверу. Однако есть другое, гораздо лучшее и более простое решение этой проблемы. OpenSSH позволяет вам создать файл конфигурации для каждого пользователя, в котором вы можете хранить различные параметры SSH для каждой удаленной машины, к которой вы подключаетесь.
В этом руководстве рассматриваются основы файла конфигурации клиента SSH и объясняются некоторые из наиболее распространенных параметров конфигурации.
Подготовка
Мы предполагаем, что вы используете систему Linux или macOS с установленным клиентом OpenSSH.
Расположение файла конфигурации SSH
Файл конфигурации на стороне клиента OpenSSH называется config и хранится в каталоге .ssh в домашнем каталоге пользователя.
Каталог ~/.ssh создается автоматически, когда пользователь запускает команду ssh в первый раз. Если каталог не существует в вашей системе, создайте его с помощью следующей команды:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
По умолчанию файл конфигурации SSH может не существовать, поэтому вам может потребоваться создать его с помощью сенсорной команды :
Этот файл должен быть доступен для чтения и записи только пользователю и не должен быть доступен для других:
Структура и шаблоны файла конфигурации SSH
Файл конфигурации SSH имеет следующую структуру:
Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value
Содержимое файла конфигурации клиента SSH организовано в строфы (разделы). Каждый раздел начинается с директивы Host и содержит определенные параметры SSH, которые используются при установлении соединения с удаленным SSH-сервером.
Отступ не требуется, но рекомендуется, так как он облегчает чтение файла.
Директива Host может содержать один шаблон или список шаблонов, разделенных пробелами. Каждый шаблон может содержать ноль или более непробельных символов или один из следующих спецификаторов шаблона:
- * — соответствует нулю или более символам. Например, Host * соответствует всем хостам, а 192.168.0.* Соответствует хостам в подсети 192.168.0.0/24 .
- ? — Соответствует ровно одному символу. Шаблон, Host 10.10.0.? соответствует всем хостам в 10.10.0.7 .
- ! — При использовании в начале шаблона аннулирует совпадение. Например, Host 10.10.0.* !10.10.0.5 матчи любого хоста в 10.10.0.0/24 подсети , кроме 10.10.0.5 .
Клиент SSH читает раздел файла конфигурации за разделом, и, если совпадают несколько шаблонов, параметры из первого совпадающего раздела имеют приоритет. Поэтому более специфичные для хоста объявления должны быть даны в начале файла, а более общие переопределения — в конце файла.
Вы можете найти полный список доступных опций ssh, набрав man ssh_config в своем терминале или посетив справочную страницу ssh_config .
Файл конфигурации SSH также читается другими программами, такими как scp , sftp и rsync .
Пример файла конфигурации SSH
Теперь, когда мы рассмотрели основы файла конфигурации SSH, давайте посмотрим на следующий пример.
Обычно при подключении к удаленному серверу через SSH вы указываете имя удаленного пользователя, имя хоста и порт. Например, чтобы войти в систему как пользователь с именем john на хост с именем dev.example.com на порту 2322 из командной строки, вы должны ввести:
Чтобы подключиться к серверу с использованием тех же параметров, которые указаны в приведенной выше команде, просто набрав ssh dev , поместите следующие строки в свой «~/.ssh/config :
Host dev HostName dev.example.com User john Port 2322
Теперь, когда вы вводите ssh dev , клиент ssh будет читать файл конфигурации и использовать данные подключения, указанные для хоста dev :
Пример файла конфигурации общего SSH
Этот пример дает более подробную информацию о шаблонах хоста и приоритетах опций.
Возьмем следующий пример файла:
Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes
- Когда вы вводите ssh targaryen , клиент ssh читает файл и применяет параметры из первого совпадения, то есть Host targaryen . Затем он проверяет следующие строфы одну за другой на соответствие шаблону. Следующим подходящим является Host * !martell (то есть все хосты, кроме martell ), и он применит параметр подключения из этой строфы. Последнее определение Host * также совпадает, но клиент ssh будет использовать только параметр Compression поскольку параметр User уже определен в разделе Host targaryen . Полный список параметров, используемых при ssh targaryen выглядит следующим образом:
HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes
HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes
HostName 192.168.10.50 User oberyn Compression yes
Переопределить параметр файла конфигурации SSH
Клиент ssh читает свою конфигурацию в следующем порядке приоритета:
- Параметры, указанные в командной строке.
- Параметры, определенные в ~/.ssh/config .
- Параметры, определенные в /etc/ssh/ssh_config .
Если вы хотите переопределить один параметр, вы можете указать его в командной строке. Например, если у вас есть следующее определение:
Host dev HostName dev.example.com User john Port 2322
и вы хотите использовать все другие параметры, но для подключения от имени пользователя root вместо john просто укажите пользователя в командной строке:
Параметр -F ( configfile ) позволяет указать альтернативный файл конфигурации для каждого пользователя.
Чтобы указать ssh клиенту игнорировать все параметры, указанные в файле конфигурации ssh, используйте:
Выводы
Мы показали вам, как настроить пользовательский файл конфигурации ssh. Вы также можете настроить аутентификацию на основе ключа SSH и подключаться к своим серверам Linux без ввода пароля.
По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию добавляет дополнительный уровень безопасности на ваш сервер, снижая риск автоматических атак.
Если у вас есть вопросы, оставьте комментарий ниже.
Как создать файл в терминале
Философия Linux гласит — всё в системе есть файл. Мы ежедневно работаем с файлами, и программы, которые мы выполняем, — тоже файлы. В разных случаях нам может понадобиться создать в системе файлы определённого типа. Если вам интересно, какие типы файлов в Linux можно создать, смотрите отдельную статью.
Конечно, всё очень просто делается с помощью мышки и файлового менеджера. Но если вы дружите с клавиатурой, создать файл через терминал Linux намного быстрее и, как вы увидите, эффективнее. В терминале вы можете не только создавать пустые файлы, но и создавать файл с уже готовым содержимым, файлы определённого размера, и с нужными метаданными.
Как всё это делать, вы узнаете из этой статьи. Мы рассмотрим все доступные средства создания файлов в терминале Linux. Поехали!
1. Редактор nano
Самый распространённый способ создать текстовый файл в Linux — это использовать консольные текстовые редакторы. Например nano. После ввода команды открывается редактор, и вы прописываете нужный текст, например:
2. Редактор Vi
Тот же принцип, но программа намного серьёзнее:
Если вы в первый раз столкнулись с vim, то предупрежу — это необычный редактор. Здесь есть два режима: режим вставки и командный. Переключаться между ними можно с помощью кнопки Esc. Для выхода из редактора в командном режиме наберите :q, для сохранения файла — :w. Вообще, Vim — очень полезный инструмент. Чтобы узнать побольше о его возможностях и выучить основы, выполните: vimtutor.
Понятное дело, в этом пункте можно говорить и о других редакторах, в том числе и с графическим интерфейсом. Но мы их опустим и перейдём к другим командам создания файла в Linux.
3. Оператор перенаправления >
Это, наверное, самая короткая команда для создания файла в Linux:
Оператор оболочки для перенаправления вывода позволяет записать вывод любой команды в новый файл. Например, можно подсчитать md5 сумму и создать текстовый файл в Linux с результатом выполнения.
Это рождает ещё несколько способов создания файла в Linux, например, выведем строку в файл с помощью команды echo:
Этот способ часто используется для создания конфигурационных файлов в Linux, так сказать, на лету. Но заметьте, что sudo здесь работать не будет. С правами суперпользователя выполниться echo, а запись файла уже будет выполнять оболочка с правами пользователя, и вы всё равно получите ошибку Access Denied.
Ещё тем же способом можно сделать примитивный текстовый редактор для создания файла. Утилита cat без параметров принимает стандартный ввод, используем это:
После выполнения команды можете вводить любые символы, которые нужно записать в файл, для сохранения нажмите Ctrl+D.
А ещё есть утилита printf, и здесь она тоже поддерживает форматирование вывода:
printf «Это %d текстовая строка\n» 1 > файл
Этот способ создать файл в Linux используется довольно часто.
4. Оператор перенаправления вывода >>
Также можно не только перезаписывать файл, а дописывать в него данные, с помощью перенаправления оператора >>. Если файла не существует, будет создан новый, а если существует, то строка запишется в конец.
echo «Это текстовая строка» > файл.txt
$ echo «Это вторая текстовая строка» >> файл.txt
5. Оператор перенаправления 2>
Первые два оператора перенаправления вывода команды в файл использовали стандартный вывод. Но можно создать файл в терминале Ubuntu и перенаправить в него вывод ошибок:
Если команда не выдает ошибок, файл будет пустым.
6. Оператор перенаправления и head
С помощью команды head можно выбрать определённый объем данных, чтобы создать текстовый файл большого размера. Данные можно брать, например, с /dev/urandom. Для примера создадим файл размером 100 мегабайт:
base64 /dev/urandom | head -c 100M > файл
7. Команда cp
Команда cp используется для копирования файлов в Linux. Но с её помощью можно и создать файл. Например, чтобы создать пустой файл, можно просто скопировать /dev/null:
8. touch
Вот мы и подобрались к непосредственному созданию файлов через терминал, для этого в Linux есть специальная утилита touch. Она позволяет создать пустой файл в Linux, при этом указывать дату создания, права доступа и другие метаданные.
Чтобы создать пустой файл Linux, просто наберите:
Можно создать несколько пустых файлов сразу:
Опция -t позволяет установить дату создания. Дата указывается опцией -t в формате YYMMDDHHMM.SS. Если не указать, будет установлена текущая дата. Пример:
touch -t 201601081830.14 файл
Можно использовать дату создания другого файла:
Также можно установить дату последней модификации, с помощью опции -m:
touch -m -t 201601081830.14 файл
Или дату последнего доступа:
touch -a -t 201601081830.14 файл
Чтобы посмотреть, действительно ли задаётся информация, которую вы указали, используйте команду stat:
9. Утилита dd
Это утилита для копирования данных из одного файла в другой. Иногда необходимо создать файл определённого размера в Linux, тогда можно просто создать его на основе /dev/zero или /dev/random, вот так:
dd if=/dev/zero of=~/файл count=20M
Параметр if указывает, откуда брать данные, а of — куда записывать, count — необходимый размер. Ещё можно указать размер блока для записи с помощью bs, чем больше размер блока, тем быстрее будет выполняться копирование.
Создание специальных файлов в Linux
В Linux, кроме выше рассмотренных обычных текстовых и бинарных файлов, существуют ещё и специальные файлы. Это файлы сокетов и туннелей. Их нельзя создать обычными программами, но для этого существуют специальные утилиты, смотрите подробнее в статье, ссылку на которую я дал вверху.
Выводы
Это были все возможные команды для создания файла в Linux. Если вы знаете другие, которые следовало бы добавить в статью — поделитесь в комментариях.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.