Установка и настройка на стороне сервера
Перед установкой соединения установите программное обеспечение на стороне сервера для размещения вашего SSH-соединения. Для этого требуется, чтобы кто-то присутствовал для установки или включения SSH. Возможно, вы уже присутствуете для этого — в противном случае ваш коллега или инженер службы поддержки на стороне сервера настроит SSH.
Обратите внимание, что если вы используете пакет веб-хостинга, SSH должен быть включен по умолчанию. Если нет, обратитесь к своему веб-хосту, чтобы настроить SSH
Если SSH не включен на удаленном компьютере или сервере, установите его с помощью
sudo apt install openssh-server
Убедитесь, что это работало с
sudo systemctl status ssh
Команда должна запрещать ответ «активен».
В некоторых случаях брандмауэр Ubuntu ufw может блокировать SSH. Чтобы этого не произошло, используйте
sudo ufw allow ssh
В некоторых случаях вам также потребуется включить SSH на удаленном устройстве. Это мера безопасности, которую можно настроить с помощью
sudo systemctl enable ssh
Доступны и другие параметры ( , и ) для настройки службы SSH.
Командная строка
Оборудование
Команда | Информация о… |
---|---|
lshw | Подробно обо всей аппаратной части компьютера |
dmidecode | информация из таблицы DMI (называемой также SMBIOS). Параметром -t можно ограничить вывод нужным типом (bios, system, baseboard, chassis, processor, memory, cache, connector, slot). Например информацию о слотах оперативной памяти (всех, даже если плашки в них не установлены) можно узнать так: dmidecode -t memory |
cat /proc/cpuinfo | процессоре |
cat /proc/meminfo | оперативной памяти и файле подкачки (free — более краткая информация) |
fdisk -l df | жёских дисках и их разделах. fdisk также покажет кол-во цилиндров, секторов и т.д. |
lspci | список всех устройств PCI, в их число иногда попадают и USB (lsusb — спец команда) |
lspci | grep Audio | драйвере аудио карты |
lsmod | загруженных модулях ядра |
lsusb | список всех usb устройств (в том числе встроенных, таких как веб-камеры и т.д.) |
Состояние ОС
Команда | Информация о… |
---|---|
|
|
xargs du -sk | sort -rn | размер всех подкаталогов в данном каталоге |
top | процессах, использовании RAM |
cat /etc/passwd | всех пользователях |
cat /etc/group | всех группах |
id oracle | пользователе oracle |
|
пользователях, зарегистрированных сейчас в системе (на каком терминале, откуда и т.д.) |
cat /proc/mdstat | состоянии RAID массива (софтверного) |
cat /proc/megaraid/hba0/raiddrives-0-9 | состоянии RAID массива (на контроллере megaraid) |
cat /proc/megaraid/hba0/diskdrives-ch0 | состоянии дисков на канале 0 в RAID массиве |
uptime | как долго система запущена |
dmesg | процесе загрузки системы |
lsof | список открытых файлов |
ps axo euid,ruid,tty,pid,comm | процессах, от кого запущены, на каком TTY и с каким PID |
|
дерево процессов |
pmap -d 9770 | карта памяти для процесса с PID = 9770. Показывает, например, сколько занимает каждый из подключенных модулей |
Программное обеспечение
Команда | Информация о… |
---|---|
lsb_release -a | версия Ubuntu |
cat /etc/redhat-release | версии Red Hat |
uname -a | системе (ОС, процессор, имя компьютера и т.д.) |
Сеть
Команда | Описание |
---|---|
ip route show | Откуда взялся маршрут |
netstat -a | просмотр всех открытых tcp и udp портов |
netstat -apn | grep 80 | что прослушивает 80 порт (http) |
whois domain | получить информацию whois для domain |
dig domain | получить DNS информацию о domain |
dig -x host | реверсивно искать DNS записи о host |
nslookup domain | краткая DNS информация о domain. Предшественник dig |
nmap 192.168.1.1 | сканирует хост на открытые порты |
nmap -sP 192.168.1.1-200 | сканирование сети на доступность хостов. Запущенный от root показывает больше. |
nmap -n -p 23 10.0.0.1-254 | grep open -A 2 -B 3 | сканирует всю сеть 10.0.0.0/24 по порту 23 и показывает только те хосты, где он открыт |
Поиск
locate ИмяФайла | Найти все файлы с именем ИмяФайла |
grep pattern files | искать pattern в files |
grep -r pattern dir | искать рекурсивно pattern в dir |
grep pattern | искать pattern в выводе command |
Установка на стороне клиента
Установить и настроить SSH на клиенте очень просто. В некоторых случаях вам даже не понадобится дополнительное программное обеспечение:
- Пользователи Linux должны найти SSH-клиент, встроенный в терминал.
- На компьютерах с macOS в терминале предустановлен SSH.
- На компьютерах с Windows потребуется использовать инструмент командной строки PowerShell или установить PuTTY.
- Чтобы подключиться к Linux через SSH с iPhone и iPad, попробуйте iTerminal (4,99 доллара США).
- Если вы используете Android для SSH, попробуйте JuiceSSH (бесплатно)
SSH не установлен в вашей системе Linux? Добавьте, обновив пакеты и обновив, а затем установив:
sudo apt update && sudo apt upgrade sudo apt install openssh-client
Раньше использовали SSH в Windows, но перешли на рабочий стол Linux? Возможно, вы пропустите настольное приложение SSH PuTTY с простым интерфейсом мыши. К счастью, его можно установить на рабочий стол Linux:
sudo apt install putty
Установив клиентское программное обеспечение SSH, вы готовы установить соединение с удаленным компьютером или сервером.
Как правило, для всех настольных и мобильных клиентов все, что вам нужно, — это IP-адрес или имя хоста и соответствующие данные для входа. Хотя внешний вид приложений может отличаться, а имя порта может потребоваться ввести вручную, клиенты SSH в основном неразличимы.
SSH файлы
Для копирования файлов по SSH используется команда SCP
Обратите внимание: если во время копирования файл назначения уже существует, SCP перезапишет его. Если файл назначения еще не существует, тогда создается пустой файл, ему задается имя файла назначения и уже в него записывается содержимое копируемого файла
Скопировать файл на локальную машину
Копируем файл «file.txt» из удаленного сервера на локальный компьютер:
$ scp [email protected]:file.txt /some/local/directory
Передача файлов по ssh
Копируем файл «file.txt» с локального компьютера на удаленный сервер.
$ scp file.txt [email protected]:/some/remote/directory
Копируем файл «file.txt» с одного удаленного сервера «remote.host1» на другой удаленный сервер «remote.host2».
$ scp [email protected]:/directory/file.txt [email protected]:/some/directory/
Копируем файлы «file1.txt» и «file2.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере.
$ scp file1.txt file2.txt [email protected]:~
Копируем файл «file.txt» с локального хоста на удаленный хост с нестандартным портом SSH (используя порт 2222).
$ scp -P 2222 file.txt [email protected]:/some/remote/directory
Копируем файл «file.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере. Сохраняем время изменения и время доступа и права копируемого фала.
$ scp -p file.txt [email protected]:~
Копируем файл «file.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере. Увеличиваем скорость работы SCP изменяя алгоритм шифрования с AES-128 (по умолчанию) на Blowfish.
$ scp -c blowfish file.txt [email protected]:~
Копируем файл «file.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере. Ограничиваем ширину канала используемого командой SCP до 100 Kbit/s.
$ scp -l 100 file.txt [email protected]:~
Как работает SSH?
SSH выполняет подключение клиентской программы к серверу ssh с именем .
В предыдущем разделе команда использовалась для вызова клиентской программы. Сервер ssh уже запущен на удаленном хосте , который мы указали.
На вашем сервере должен быть запущен сервер . Если это не так, вам может потребоваться подключение к серверу через веб-консоль или локальную последовательную консоль.
Процесс запуска сервера ssh зависит от дистрибутива Linux, который вы используете.
В Ubuntu вы можете запустить сервер ssh с помощью следующей команды:
Эта команда должна запускать сервер sshd, после чего вы сможете выполнять удаленный вход.
Системные команды Linux
Эти команды используются для просмотра информации и управления, связанной с системой Linux.
1. uname
Команда Uname используется в Linux для поиска информации об операционных системах. В Uname существует много опций, которые могут указывать имя ядра, версию ядра, тип процессора и имя хоста.
Следующая команда uname с опцией отображает всю информацию об операционной системе.
2. uptime
Информация о том, как долго работает система Linux, отображается с помощью команды uptime. Информация о времени безотказной работы системы собирается из файла ‘/proc/uptime‘. Эта команда также отобразит среднюю нагрузку на систему.
Из следующей команды мы можем понять, что система работает в течение последних 36 минут.
Полное руководство команды Uptime
3. hostname
Вы можете отобразить имя хоста вашей машины, введя в своем терминале. С помощью опции вы можете просмотреть ip-адрес компьютера. А с помощью параметра вы можете просмотреть доменное имя.
4. last
Команда last в Linux используется для определения того, кто последним вошел в систему на вашем сервере. Эта команда отображает список всех пользователей, вошедших (и вышедших) из «/var/log/wtmp » с момента создания файла.
Вам просто нужно ввести «last» в своем терминале.
5. date
В Linux команда date используется для проверки текущей даты и времени системы. Эта команда позволяет задать пользовательские форматы для дат.
Рекомендуем статью Команда Date (Дата) в Linux с примерами использования
Например, используя «date +%D«, вы можете просмотреть дату в формате «ММ/ДД/ГГ«.
6. cal
По умолчанию команда cal отображает календарь текущего месяца. С помощью опции вы можете просмотреть календарь на весь год.
9. reboot
Команда reboot используется для перезагрузки системы Linux. Вы должны запустить эту команду из терминала с правами суперпользователя sudo.
10. shutdown
Команда shutdown используется для выключения или перезагрузки системы Linux. Эта команда позволяет планировать завершение работы и уведомлять пользователей сообщениями о выключении и перезагрузке.
По умолчанию компьютер (сервер) выключится через 1 минуту. Вы можете отменить расписание, выполнив команду:
Немедленное отключение тоже возможно, для этого используется опция «now»
Создание ключей SSH
Первый шаг для настройки аутентификации ключей SSH на сервере заключается в том, чтобы сгенерировать пару ключей SSH на локальном компьютере.
Для этого мы можем использовать специальную утилиту , которая входит в стандартный набор инструментов OpenSSH. По умолчанию она создает пару 2048-битных ключей RSA, что подходит для большинства сценариев использования.
Сгенерируйте на локальном компьютере пару ключей SSH, введя следующую команду:
Утилита предложит вам выбрать место размещения генерируемых ключей. По умолчанию ключи хранятся в каталоге внутри домашнего каталога вашего пользователя. Закрытый ключ будет иметь имя , а соответствующий открытый ключ будет иметь имя .
На этом этапе лучше всего использовать каталог по умолчанию. Это позволит вашему клиенту SSH автоматически находить ключи SSH при попытке аутентификации. Если вы хотите выбрать нестандартный каталог, введите его сейчас, а в ином случае нажмите ENTER, чтобы принять значения по умолчанию.
Если ранее вы сгенерировали пару ключей SSH, вы можете увидеть следующий диалог:
Если вы решите перезаписать ключ на диске, вы больше не сможете выполнять аутентификацию с помощью предыдущего ключа. Будьте осторожны при выборе варианта yes, поскольку этот процесс уничтожает ключи, и его нельзя отменить.
Далее вам будет предложено ввести парольную фразу для ключа. Это опциональная парольная фраза, которую можно использовать для шифрования файла закрытого ключа на диске.
Возможно вам будет интересно, в чем заключаются преимущества ключа SSH, если вам все равно нужна парольная фраза. Вот некоторые его преимущества:
- Закрытый ключ SSH (защищенная паролем часть) никогда не доступен через сеть. Парольная фраза используется только для расшифровки ключа на локальном компьютере. Это означает, что парольную фразу нельзя взломать через сеть методом прямого подбора.
- Закрытый ключ хранится в каталоге с ограниченным доступом. Клиент SSH не принимает закрытые ключи, хранящиеся в каталогах, доступ к которым не ограничен. У самого ключа могут быть ограниченные разрешения (чтение и запись доступны только владельцу). Это означает, что другие пользователи системы не смогут создать уязвимость.
- Для попытки взлома защищенного парольной фразой закрытого ключа SSH злоумышленнику уже необходим доступ к системе. Это означает, что у него уже должен быть доступ к учетной записи пользователя или учетной записи root. Если вы окажетесь в такой ситуации, парольная фраза может помешать злоумышленнику сразу же попасть на ваши другие серверы. Это может дать вам достаточно времени, чтобы создать и внедрить новую пару ключей SSH и запретить доступ с взломанным ключом.
Поскольку закрытый ключ недоступен через сеть и защищен системой разрешений, доступ к этому файлу будет только у вас (и у пользователя root). Парольная фраза служит дополнительным уровнем защиты на случай взлома одной из этих учетных записей.
Парольная фраза представляет собой необязательное дополнение. Если вы решите ее использовать, вам нужно будет вводить ее при каждом использовании соответствующего ключа (если вы не используете программный агент SSH, хранящий зашифрованный ключ). Мы рекомендуем использовать парольную фразу, но если вы не хотите ее задавать, вы можете просто нажать ENTER, чтобы пропустить этот диалог.
Теперь у вас есть открытый и закрытый ключи, которые вы можете использовать для аутентификации. Следующим шагом будет размещение открытого ключа на сервере, что позволит использовать аутентификацию SSH для входа в систему.
Проверка наличия утилиты и установка OpenSSH
Как правило, во многих дистрибутивах Linux утилита OpenSSH уже установлена по-умолчанию, но конечно же есть исключения. Для проверки наличия утилиты нужно ввести в терминал коротую команду:
И если вывод будет содержать возможные опции использования в примерно таком виде, значит OpenSSH установлен:
uxumax@debian9:~$ ssh usage: ssh port] host] ] hostname uxumax@debian9:~$
Если же вывод содержит сообщение, что команда не найдена, то нужно установить .
uxumax@debian9:~$ ssh bash: ssh: command not found uxumax@debian9:~$
Если у вас Debian или Ubuntu, то для установки введите:
Если у вас CentOS или Fedora, то введите
Настройка SSH
При изменении конфигурации SSH вы меняете настройки сервера sshd.
В Ubuntu основной файл конфигурации sshd находится в каталоге .
Выполните резервное копирование текущей версии этого файла перед началом редактирования:
Откройте файл в текстовом редакторе:
Скорее всего, вы захотите оставить большинство опций в этом файле без изменений
Однако существует несколько настроек, на которые вам стоит обратить особое внимание:. /etc/ssh/sshd_config
/etc/ssh/sshd_config
Объявление порта указывает, подключения к какому порту будет отслеживать сервер sshd. По умолчанию используется порт . Вам, скорее всего, не придется изменять данную настройку, если только у вас нет конкретных причин для иного решения. Если вы решите изменить порт, позже мы покажем, как подключиться к новому порту.
/etc/ssh/sshd_config
В объявлениях ключей хоста указывается, где нужно искать глобальные ключи хоста. Мы обсудим, что такое ключ хоста, позже.
/etc/ssh/sshd_config
Эти две строки указывают на уровень логирования, который необходимо использовать.
Если вы сталкиваетесь с проблемами при работе с SSH, увеличение объема логируемых данных может быть хорошим решением, которое поможет понять, в чем заключается проблема.
/etc/ssh/sshd_config
Эти параметры определяют некоторые данные для входа в систему.
Опция определяет количество секунд, в течение которых следует сохранять подключение при отсутствии успешных попыток входа в систему.
Возможно, вам может быть полезным задать для этого параметра чуть большее количество времени, чем то, которое вам обычно требуется для входа.
определяет, разрешен ли вход с помощью пользователя с правами root.
В большинстве случаев необходимо изменить значение на , если вы создали учетную запись пользователя, которая имеет доступ к высокому уровню привилегий (через или ) и может использоваться для входа в систему через ssh.
— это защитник, который будет препятствовать попыткам входа, если файлы аутентификации доступны для чтения всем.
Он позволяет предотвратить попытки входа в систему, когда файлы конфигурации не находятся в безопасном состоянии.
/etc/ssh/sshd_config
Эти параметры используются для настройки такой возможности, как X11 Forwarding. X11 Forwarding позволяет просматривать графический пользовательский интерфейс (GUI) удаленной системы на локальной системе.
Эта функция должна быть активирована на сервере и передана клиенту SSH во время подключения с помощью опции .
После внесения изменений сохраните и закройте файл, введя , , а затем нажмите .
Если вы внесли изменения в какие-либо настройки в файле , необходимо перезапустить ваш сервер sshd, чтобы изменения вступили в силу:
Вы должны тщательно протестировать ваши изменения, чтобы убедиться, что все работает так, как вы ожидаете.
Вы можете использовать несколько активных сеансов во время внесения изменений. Это позволит вам вернуться к первоначальной конфигурации, если это потребуется.
Базовый синтаксис
Чтобы подключиться к удаленной системе с помощью SSH, мы будем использовать команду . В самом базовом виде команда имеет следующую форму:
в этом примере является IP-адресом или доменным именем узла, к которому вы пытаетесь подключиться.
Эта команда предполагает, что ваше имя пользователя на удаленной системе совпадает с именем пользователя в локальной системе.
Если ваше локальное имя пользователя отличается от имени пользователя в удаленной системе, вы можете задать его, используя следующий синтаксис:
После подключения к серверу вам, возможно, потребуется подтвердить вашу личность с помощью пароля. Позже мы рассмотрим, как сгенерировать ключи, которые можно использовать вместо паролей.
Чтобы завершить сеанс ssh и вернуться в сеанс локальной оболочки, введите следующую команду:
Сгенерировать пару ключей
Первый шаг — это генерация пары ключей. Обычно это делается на клиентской машине.
Например, на вашем ноутбуке.
Основная команда ssh-keygen создаст 2048-битную пару RSA ключей. Для
большей надёжности можно добавить флаг -b 4096
Выполните
ssh-keygen -b 4096
Чтобы сгенерировать ключ в /home/$(whoami)/.ssh
или
sudo ssh-keygen -b 4096
Чтобы сгенерировать ключ в /home/root/.ssh
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Нужно придумать имя ключа.
Я назову ключ
andrei-key101
а сохранять буду в текущую директорию.
Enter file in which to save the key (/root/.ssh/id_rsa): andrei-key101
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Нужно два раза ввести пароль. Если он вам нужен. Обычно нет.
Your identification has been saved in andrei-key101
Your public key has been saved in andrei-key101.pub
The key fingerprint is:
SHA256:abcd/abcdefghijklmnopqrstuvwxyz1234567890ab root@urn-su
The key’s randomart image is:
+——-+
|=o oo++ |
|= oo o. = o |
|+ |
|Oo=o . . |
|B+.o S . |
|+o.o |
|+.0. . |
|o+= . E |
|+=oo. . . |
+———+
Ключи готовы. Я сохранил их в текущую директорию поэтому увижу их сделав ls
ls
andrei-key101 andrei-key101.pub
Важно помнить, что если вы генерируете ключ для другого пользователя нужно
позаботиться о правильных правах доступа к этому ключу.
Подключение по SSH
Теперь, когда вы установили и запустили SSH-сервер на удаленном компьютере, вы можете попробовать войти в систему с паролем. Чтобы получить доступ к удаленному компьютеру, у вас должна быть учетная запись пользователя и пароль.
Ваш удаленный пользователь не обязательно должен быть тем же самым, что и ваш локальный пользователь. Вы можете войти в систему как любой пользователь на удаленном компьютере, если у вас есть пароль этого пользователя.
Для доступа по SSH к удаленному компьютеру, вы должны знать его IP-адрес или его имя хоста. Чтобы найти IP-адрес удаленной машины, используйте команду ip (выполняется локально на удаленном компьютере):
$ ip addr show | grep "inet " inet 127.0.0.1/8 scope host lo inet 10.1.1.5/27 brd 10.1.1.31
Если на удаленном компьютере команда ip не проходит, попробуйте вместо нее ifconfig.
Адрес 127.0.0.1 является специальным и на самом деле является адресом localhost. Это адрес «loopback», который ваша система использует, чтобы связаться с собой. Данный адрес нам не нужен для подключения к удаленной машине, поэтому в данном примере правильным IP-адресом удаленного компьютера является 10.1.1.5. Если удаленный компьютер находится в другой сети, так как IP адрес может быть практически любым (никогда не 127.0.0.1), тогда потребуется организация маршрутизации, чтобы связаться с ним через различные брандмауэры. Предположим, что ваш удаленный компьютер находится в одной сети.
Если можно пропинговать удаленную машину по ее IP-адресу или имени хоста, и у вас есть учетная запись для входа в систему, то вы можете войти в нее через SSH:
$ ping -c1 10.1.1.5 PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data. 64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms $ ping -c1 test.local PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
Теперь используйте SSH, чтобы войти в систему:
$ ssh [email protected] bash$ whoami test1
Тестовый логин работает, так что теперь переходим к доступу без пароля.
Подключение к Linux через SSH
Наряду с правильным IP-адресом у вас также должны быть имя пользователя и пароль для доступа к удаленному компьютеру.
Для инструментов SSH командной строки используйте
ssh [email protected]
Обязательно замените имя пользователя фактическим именем пользователя, а REMOTE.IP.ADDRESS.HERE — IP-адресом удаленного устройства. Нажмите Enter, и вам будет предложено ввести пароль.
С правильным паролем вы получите работающую подсказку терминала — теперь вы вошли на удаленный компьютер.
Используете настольный клиент SSH, например PuTTY?
Введите имя хоста или IP-адрес , выберите тип подключения SSH , затем « Открыть». Когда будет предложено ввести имя пользователя и пароль, введите их в окне командной строки, чтобы завершить подключение и получить удаленный доступ.
Перенаправление порта
Туннелирование SSH или переадресация SSH-порта – это метод создания зашифрованного SSH-соединения между клиентом и серверным компьютером, через который можно ретранслировать сервисные порты.
Пересылка SSH полезна для передачи сетевых данных служб, которые используют незашифрованный протокол, таких как VNC или FTP, для доступа к контенту с географическим ограничением или обхода промежуточных межсетевых экранов. По сути, вы можете перенаправить любой порт TCP и туннелировать трафик через безопасное соединение SSH.
Существует три типа переадресации портов SSH:
Переадресация локального порта
Переадресация локального порта позволяет переадресовать соединение с клиентского хоста на хост сервера SSH, а затем на порт хоста назначения.
Чтобы создать локальную переадресацию портов, передайте опцию -L клиенту ssh:
ssh -L LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
Опция -f указывает команде ssh запускаться в фоновом режиме, а -N – не выполнять удаленную команду.
Переадресация удаленных портов
Переадресация удаленных портов является противоположностью переадресации локальных портов. Он перенаправляет порт с хоста сервера на хост клиента, а затем на порт хоста назначения.
Опция -L указывает ssh создать перенаправление на удаленный порт:
ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
Динамическая переадресация портов
Динамическая переадресация портов создает прокси-сервер SOCKS, который обеспечивает связь через ряд портов.
Чтобы создать динамическую переадресацию портов (SOCKS), передайте опцию -D клиенту ssh:
ssh -R LOCAL_PORT -N -f username@hostname
Создание ключей с помощью ssh-keygen
Для создания ключей лучше использовать команду , которая доступна в служебных программах OpenSSH в Azure Cloud Shell, на узле macOS или Linux и в Windows 10 и 11. Команд задает несколько вопросов, а затем записывает закрытый ключ и соответствующий открытый ключ.
Ключи SSH по умолчанию хранятся в каталоге . Если у вас нет каталога , создайте его с правильными разрешениями с помощью команды . Ключ SSH создается как ресурс и хранится в Azure для последующего использования.
Примечание
Можно также создать ключи с Azure CLI с помощью команды , как описано в статье Создание и хранение ключей SSH.
Простой пример
Приведенная ниже команда создает файлы 4096-разрядных открытого и закрытого ключей SSH RSA в каталоге по умолчанию. Если в текущем каталоге обнаруживается пара ключей SSH, эти файлы будут перезаписаны.
Подробный пример
В следующем примере показаны дополнительные параметры команды для создания пары ключей SSH RSA. Если в текущем каталоге существует пара ключей SSH, они будут перезаписаны.
Описание команды
— программа, с помощью которой создаются ключи.
— преобразование ключа в формат PEM.
— тип создаваемого ключа; в данном случае создается ключ в формате RSA.
— количество битов в ключе; в данном случае ключ содержит 4096 битов.
— комментарий, который будет добавлен в конец файла открытого ключа для идентификации. Обычно в качестве комментария используется адрес электронной почты, но вы можете выбрать для своей инфраструктуры любой удобный метод идентификации.
— имя файла закрытого ключа, если вы решили не использовать имя по умолчанию. В том же каталоге будет создан соответствующий файла открытого ключа с в имени. Этот каталог должен существовать.
— дополнительная парольная фраза, используемая для доступа к файлу закрытого ключа.
Сохраненные файлы ключей
Имя пары ключей, используемое в этой статье. По умолчанию пара ключей называется . Так как некоторые инструменты ищут закрытый ключ в файле , имеет смысл создать такой файл. Пары ключей SSH и файл конфигурации SSH по умолчанию располагаются в каталоге . Если не указать полный путь, создаст ключи в текущем рабочем каталоге, а не в стандартном каталоге .
Парольная фраза ключа
Мы настоятельно рекомендуем добавить парольную фразу в закрытый ключ. Если не защитить файл ключа парольной фразой, любой пользователь, у которого есть этот файл, сможет использовать его, чтобы войти на любой из серверов, на котором используется соответствующий открытый ключ. Добавив парольную фразу, вы усилите защиту на случай, если другой пользователь получит доступ к файлу закрытого ключа. Это даст вам время, чтобы изменить ключи.
4. dmidecode
Утилита dmidecode собирает подробную информацию об оборудовании системы на основе данных DMI в BIOS. Отображаемая информация включает производителя, версию процессора, доступные расширения, максимальную и минимальную скорость таймера, количество ядер, конфигурацию кэша L1/L2/L3 и т д. Здесь информация о процессоре Linux намного легче читается чем у предыдущей утилиты.
5. hardinfo
Hardinfo это графическая утилита которая позволяет получить информацию о процессоре и другом оборудовании в системе в графическом интерфейсе. Утилиту надо установить:
Запуск
6. i7z
Утилита i7z — монитор параметров процессора в реальном времени для процессоров Intel Core i3, i5 и i7. Он отображает информацию по каждому ядру в реальном времени, такую как состояние TurboBoost, частота ядер, настройки управления питанием, температура и т д. У i7z есть консольный интерфейс основанный на Ncurses, а также графический на базе библиотек Qt.
7. inxi
Команда inxi — это bash скрипт, написанный для сбора информации о системе в удобном и понятном для человека виде. Он показывает модель процессора, размер кэша, скорость таймера и поддерживаемые дополнительные возможности процессора. Для установки используйте:
Для запуска:
8. likwid-topology
Likwid (Like I Knew What I’m Doing) — это набор инструментов командной строки для измерения, настройки и отображения параметров оборудования компьютера. Информация о процессоре может быть выведена с помощью утилиты likwid-topology Она показывает модель и семейство процессора, ядра, потоки, кэш, NUMA. Установка:
9. lscpu
Команда lscpu отображает содержимое /proc/cpuinfo в более удобном для пользователя виде. Например, архитектуру процессора, количество активных ядер, потоков, сокетов.
10. lshw
Команда lshw — универсальный инструмент для сбора данных об оборудовании. В отличии от других инструментов для lshw необходимы права суперпользователя так как утилита читает информацию из DMI в BIOS. Можно узнать общее количество ядер, и количество активных ядер. Но нет информации об кэше L1/L2/L3.
11. lstopo
Утилита lstopo входит в пакет hwloc и визуализирует топологию системы. Сюда входит процессор, память, устройства ввода/вывода. Эта команда полезна для идентификации архитектуры процессора и топологии NUMA. Установка:
12. numactl
Первоначально разрабатываемая для настройки планировки NUMA и политик управления памятью в Linux numactl также позволяет посмотреть топологию NUMA:
13. x86info
x86info — инструмент командной строки для просмотра информации о процессорах архитектуры x86. Предоставляемая информация включает модель, количество ядер/потоков, скорость таймера, конфигурацию кэша, поддерживаемые флаги и т д. Установка в Ubuntu:
14. nproc
Утилита просто выводит количество доступных вычислительных потоков. Если процессор не поддерживает технологию HyperThreading, то будет выведено количество ядер:
15. hwinfo
Утилита hwinfo позволяет выводить информацию о различном оборудовании, в том числе и о процессоре. Программа отображает модель процессора, текущую частоту, поддерживаемые расширения. Наверное, это самый простой способ узнать частоту процессора Linux:
×
Структура и шаблоны файла конфигурации SSH
Файл конфигурации SSH имеет следующую структуру:
Содержимое файла конфигурации клиента SSH организовано в строфы (разделы). Каждый раздел начинается с директивы и содержит определенные параметры SSH, которые используются при установлении соединения с удаленным SSH-сервером.
Отступ не требуется, но рекомендуется, так как он облегчает чтение файла.
Директива может содержать один шаблон или список шаблонов, разделенных пробелами. Каждый шаблон может содержать ноль или более непробельных символов или один из следующих спецификаторов шаблона:
- — соответствует нулю или более символам. Например, соответствует всем хостам, а Соответствует хостам в подсети .
- — Соответствует ровно одному символу. Шаблон, соответствует всем хостам в .
- — При использовании в начале шаблона аннулирует совпадение. Например, матчи любого хоста в подсети , кроме .
Клиент SSH читает раздел файла конфигурации за разделом, и, если совпадают несколько шаблонов, параметры из первого совпадающего раздела имеют приоритет. Поэтому более специфичные для хоста объявления должны быть даны в начале файла, а более общие переопределения — в конце файла.
Вы можете найти полный список доступных опций ssh, набрав в своем терминале или посетив справочную страницу ssh_config .
Файл конфигурации SSH также читается другими программами, такими как , и .
Сгенерировать пару ключей
Первый шаг — это генерация пары ключей. Обычно это делается на клиентской машине.
Например, на вашем ноутбуке.
Основная команда ssh-keygen создаст 2048-битную пару RSA ключей. Для
большей надёжности можно добавить флаг -b 4096
Выполните
ssh-keygen -b 4096
Чтобы сгенерировать ключ в /home/$(whoami)/.ssh
или
sudo ssh-keygen -b 4096
Чтобы сгенерировать ключ в /home/root/.ssh
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Нужно придумать имя ключа.
Я назову ключ
andrei-key101
а сохранять буду в текущую директорию.
Enter file in which to save the key (/root/.ssh/id_rsa): andrei-key101
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Нужно два раза ввести пароль. Если он вам нужен. Обычно нет.
Your identification has been saved in andrei-key101
Your public key has been saved in andrei-key101.pub
The key fingerprint is:
SHA256:abcd/abcdefghijklmnopqrstuvwxyz1234567890ab root@urn-su
The key’s randomart image is:
+——-+
|=o oo++ |
|= oo o. = o |
|+ |
|Oo=o . . |
|B+.o S . |
|+o.o |
|+.0. . |
|o+= . E |
|+=oo. . . |
+———+
Ключи готовы. Я сохранил их в текущую директорию поэтому увижу их сделав ls
ls
andrei-key101 andrei-key101.pub
Важно помнить, что если вы генерируете ключ для другого пользователя нужно
позаботиться о правильных правах доступа к этому ключу.
How Does SSH Work?
SSH works by connecting a client program to an ssh server, called .
In the previous section, was the client program. The ssh server was already running on the that we specified.
On nearly all Linux environments, the server should start automatically. If it is not running for any reason, you may need to temporarily access your server through a web-based console, or local serial console.
The process needed to start an ssh server depends on the distribution of Linux that you are using.
On Ubuntu, you can start the ssh server by typing:
That should start the sshd server and you can then log in remotely.
Сгенерировать пару ключей
Первый шаг — это генерация пары ключей. Обычно это делается на клиентской машине.
Например, на вашем ноутбуке.
Основная команда ssh-keygen создаст 2048-битную пару RSA ключей. Для
большей надёжности можно добавить флаг -b 4096
Выполните
ssh-keygen -b 4096
Чтобы сгенерировать ключ в /home/$(whoami)/.ssh
или
sudo ssh-keygen -b 4096
Чтобы сгенерировать ключ в /home/root/.ssh
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Нужно придумать имя ключа.
Я назову ключ
andrei-key101
а сохранять буду в текущую директорию.
Enter file in which to save the key (/root/.ssh/id_rsa): andrei-key101
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Нужно два раза ввести пароль. Если он вам нужен. Обычно нет.
Your identification has been saved in andrei-key101
Your public key has been saved in andrei-key101.pub
The key fingerprint is:
SHA256:abcd/abcdefghijklmnopqrstuvwxyz1234567890ab root@urn-su
The key’s randomart image is:
+——-+
|=o oo++ |
|= oo o. = o |
|+ |
|Oo=o . . |
|B+.o S . |
|+o.o |
|+.0. . |
|o+= . E |
|+=oo. . . |
+———+
Ключи готовы. Я сохранил их в текущую директорию поэтому увижу их сделав ls
ls
andrei-key101 andrei-key101.pub
Важно помнить, что если вы генерируете ключ для другого пользователя нужно
позаботиться о правильных правах доступа к этому ключу.