29 июля 2019

Справочник основных команд Linux с примерами

1 Общая информация

Содержимое

1.1 Основные команды

1.2 Объединение команд

1.3 Специальные символы (групповые операции)

В именах файлов нельзя использовать:
/ — использовать запрещено
— — нельзя ипользовать в начале имени файла или каталога
{}, *, ?, ‘, «, [ , ], \, >, <, |, &, пробел — каждый из этих символовдолжен быть предварен \. Применять не рекомендуется.

В конфигурационных файлах:
# — комментарий
// — комментарий

1.4 Просмотр содержимого файлов

1.5 nano

nano — редактор файлов, более дружелюбный чем vim 😉

  •  Ctrl-X — закрыть редактор
  •  Ctrl-O — сохранить
  •  Ctrl-C — номер строки\текущая позиция
  •  Ctrl-W — поиск
  •  Ctrl-W затем Ctrl-T — переход к строке №
  •  Ctrl-K — вырезать строку
  •  Ctrl-U — вставить из буфера
  •  Alt-A — выделение (вне X)
  •  Alt-6 — копировать в буфер

1.6 vim

vim — редактор файлов, более дружелюбный чем nano 😉

  •  ZQ — закрыть редактор
  •  ZZ — закрыть и сохранить

1.7 tmux

tmux — аналог screen с одновременным вводом команд в несколько окон

  •  ZZ — закрыть редактор
  •  ZQ — закрыть и сохранить

2 Система

2.1 Загрузка

Последовательность при загрузке:

Инициализация BIOS => Загрузчик (grub) => Инициализация ядра (kernel initialization) => выполнение init -> {/etc/rc.d/rc.sysinit, /etc/rc.d/rc, /etc/rc.d/rc[0-6].d/, /etc/rc.d/rc.local} => virtual consoles => X

=> Инициализация BIOS:

Определение переферийных устройств и устройств для загрузки. BIOS читает и выполняет инструкцию расположенную в первом секторе загрузочного устройства. Обычно это первые 512 bytes жесткого диска.

=> Загрузчик:

Первоначальный загрузчик находит и загружает программу загрузки 2 этапа (stage 2) и передаёт ей управление (grub); используется BIOS API; обычное место загрузчика 2 этапа — /boot/. Загрузчик 2 этапа выбирает, находит и загружает ядро и RAM диск (initrd) в память; grub читает конфигурацию из /boot/grub/grub.conf. grub.

=> Инициализация ядра:

Обнаружение устройств. Инициализация драйверов устройств. Монтирование корневой файловой системы в режиме только чтения (read-only). Запуск процесса init.

=> Выполнение init:

init читает /etc/inittab (как загружать систему для каждого runlevel). Определяется run level, директории для запуска скриптов, стартует /etc/rc.d/rc.sysinit: udev, selinux, устанавливаются параметры ядра в /etc/sysctl.conf, устанавливаются часы, загружается keymap, подключается swap, устанавливается hostname, проверяется и перемонтируется корневая файловая система в режиме чтения-записи.

2.2 Hardware

Версия системы, дистрибутив

Оборудование определенное ядром

2.3 Ресурсы и статистика

Ресурсы RAM и HDD

Статистика

2.4 Ограничения

Ограничения shell/script

Ограничения user/process

Ограничения на всю систему

Отключаем ответы сервера на ping

2.5 Runlevels

Ядро стартует init, init читает /etc/inittab и запускает rc, который в свою очередь стартует скрипты определенного уровня (runlevel). Скрипты находятся в /etc/init.d и ссылаются (линкуются) с /etc/rc.d/rcN.d где N номер runlevel
Уровень запуска по умолчанию указывается в /etc/inittab, обычно это 3 или 5.

Уровень запуска можно быстро поменять с init

chkconfig — конфигурирует какие программы будут запускаться при запуске OS с определенным runlevel

В Debian и основанных на Debian дистрибутивах используется update-rc.d для управления скриптами runlevels . По умолчанию стартует в 2,3,4,5 и выключается в 0,1 и 6.

2.6 Восстановить пароль root

Вариант 1Когда стартует grub, появляется возможность выбора режима загрузки в grub_boot_screen (иногда при загрузке нужно нажать F4)
1.Нажимем  <пробел> — попадаем в меню выбора вариантов загрузки kernel и initrd.
2.Нажимаем F <e> — для редактирования режима загрузки и дописывем S (загрузка в single user mode).

3.Нажимаем F <b> для загрузки с установленным параметром.
4.Выполняем команду и вводим нужный пароль.

Вариант 2В момент загрузки grub, задаем:

Ядро примонтирует корневой раздел, init запустит shell. Выполняем:

Вариант 31.Загружаемся с внешнего носителя в rescue mode (liveCD или installation CD).
2.Находим корневой раздел с помошью fdisk.
3.Выполняем:

2.7 kernel (update kernel)

Варианты ядра для x86:

1.Regular: несколько процессоров, максимально 4GB RAM
2.PAE: 32 процессора, 16GB RAM
3.Xen: поддержка виртуализации

Варианты ядра для x86_64:

1.Regular: 64 процессора, максимально 256GB RAM
2.Xen: поддержка виртуализации
Ядро обычно устанавливается в /boot/vmlinuz-*

Некоторые устройства:

2.8 grub

2.9 Пользователи

В /etc/shadow хранится пара: hash пароля и логин.

2.10 Память

Резидентная память — память в оперативке
Анонимная память (anon) — память без привязки к файлу
Page fault — обращение к памяти, trap


Все операции чтения и записи работают через пейджкэшь
pages recliming — освобождение памяти(sync, disareablw, swap, unreclaim)
LRU листы — организация очередей в cache может быть active innactive (meminfo)
page fault minor — выделение без чтения с диска
page fault major — с чтением диска

3 Процессы

3.1 Просмотр процессов

<PID> — уникальный номер(идентификатор) процесса

Приоритеты

Изменить приоритет запущенного процесса можно с renice. Отрицательные числа имеют наивысший приоритет. Границы от -20 до 20

Приоритет запускаемых процессов устанавливаем с nice.

nice меняет планировщик CPU, ionice меняет планировщик I/O дисков.

Последняя команда удобна для отладки и компиляции больших проектов. Кождая команда запущенная из этого shell будет иметь подобный приоритет (приоритет $$, если $$ PID shell).

Background/Foreground

Процесс запущенный в shell может быть убран на задний план(Background), а потом вызван на передний план(Foregroun) нажатием F <Ctrl>+<Z>. Запускайте процесс с nohup, чтоб он продолжил работу, когда shell будет закрыт.

Top, htop

Top — выводит информацию в реальном времени о запущенных процессах. Htop — продвинутая версия top, ставится из репозиториев.
F<u> [username] Показывает процессы принадлежащие пользователю username
F<k> [pid] Убить процесс с pid
F<1> Покажет статистику использования процессоров
F<R> Сортировка

Kill, signals

Сигналы:

Файловая система

Права

4.2 Информация о дисках

4.3 Точки монтиования, разделы, использование дисков

4.4 Блокировка файлов, кто использует файлы?

Найти открытые файлы, для Xorg:

Файл с inum 212042 нашелся в /var:

Поиск открытых файлов в точках монтирования с fuser или lsof

Приложение:

Файл:

4.5 Mount/remount

4.6 Увеличиваем SWAP

Иногда нужно увеличить swap, прямо сейчас, на лету

4.7 Монтируем SMB share

cifs использует ip или DNS имя

Если используется mount.cifs, то можно хранить учетные данные в файле /home/user/.smb:

Монтируем:

4.8 Монтируем image (образ)

4.9 Создание и запись ISO образа

Без conv=notrunc содержимое будет меньше объема диска, если данные не занимают весь диск (DVD запишем на CD).

Используем mkisofs для создания CD/DVD образа из файлов в папке. Для переодоления ограничений на имена файлов: -r разрешает Rock Ridge расширения для UNIX истем, -J разрешает Joliet расширения используемые Microsoft ОС. -L разрешает имена согласно ISO9660.

Запись:

Конвертируем Nero .nrg файл в .iso

4.10 Монтируем образ (файл как образ)

/dev/zero быстрее urandom, но менее безопасный.

4.11 Memdisk

Tmpfs очень быстрая файловая система для IO приложений. Создадим 64 MB раздел, смонтируемый в /memdisk:

4.12 Производительность дисков

5 Сеть

5.1 Устранение ошибок

Работа с NIC

eth0 из shell

5.2 Routing

Добавить/удалить маршрут

5.3 Дополнительный IP

5.4 Сменить MAC

Wireless:

5.5 Занятые порты

5.6 Firewall

5.7 Разрешить роутинг

5.8 NAT

Проброс портов можно отменить, заменив в правиле -A на -D.

5.9 DNS

Настройки DNS храняться в /etc/resolve.conf:

dig — утилита для тестирования DNS. В качестве DNS сервера используем свободный google dns с ip: 8.8.8.8

Некоторые полезные запросы:

Имя по IP адресу (in-addr.arpa. , обратная зона). Используется dighost and nslookup:

Для локального преобразовния имен (в рамках системы) можно использовть файл /etc/hosts:

5.10 DHCP

Интерфейс используемый по умолчанию — eth0

Полная информация о аренде:

5.11 Анализ трафика

Bmon — консольный монитор загрузки сетевых интерфейсов.

Sniff с tcpdump

Важные опции:
-A Отображает каждый пакет в открытом виде (текст), без заголовка
-X Показывает пакеты в hex и ASCII
-l Вывод в буффер
-D Печать всех доступных интерфейсов (# tcpdump -D)

Nmap

nmap — сканер портов с возможностью определения OS.

5.12 QoS

Ограничение скорости отдачи (Limit upload)

Целесообразно использовать для взаимодействия с DSL устройствами и различными модемами для согласования скорости.

Качество обслуживания (QoS)

tc — используем для приортета VoIP. Пусть VoIP спользует udp на портах 10000:11024 и интерфейс eth0. Команды в примере зададут качество обслуживания для 3 очередей и выделят VoIP для очереди 1 с QoS 0x1e (установлены все биты). По умолчанию потоков в очереди 3 и QoS Minimize-Delay поток в очереди 2.

Статус и удаление QoS

Расчет диапазона портов и маски:tc фильтр определяет диапазон портов с портом и маской, которые мы будемем использовать для расчета. Определим 2^N границы диапазона портов, расчитаем диапазон и переведем в HEX. Это и есть маска. Например для 10000 -> 11024, диапазон 1024.

5.13 NIS

5.14 Netcat (nc)

Создаёт или читает/пишет TCP/IP соединения

Передать файл

Копирование файлов по сети напрямую по tcp. Копирование быстрое и не нужно создвать ftp, smb и т.д, мы просто делаем файлы доступными по сети. Пусть 192.168.1.1 IP сервера.

Сканер портов

Чат

Hacks

6 SSH SCP

6.1 Public key аутентификация

Аутентификация — подтверждение подлинности; установление соответствия лица названному им идентификатору.
Авторизация — процесс предоставления определенному лицу прав на выполнение некоторых действий.
Идентификация — присвоение субъектам и объектам идентификатора и/или сравнение идентификатора с перечнем присвоенных идентификаторов.

Используем ssh-keygen для создания пары ключей. ~/.ssh/id_dsa приватный ключ, ~/.ssh/id_dsa.pub публичный ключ.
Копируем публичный ключ на сервер и добовляем его в файл ~/.ssh/authorized_keys2 в вашу домашнюю папку.

Соединяемся с хостом без пароля используя public key аутентификацию

6.2 Проверка подписи (fingerprint)

При первом логине на хост, ssh сппросит сохранить ли подпись хоста и является ли этот хост доверенным. Если мы сомневаемся и подозреваем хост в man-in-the-middle attack, то администратор хоста, может отправить вам подпись для сравнения. Получить ей можно с помощью команды ssh-keygen -l

6.3 Безопасная передача файлов

6.4 Туннелирование (Tunneling)

SSH туннелирование позволяет перенаправлять порты через SSH соединения, тем самым обеспечивая трафик и доступ к портам, которые иначе были бы заблокированы. Работает только для TCP.

Прямое перенаправление на шлюз

Нужно получить доступ к CVS (порт 2401) и http (порт 80), запущенных на удаленном хосте. Мы подключаем к локальному порту 2401, соответствующий порт удаленного хоста, а для доступа к удаленному порту 80 используем локальный порт 8080. Единожды открыв ssh сессию, все соответствующие сервисы удаленного хоста, будут доступны на локальных портах.

Форвардинг портов Netbios и RDP

Теперь SMB шара доступна по адресу \\127.0.0.1\, но только если отключена локальные шара, поскольку локальная шара тоже использует 139 порт. Что-бы иметь возможность оставить локальные расшаренные русурсы включенными, нужно создать новый виртуальный интерфейс с новым IP адресом для создания туннеля, SMB шара будет подключена через этот IP адрес. Кроме того, локальный RDP уже использует порт 3389, поэтому мы выбираем 3388. Для приведенного ниже примера, будем использовать виртуальный IP адрес 10.0.0.1.
Создаем loopback интерфейс с IP адресом 10.1.1.1:

Подключение клиентов, находящихся за NAT

Есть две машины, находящиеся за NAT шлюзом, клиенты имеют доступ к Linux-шлюзу по ssh. Поскольку будут использованы порты, выше 1024, root доступ не понадобится. На шлюзе мы используем порт 2022.

Подключение к рабочему столу, расположенному за NAT

Нужно получить доступ к Windows клиенту с VNC слушающем на 5900 порту.

Multi-hop ssh tunnel

Мы не можете получить прямой доступ к ssh сервера,а возможно это только через промежуточные хосты(например из-за проблем с маршрутизацией), но получить соединение клиент-сервер необходимо, к примеру что-бы скопировать файлы через SCP или пробросить порт для SMB. Сделать это можно, организовав туннель из цепочки хостов. Допустим нам нужно перебросить ssh порт клиента к серверу, в два скачка. Когда туннель будет создан, будет возможно прямое подключение клиент — сервер.Создание туннеля: cli -> host_1 -> host_2 -> сервер and dig tunnel 5678

client -> server используя туннель и порт 5678

Автосоединение (Autoconnect)

/home/admin/port_forward.sh

crontab -e

6.5 SSH tricks

Постоянное соединение:

Port Knocking

[options]

logfile = /var/log/knockd.log [openSSH] sequence = 3000,4000,5000 seq_timeout = 5 command = /sbin/iptables -A INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 5000,4000,3000 seq_timeout = 5 command = /sbin/iptables -D INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT tcpflags = syn

7 VPN с SSH

7.1 P-2-P | 7.2 Lan-2-Lan

OpenSSH поддерживает устройства tun/tap, позволяющие создавать шифрованный туннель. Плюс протокола SSH в том, что для реализации не нужно устанавливать и настраивать дополнительный софт, минус — низкая производительность на медленных линиях.

В /etc/ssh/sshd_config, должны стоять опции:

7.1 P-2-P

Соединим два хоста client и server. Соединение инициирует client к server, при этом он должен обладать правами root. Конечные адреса туннеля 10.0.0.1 (server) и 10.0.0.2 (client), кроме того мы создаем устройство tun1.

7.2 Lan-2-Lan

Есть две сети, их нужно соединить, сеть А с адресом 192.168.51.0/24 и сеть Б с адресом 192.168.16.0/24. 192.168.51.0/24 (сеть A)|шлюз A <-> шлюз Б|192.168.16.0/24 (сеть Б)

8 Backup

8.1 rsync

rsync используется для удаленного копирования (локально тоже используется) или синхронизации файлов и каталогов. Может практически целиком заменить cp и scp, поддерживает сжатие и рекурсию, прерванные передачи можно перезапустить.

Копируем через сет с компрессией. По-умолчанию, Rsync использует для передачи протокол SSH в том числе и с ключами, если таковые имеются. Символ «:» используется как в SCP.

Исключить из процесса удаленного копирования директорию tmp в /home/user/ и сохранить иерархию, удаленная директория будет иметь структуру /backup/home/user/:

Можно использовать rsync с «::», это гораздо быстрее, но трафик не шифруется. Местонахождение папки для резервного копирования (например /backup) можно настроить в файле /etc/rsyncd.conf. Переменная RSYNC_PASSWORD служит для того, что-бы избежать необходимости ввода пароля вручную.

8.2 tar

tar — архивирование файлов и директорий. Сам по себе tar, это не сжатый архив, сжатые архивы имеют расширения .tgz или .tar.gz (gzip) или .tbz (bzip2).

Создание архива tar:

Распаковать архив tar:

Полезно:

8.3 dd

dd ( disk dump или destroy disk ) — используется для копирования (конвертирования) дисков, разделов, и прочих операций копирования.

Синтаксис:

Размер входных данных по-умолчанию 512 байт (1 блок). Увеличение размера блока ускоряет процесс копирования, но требует больше памяти.

Резервное копирование и восстановление

Recover

dd считывает раздел поблочно, если на диске предположительно есть проблемы, нужно использовать опцию conv=sync,noerror, при этом dd будет пропускать битые блоки и записывать нули на диск назначения. Поэтому важно, установить размер блока, равным, или меньшим, чем размер блока на диске. Вполне подходящим будет размер блока в 1 килобайт, установить размер на входе и выходе можно опцией bs=1k. Если на диске имеются сбойные сектора, но основные данные нужно сохранить с данного раздела, можно создать файл образа, смонтировать образ и копировать данные на новый диск. С установленной опцией noerror, dd пропустит поврежденные блоки, записав на их место нули, при этом, потеряны будут, только данные, содержавшиеся в сбойных секторах диска.

Удаление данных

MBR

MBR содержит код загрузчика и таблицу разделов. Первый 466 байт отводятся под загрузчик, 466-512 байт под таблицу размещения разделов.

9 sudo

sudo — повысить уровень привелегий, дать права на выполнение, без выдачи пароля на root.

sudo конфигурируется в файле /etc/sudoers или с помощью команды visudo

/etc/sudoers:

10 Управление пакетами

10.1 yum rpm apt-get

yum устанавливает пакет и все зависимости (пакеты|библиотеки) для его работы из репозиториев.

Работа с пакетами, без разрешения зависимостей:

10.2 репозитории

Создаем файл заканчивающийся на .repo в /etc/yum.repos.d/ (Для дистрибутивов с yum):

10.3 update kernel, обновить OS

Обновить дистрибутив

Обновим Centos 5.5 до 5.6:

Обновить ядро

Установим ядро с поддержкой виртуализации:

Обновить ядро:

11 Полезные команды

11.1 mail

mail — это базовое приложение для отправки и получения электронной почты. Для отправки почты, просто наберите «mail user@domain». Первая строка, это «Тема» (subject), далее идет содержимое письма. Закончить набор и отправить письмо можно, введя на новой строке символ «.»(точка):

Другой вариант:

11.2 screen

screen — оконный менеджер виртуальных терминалов

screen имеет две основные функции:
— Запуск нескольких сессий терминала, в одном окне.
— Запуск программ отдельно от терминала в фоновом режиме. Терминал может быть отключен и переподключен позже.

Сессия терминала прерывается, когда будет закрыта работающая программа и сделан выход с терминала.

11.3 find

Будьте осторожны при использовании xargs или exec, они могут возвращать неверный результат если имена файлов или директорий содержат пробелы. Используйте -print0 | xargs -0, вместо | xargs. Опция -print0 должна быть последней.

11.4 sed

sed — это неинтерактивный строчный редактор.

11.5 awk

awk — это весьма мощьный и полезный язык для обработки текстовой информации

11.6 Regexp

Regexp — регулярные выражения

11.7 Доп. команды

Изменить расширение для кучи файлов

12 Shell

В большинстве Linux, в качестве системной оболочки, используется bash.

Настройка оболочки в файле конфигурации ~/.bashrc ( так-же может быть ~/.bash_profile )

F<Ctrl>+<R> — вводишь слово, с которым надо найти команду в истории. Повторные F<Ctrl>+<R> перебирают все команды в истории с этим словом.

F<Ctrl>+<L> — очистка экрана.

F<Ctrl>+<A> — замена F<Home>,F <Ctrl>+<E> — F<End>

F<Ctrl>+<U> — удаление текста от курсора до начала строки, F<Ctrl>+<K> — удаление от курсора до конца строки, F<Ctrl>+<Y> — вставить удаленный предыдущими примерами кусок текста, F<Ctrl>+<C> — удаление всей строки (обычно работает как отмена команды).

F<Ctrl>+<T> — меняет местами символ под курсором и предыдущий набранный (при опечатке вида /dev/dsa вместо /dev/sda)

^^ — После попытки выполнить команду, набранную с ошибкой, строка вида ^ошибка^правильно запустит на выполнение исправленную команду.

# — если вместо набранной команды надо сначала выполнить другую, можно закомментировать строку и нажать <enter>, впоследствии вернуться к команде в истории, раскомментировать и выполнить.

F<Alt>+<.> — подставляет к текущей команде аргумент предыдущей.

13 Печать

14 Дисковые квоты

Квоты распределяются на уровне файловой системы и поддерживаются ядром.

Пакет quota, нужно установит дополнительно, затем активировать дисковые квоты в файле fstab и перемонтировать раздел

Инициализация файла quota.user с помощью quotacheck.

По-умолчанию, дисковые квоты не накладывают никаких ограничений (установлены в 0). Установить необходимые лимиты для пользовательских квот можно с помощью программы edquota. Так-же лимиты можно дублировать на других пользователей. Размер блока по-умочанию, 1 kб. Время действия можно установить с помощью edquota -t

Команда edquota -p используется для дублирования квот на других пользователей.

15 Поиск неисправностей

15.1 Поиск неисправностей

16 SSL сертификаты

SSL — Secure Socket Layer, криптографический протокол, использующий шифрование открытым ключем, для защиты передаваемых по сети данных. Протокол SSL, является важным элементом политики безопасности системы. SSL сертификат — электронный документ, используемый для подтверждения принадлежности транзакции тому или иному серверу и установления защищенного соединения между клиентом и сервером с шифрованием трафика. Часто используется на защищенных Веб серверах (https) или Mail серверах (imaps)

— Клиент должен создать сертификат, со всеми необходимыми данными

— Отправить запрос на сертификацию в один из «центров сертификации» (CA). Так-же на данном этапе, будет создан приватный ключ на локальной машине

— После обработки запроса, сертификат подписывается секретным ключем CA. Клиент имея публичный ключ CA, проверяет подлинность сертификата и далее может использовать его

— Если необходимо, можно объединить сертификат и ключ в один файл

Конфигурация OpenSSL

В данном примере мы будем использовать директорию /usr/local/certs. Проверьте и отредактируйте файл /etc/pki/tls/openssl.cnf, согласно вашей конфигурации.

Создать сертификат полномочий

Если у нас нет сертификата, подписанного CA, и вы не планируете отправлять запрос на сертификацию, можно создать свой сертификат

Запрос сертификации (CSR)

Сохраним запрос (newreq.pem), он может быть отправлен снова, для следующего обновления, подпись ограничивает срок действия сертификата. Кроме того, в процессе, будет создан приватный ключ newkey.pem

Подпись сертификата

Подписанный CA сертификат является действующим.

Теперь servernamekey.pem — содержит приватный ключ а servernamecert.pem — сертификат сервера.

Создание объединенного сертификата

IMAP серверу нужно иметь все приватные ключи и серверные сертификаты в одном файле, файл должен храниться в безопасном месте.

Создадим файл servername.pem содержащий и сертификаты и ключи:

1.Открыть файл servernamekey.pem в текстовом редакторе и скопировать приватный ключ в файл servername.pem

2.Открыть файл servernamecert.pem в текстовом редакторе и скопировать сертификат в файл servername.pem

Информация о сертификате

17 Шифрование файлов

17.1 OpenSSL

Зашифровать и расшифровывать:

17.2 GPG

GnuPG известный способ шифрования и подписи электронных писем или других данных, кроме того gpg предоставляет расширенную систему управления ключами. В данных примерах рассматривается только шифрование файлов. Самым простым является симметричный шифр. В этом случае файл шифруется с помощью пароля, соответственно расшифровать его может тот, кто знает этот пароль, никаких ключей не требуется. GPG добавляет расширение «*.gpg» к имени зашифрованного файла

Шифрование с использованием ключей

Приватный ключ и публичный ключ, основа ассиметричной криптографии. О чем нужно помнить:

1.Ваш публичный ключ используется другими для шифрования файлов, которые, как получатель, можете расшифровать только вы (даже не тот, кто его шифровал).

2.Ваш приватный ключ зашифрован по паролю и используется для расшифровки файлов, зашифрованных Вашим публичным ключем. Приваиный ключ должен храниться в безопасном месте. Помните, если приватный ключ или пароль от него будут потеряны, вместе с ними пропадут и зашифрованные файлы.

3.Ключевой файл, может содержать несколько ключей.

Вначале нужно сгенерировать пару ключей. Значения по-умолчанию вполне подойдут, однако вам нужно будет ввести имя, адрес электронной почты и комментарий (не обязательно). Комментарий полезен при создании более одного ключа для данного имени/e-mail. Так-же вам нужно будет задать ключевую фразу (именно фразу а не слово).