<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.rtzra.ru/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>RTzRa&#039;s hive - software:ssh</title>
        <description>Все работает</description>
        <link>https://wiki.rtzra.ru/</link>
        <lastBuildDate>Fri, 05 Jun 2026 05:37:55 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://wiki.rtzra.ru/_media/wiki/logo.png</url>
            <title>RTzRa&#039;s hive</title>
            <link>https://wiki.rtzra.ru/</link>
        </image>
        <item>
            <title>SSH: Устойчивый тоннель</title>
            <link>https://wiki.rtzra.ru/software/ssh/ssh-auto-tunnel</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;sshustojchivyj_tonnel&quot;&gt;SSH: Устойчивый тоннель&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Иногда бывает необходимо сделать тоннель подручными средствами. OpenVPN, Wireguard и прочее это все, конечно, здорово, но для некоторых случаев избыточно.
&lt;/p&gt;

&lt;p&gt;
Есть возможность быстренько настроить устойчивый тоннель средствами SSH и спрятать в нем трафик или сделать доступ к определенному сервису.
&lt;/p&gt;

&lt;p&gt;
Пример: заблокирован OpenVPN до определенного сервера, нужно пробросить локальный порт чтобы было подключение через ssh-тоннель.
&lt;/p&gt;

&lt;p&gt;
Что и где:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; remote-user - наш пользователь, под которым будет осуществляться подключение. Авторизация по ключам, их необходимо создать заранее&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LOCAL-IP - локальный IP, на который будет приниматься подключение&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; REMOTE-IP - удаленный сервер с OpenVPN&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Ставим autossh:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install autossh&lt;/pre&gt;

&lt;p&gt;
Настраиваем подключение в файле /home/remote-user/.ssh/config:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Host REMOTE-IP
  HostName REMOTE-IP
  User remote-user
  IdentityFile ~/.ssh/id_remote-user
  IdentitiesOnly yes&lt;/pre&gt;

&lt;p&gt;
Создаем файл сервиса /etc/systemd/system/ssh-tunnel.service со следующим содержимым:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=SSH Tunnel
After=network.target

[Service]
User=remote-user
ExecStart=/usr/bin/autossh -o ServerAliveInterval=30 -o &amp;quot;ServerAliveCountMax 3&amp;quot; -M 44444 -o ExitOnForwardFailure=yes -gnNT -L LOCAL-IP:1194:localhost:1194 remote-user@REMOTE-IP
RestartSec=15
Restart=always
KillMode=mixed

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
Запускаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl daemon-reload
systemctl start ssh-tunnel.service&lt;/pre&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh?do=showtag&amp;amp;tag=ssh&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssh&quot; rel=&quot;tag&quot;&gt;ssh&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/autossh?do=showtag&amp;amp;tag=autossh&quot; class=&quot;wikilink1&quot; title=&quot;tag:autossh&quot; rel=&quot;tag&quot;&gt;autossh&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/tunnel?do=showtag&amp;amp;tag=tunnel&quot; class=&quot;wikilink1&quot; title=&quot;tag:tunnel&quot; rel=&quot;tag&quot;&gt;tunnel&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/tonnel?do=showtag&amp;amp;tag=%D1%82%D0%BE%D0%BD%D0%BD%D0%B5%D0%BB%D1%8C&quot; class=&quot;wikilink1&quot; title=&quot;tag:tonnel&quot; rel=&quot;tag&quot;&gt;тоннель&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 07 Jun 2025 10:21:39 +0000</pubDate>
        </item>
        <item>
            <title>Использование ssh-keygen для генерации ключей SSH: ...</title>
            <link>https://wiki.rtzra.ru/software/ssh/ssh-big-manual</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ispolzovanie_ssh-keygen_dlja_generacii_kljuchej_sshpodrobnoe_rukovodstvo&quot;&gt;Использование ssh-keygen для генерации ключей SSH: подробное руководство&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Взято отсюда: &lt;a href=&quot;https://www.securitylab.ru/analytics/562583.php&quot; class=&quot;urlextern&quot; title=&quot;https://www.securitylab.ru/analytics/562583.php&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.securitylab.ru/analytics/562583.php&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Подробное руководство по генерации и использованию SSH-ключей с помощью ssh-keygen. Объяснение принципов работы, инструкции для Linux, macOS и Windows.
&lt;/p&gt;

&lt;p&gt;
Помните времена, когда для входа на сервер нужно было каждый раз вводить пароль? Как будто недостаточно головной боли с запоминанием паролей к соцсетям, почте и банковским приложениям. Хорошо, что умные люди придумали SSH-ключи — систему, где вместо ежедневного «угадай пароль» вы один раз настраиваете пару ключей и забываете про эту проблему.
&lt;/p&gt;

&lt;p&gt;
SSH-ключи стали золотым стандартом для доступа к серверам, Git-репозиториям и облачной инфраструктуре. Принцип простой: есть два ключа — открытый и закрытый. Закрытый остается у вас и охраняется как зеница ока, а открытый можно спокойно раздавать направо и налево. Попытка подобрать ключ методом перебора займет у злоумышленника примерно столько же времени, сколько нужно на пересчет всех песчинок на планете.
&lt;/p&gt;

&lt;p&gt;
В центре этой магии — утилита ssh-keygen, которая входит в комплект OpenSSH. Она генерирует ключи, меняет пароли, показывает отпечатки и вообще делает всю черновую работу. Ниже — практическое руководство без воды: от выбора алгоритма до интеграции с агентом и настройки аппаратных токенов безопасности.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 ssh-keygen \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0435\u0439 SSH: \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ispolzovanie_ssh-keygen_dlja_generacii_kljuchej_sshpodrobnoe_rukovodstvo&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2384&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;pochemu_kljuchi_nadezhnee_parolej_i_pochemu_ob_ehtom_voobsche_stoit_dumat&quot;&gt;Почему ключи надежнее паролей (и почему об этом вообще стоит думать)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Асимметричная криптография работает примерно как почтовый ящик с хитрым замком. У вас есть два ключа: один открывает ящик для складывания писем (это открытый ключ), а второй — для их извлечения (закрытый ключ). Любой может положить письмо в ящик, но достать его может только владелец второго ключа.
&lt;/p&gt;

&lt;p&gt;
В случае с SSH закрытый ключ никогда не покидает ваш компьютер. Сервер хранит копию вашего открытого ключа в файле ~/.ssh/authorized_keys, и когда вы подключаетесь, происходит математическая «рукопожатие»: сервер проверяет, что у вас действительно есть закрытая половина ключа. Даже если кто-то перехватит весь трафик, без закрытого ключа он ничего не сможет сделать.
&lt;/p&gt;

&lt;p&gt;
Преимущества такой схемы очевидны: никаких паролей в сети, никаких «admin123» и «qwerty», никаких попыток подобрать пароль перебором. Если закрытый ключ надежно защищен фразой-паролем и правильными правами доступа к файлам, это практически неприступная крепость.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Открытый ключ: безобидная текстовая строка в файле *.pub, которую можно публиковать где угодно&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Закрытый ключ: ваша тайная половина, которую нужно беречь как код от банковской карты&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Фраза-пароль: дополнительная защита на случай, если кто-то все-таки доберется до файла&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043b\u044e\u0447\u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 (\u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0431 \u044d\u0442\u043e\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u043e\u0438\u0442 \u0434\u0443\u043c\u0430\u0442\u044c)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pochemu_kljuchi_nadezhnee_parolej_i_pochemu_ob_ehtom_voobsche_stoit_dumat&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2385-4691&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;vybiraem_algoritmpochemu_ed25519_stal_novym_korolem&quot;&gt;Выбираем алгоритм: почему ED25519 стал новым королем&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В 2025 году OpenSSH официально поменял алгоритм по умолчанию с RSA на ED25519. И это не просто дань моде — ED25519 действительно лучше по всем параметрам: компактнее, быстрее, криптографически стойкий и поддерживается практически везде, где есть современный SSH.
&lt;/p&gt;

&lt;p&gt;
RSA все еще работает и широко поддерживается, но требует ключей длиной минимум 3072 бита для приемлемой безопасности. ED25519 при той же стойкости умещается в гораздо меньший размер. ECDSA тоже неплох, но у него есть свои тонкости с источниками случайности, поэтому в новых установках обычно выбирают ED25519.
&lt;/p&gt;

&lt;p&gt;
Отдельная категория — аппаратные ключи на FIDO2-токенах (YubiKey и подобные). Они хранят секретный материал внутри защищенного устройства и могут требовать физического касания для подтверждения входа. Это резко усложняет жизнь злоумышленникам, даже если они получили доступ к вашему компьютеру.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Для новых проектов: ed25519 — современно, быстро, надежно&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Для совместимости со стариной: rsa с длиной от 3072 бит&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Для параноиков: ed25519-sk или ecdsa-sk с FIDO2-токеном&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Документация: &lt;a href=&quot;https://man.openbsd.org/ssh-keygen&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/ssh-keygen&quot; rel=&quot;ugc nofollow&quot;&gt; мануал ssh-keygen&lt;/a&gt;, &lt;a href=&quot;https://man.openbsd.org/ssh_config&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/ssh_config&quot; rel=&quot;ugc nofollow&quot;&gt; настройки ssh_config&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c: \u043f\u043e\u0447\u0435\u043c\u0443 ED25519 \u0441\u0442\u0430\u043b \u043d\u043e\u0432\u044b\u043c \u043a\u043e\u0440\u043e\u043b\u0435\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vybiraem_algoritmpochemu_ed25519_stal_novym_korolem&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4692-6779&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;gde_zhivut_kljuchi_i_pochemu_ssh_takoj_priveredlivyj_k_pravam_dostupa&quot;&gt;Где живут ключи и почему SSH такой привередливый к правам доступа&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
По умолчанию ключи лежат в папке ~/.ssh в домашнем каталоге. Там будут файлы типа id_ed25519 (закрытый ключ) и id_ed25519.pub (открытый). На одной машине может быть несколько ключей для разных задач — ничего страшного, главное не путать их назначение и вести учет.
&lt;/p&gt;

&lt;p&gt;
SSH очень придирчив к правам доступа на файлы, и это правильно. Если ваш секретный ключ может читать кто угодно, значит, он уже не секретный. Поэтому при неправильных правах SSH откажется работать с хмурым сообщением «permissions are too open».
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Папка ~/.ssh: chmod 700 ~/.ssh (только владелец может читать и писать)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Закрытые ключи: chmod 600 ~/.ssh/id_* (только владелец может читать)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Открытые ключи: обычно 644 хватает (но можно и строже)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; На сервере: ~/.ssh/authorized_keys — 600, папка ~/.ssh — 700&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0413\u0434\u0435 \u0436\u0438\u0432\u0443\u0442 \u043a\u043b\u044e\u0447\u0438 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 SSH \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0440\u0435\u0434\u043b\u0438\u0432\u044b\u0439 \u043a \u043f\u0440\u0430\u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gde_zhivut_kljuchi_i_pochemu_ssh_takoj_priveredlivyj_k_pravam_dostupa&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6780-8189&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;bystryj_startsozdaem_sovremennyj_kljuch_za_pjat_minut&quot;&gt;Быстрый старт: создаем современный ключ за пять минут&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Этот рецепт покроет 90% случаев. Генерируем ED25519-ключ с понятным комментарием и надежной защитой. Флаг -a добавляет «соль в рану» для тех, кто попытается подобрать фразу-пароль методом перебора.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -t ed25519 -a 100 -C &amp;quot;Petr Ivanov work noutbook 2025&amp;quot; -f ~/.ssh/id_ed25519&lt;/pre&gt;

&lt;p&gt;
Утилита спросит, где сохранить ключ и какую фразу-пароль установить. Если вы работаете на личном защищенном компьютере, можете оставить фразу пустой, но в корпоративной среде это моветон. Потерять ноутбук без защиты ключа — это почти как оставить в нем записку с паролями ко всем серверам.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -t ed25519 — выбираем алгоритм (самый современный на сегодня)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -a 100 — усложняем подбор фразы-пароля (100-200 — золотая середина)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -C — комментарий для опознания ключа через пару лет&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -f — точно указываем путь к файлу&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442: \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0437\u0430 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bystryj_startsozdaem_sovremennyj_kljuch_za_pjat_minut&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8190-9675&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;dlja_osobyx_sluchaevrsa_kastomnye_parametry_i_tixij_rezhim&quot;&gt;Для особых случаев: RSA, кастомные параметры и тихий режим&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Иногда приходится работать с древними системами, где ED25519 еще не завезли, или корпоративная политика безопасности требует конкретных параметров. Тогда можно создать RSA-ключ с увеличенной длиной и современным форматом хранения:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -t rsa -b 4096 -o -a 150 -C &amp;quot;RSA for old server&amp;quot; -f ~/.ssh/id_rsa_legacy -q&lt;/pre&gt;

&lt;p&gt;
Флаг -o сохраняет ключ в современном формате OpenSSH (защищенном через bcrypt), а -q включает «тихий режим» — полезно в скриптах, где не нужна болтовня в консоль.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -b 4096 — длина RSA-ключа (чем больше, тем безопаснее, но медленнее)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -o — современный формат вместо старого PEM&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -q — меньше текста в выводе&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043b\u044f \u043e\u0441\u043e\u0431\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432: RSA, \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0442\u0438\u0445\u0438\u0439 \u0440\u0435\u0436\u0438\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dlja_osobyx_sluchaevrsa_kastomnye_parametry_i_tixij_rezhim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;9676-10845&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;apparatnye_kljuchikogda_paranojja_opravdana&quot;&gt;Аппаратные ключи: когда паранойя оправдана&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если у вас есть FIDO2-токен (YubiKey, SoloKey или аналогичный), стоит попробовать аппаратные ключи SSH. Секретный материал живет внутри токена и никогда его не покидает, а для входа на сервер может потребоваться физическое касание устройства. Даже если злоумышленник полностью скомпрометирует ваш компьютер, без токена он не сможет подключиться к серверам.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -t ed25519-sk -C &amp;quot;Hardware key for Production&amp;quot; -f ~/.ssh/id_ed25519_sk&lt;/pre&gt;

&lt;p&gt;
Полезные опции для FIDO-ключей:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -O resident — сохранить открытый ключ прямо на токене (удобно при смене компьютера)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -O verify-required — требовать PIN или биометрию перед использованием&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -O application=ssh: — задать идентификатор приложения&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Подробности: &lt;a href=&quot;https://man.openbsd.org/ssh-keygen&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/ssh-keygen&quot; rel=&quot;ugc nofollow&quot;&gt; мануал ssh-keygen&lt;/a&gt;, история FIDO2 в OpenSSH: &lt;a href=&quot;https://www.openssh.com/txt/release-8.2&quot; class=&quot;urlextern&quot; title=&quot;https://www.openssh.com/txt/release-8.2&quot; rel=&quot;ugc nofollow&quot;&gt; заметки к релизу 8.2&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438: \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u0430\u043d\u043e\u0439\u044f \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;apparatnye_kljuchikogda_paranojja_opravdana&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;10846-12287&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;dobavljaem_kljuch_na_serveravtomaticheski_ili_rukami&quot;&gt;Добавляем ключ на сервер: автоматически или руками&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Самый простой способ — утилита ssh-copy-id. Она сама скопирует открытый ключ на сервер и поставит правильные права доступа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server.example.com&lt;/pre&gt;

&lt;p&gt;
Если ssh-copy-id недоступна (например, на некоторых версиях macOS или в минимальных дистрибутивах), можно сделать то же самое вручную:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat ~/.ssh/id_ed25519.pub | ssh user@server.example.com \
&amp;#039;mkdir -p ~/.ssh &amp;amp;&amp;amp; cat &amp;gt;&amp;gt; ~/.ssh/authorized_keys &amp;amp;&amp;amp; chmod 600 ~/.ssh/authorized_keys &amp;amp;&amp;amp; chmod 700 ~/.ssh&amp;#039;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Проверьте права на сервере: ~/.ssh должна быть 700, authorized_keys — 600&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Убедитесь, что в /etc/ssh/sshd_config включен PubkeyAuthentication yes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Документация: &lt;a href=&quot;https://manpages.debian.org/ssh-copy-id&quot; class=&quot;urlextern&quot; title=&quot;https://manpages.debian.org/ssh-copy-id&quot; rel=&quot;ugc nofollow&quot;&gt; ssh-copy-id manual&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u044e\u0447 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440: \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043b\u0438 \u0440\u0443\u043a\u0430\u043c\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dobavljaem_kljuch_na_serveravtomaticheski_ili_rukami&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;12288-13407&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;ssh-agentodin_raz_vvel_parol_den_rabotaesh_spokojno&quot;&gt;SSH-агент: один раз ввел пароль — день работаешь спокойно&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Агент SSH — это такой добрый демон, который запоминает разблокированные ключи и подставляет их при необходимости. Один раз утром ввели фразу-пароль, и весь день подключаетесь к серверам без дополнительных вопросов. Это экономит кучу времени и снимает соблазн создавать ключи вообще без защиты.
&lt;/p&gt;

&lt;p&gt;
На большинстве Linux-дистрибутивов и в macOS агент запускается автоматически. Если нет — можно стартануть вручную:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;eval &amp;quot;$(ssh-agent -s)&amp;quot;
ssh-add ~/.ssh/id_ed25519&lt;/pre&gt;

&lt;p&gt;
В macOS есть фишка с интеграцией в «Связку ключей» — система сама достанет фразу-пароль при входе в аккаунт:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# один раз добавляем ключ в Связку
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

# прописываем в ~/.ssh/config
Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_ed25519&lt;/pre&gt;

&lt;p&gt;
В Windows тоже есть полноценный SSH-агент как системная служба. Подробности: &lt;a href=&quot;https://learn.microsoft.com/windows-server/administration/openssh/openssh_overview&quot; class=&quot;urlextern&quot; title=&quot;https://learn.microsoft.com/windows-server/administration/openssh/openssh_overview&quot; rel=&quot;ugc nofollow&quot;&gt; документация Microsoft&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSH-\u0430\u0433\u0435\u043d\u0442: \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432\u0432\u0435\u043b \u043f\u0430\u0440\u043e\u043b\u044c \u2014 \u0434\u0435\u043d\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0448\u044c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssh-agentodin_raz_vvel_parol_den_rabotaesh_spokojno&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;13408-15030&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;fajlsshconfigkak_prevratit_ssh_v_udobnyj_instrument&quot;&gt;Файл ~/.ssh/config: как превратить SSH в удобный инструмент&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Конфигурационный файл — это способ навсегда избавиться от длинных команд типа ssh -i ~/.ssh/special_key -p 2222 deploy@long-server-name.company.com. Вместо этого прописываете псевдонимы и подключаетесь простой командой ssh prod.
&lt;/p&gt;

&lt;p&gt;
Пример конфигурации для трех окружений:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Host prod
  HostName prod.example.com
  User deploy
  Port 22
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

Host staging
  HostName 203.0.113.25
  User deploy
  IdentityFile ~/.ssh/id_ed25519
  ProxyJump bastion.example.com

Host vps
  HostName vps.provider.net
  User root
  IdentityFile ~/.ssh/id_ed25519_sk&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; IdentitiesOnly yes запрещает SSH перебирать все ключи подряд&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ProxyJump настраивает подключение через промежуточный сервер&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Все опции: &lt;a href=&quot;https://man.openbsd.org/ssh_config&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/ssh_config&quot; rel=&quot;ugc nofollow&quot;&gt; руководство по ssh_config&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0424\u0430\u0439\u043b ~\/.ssh\/config: \u043a\u0430\u043a \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c SSH \u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fajlsshconfigkak_prevratit_ssh_v_udobnyj_instrument&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;15031-16221&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;kommentarii_i_imenovanieporjadok_v_fajlax_porjadok_v_golove&quot;&gt;Комментарии и именование: порядок в файлах — порядок в голове&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Комментарий в открытом ключе — это сообщение для будущего себя. Через год вы точно не вспомните, какой ключ для чего создавали, поэтому лучше сразу писать что-то вменяемое: «рабочий ноутбук 2025», «ключ для GitHub», «сервер базы данных» и так далее.
&lt;/p&gt;

&lt;p&gt;
То же самое касается имен файлов — не бойтесь отходить от стандартных id_rsa и называть ключи по их назначению:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Осмысленные комментарии: -C «Anna Petrova MacBook Pro 2025»&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Говорящие имена: ~/.ssh/id_ed25519_github, ~/.ssh/id_ed25519_work&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; В конфигурации явно указывайте IdentityFile для каждого хоста&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435: \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u2014 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432 \u0433\u043e\u043b\u043e\u0432\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kommentarii_i_imenovanieporjadok_v_fajlax_porjadok_v_golove&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;16222-17272&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;smena_parolej_i_vosstanovlenie_poterjannyx_fajlov&quot;&gt;Смена паролей и восстановление потерянных файлов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если нужно сменить фразу-пароль у существующего ключа, это делается одной командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -p -f ~/.ssh/id_ed25519&lt;/pre&gt;

&lt;p&gt;
Утилита попросит старую и новую фразы. Если потерялся файл *.pub, но закрытый ключ на месте, открытую часть можно восстановить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -y -f ~/.ssh/id_ed25519 &amp;gt; ~/.ssh/id_ed25519.pub&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Посмотреть «отпечаток» ключа: ssh-keygen -l -f ~/.ssh/id_ed25519.pub&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Выбрать алгоритм хеша: добавить -E sha256 или -E md5&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043c\u0435\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;smena_parolej_i_vosstanovlenie_poterjannyx_fajlov&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;17273-18074&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;cifrovaja_gigienaprostye_pravila_kotorye_spasut_kareru&quot;&gt;Цифровая гигиена: простые правила, которые спасут карьеру&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Главная опасность — потеря или кража закрытого ключа. Снизить риски помогают элементарные привычки: сильная фраза-пароль, резервные копии в зашифрованном виде и разделение ключей по ролям. Не используйте один ключ для GitHub, продакшн-серверов и личного VPS — это как иметь один пароль для всех аккаунтов.
&lt;/p&gt;

&lt;p&gt;
Для автоматизации храните открытые ключи в системе управления конфигурацией (Ansible, Salt), а закрытые — только на рабочих станциях разработчиков или в защищенном хранилище секретов типа HashiCorp Vault.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Фраза-пароль минимум из 5-6 слов или 15+ символов&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Разные ключи для разных задач (работа, личные проекты, продакшен)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Зашифрованные бэкапы ключей отдельно от основного устройства&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; FIDO2-токены там, где это критично&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0426\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u0433\u0438\u0433\u0438\u0435\u043d\u0430: \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0430\u0441\u0443\u0442 \u043a\u0430\u0440\u044c\u0435\u0440\u0443&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cifrovaja_gigienaprostye_pravila_kotorye_spasut_kareru&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;18075-19497&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;otzyv_dostupakak_pravilno_vygnat_byvshego_sotrudnika&quot;&gt;Отзыв доступа: как правильно «выгнать» бывшего сотрудника&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Когда кто-то увольняется или ключ компрометирован, доступ нужно отозвать быстро и без паники. Для обычных ключей просто удаляете соответствующую строку из authorized_keys на всех серверах. Хороший тон — вести список с указанием владельца каждого ключа и даты создания.
&lt;/p&gt;

&lt;p&gt;
В больших организациях используют SSH-сертификаты: они живут ограниченное время и отзываются централизованно. Сложнее в настройке, но проще в управлении.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Обычные ключи: удалить строку, завершить активные сессии пользователя&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Сертификаты: центральный отзыв через CA&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Детали формата authorized_keys: &lt;a href=&quot;https://man.openbsd.org/sshd&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/sshd&quot; rel=&quot;ugc nofollow&quot;&gt; руководство sshd&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u0437\u044b\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430: \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u00ab\u0432\u044b\u0433\u043d\u0430\u0442\u044c\u00bb \u0431\u044b\u0432\u0448\u0435\u0433\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;otzyv_dostupakak_pravilno_vygnat_byvshego_sotrudnika&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;19498-20705&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;ssh-sertifikaty_dlja_prodvinutyxkogda_kljuchej_stalo_slishkom_mnogo&quot;&gt;SSH-сертификаты для продвинутых: когда ключей стало слишком много&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Сертификат SSH — это обертка вокруг обычного ключа с подписью доверенного центра сертификации. Серверу достаточно доверять CA, а не каждому ключу по отдельности. Пользователю выдают короткоживущий сертификат с конкретными правами, что упрощает управление доступом.
&lt;/p&gt;

&lt;p&gt;
Упрощенный пример:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# создаем ключ центра сертификации
ssh-keygen -f ~/.ssh/ssh_ca -C &amp;quot;Corporate CA&amp;quot;

# подписываем пользовательский ключ на 8 часов
ssh-keygen -s ~/.ssh/ssh_ca -I &amp;quot;developer-ivan&amp;quot; -n ivan,developer -V +8h ~/.ssh/id_ed25519.pub&lt;/pre&gt;

&lt;p&gt;
Подробнее: &lt;a href=&quot;https://man.openbsd.org/ssh-keygen&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/ssh-keygen&quot; rel=&quot;ugc nofollow&quot;&gt; раздел о сертификатах в ssh-keygen&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSH-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445: \u043a\u043e\u0433\u0434\u0430 \u043a\u043b\u044e\u0447\u0435\u0439 \u0441\u0442\u0430\u043b\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssh-sertifikaty_dlja_prodvinutyxkogda_kljuchej_stalo_slishkom_mnogo&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;20706-21785&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;otladkachto_delat_kogda_nichego_ne_rabotaet&quot;&gt;Отладка: что делать, когда ничего не работает&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
90% проблем с SSH решается двумя способами: проверить права доступа к файлам и включить подробный вывод. Если SSH ругается на ключ, сначала посмотрите, что именно он пытается сделать:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh -vvv user@server.example.com&lt;/pre&gt;

&lt;p&gt;
Частые проблемы и их решения:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; «Permissions 0644 are too open» — выполните chmod 600 ~/.ssh/id_*&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; «No matching host key type» — сервер слишком старый, попробуйте RSA&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; «Agent admitted failure to sign» — перезапустите агент и добавьте ключ заново&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ключ правильный, но вход не работает — смотрите логи на сервере: /var/log/auth.log или journalctl -u sshd&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u043b\u0430\u0434\u043a\u0430: \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;otladkachto_delat_kogda_nichego_ne_rabotaet&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;21786-22790&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;git_i_oblachnye_servisyne_tolko_servery_ljubjat_ssh&quot;&gt;Git и облачные сервисы: не только серверы любят SSH&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Большинство Git-хостингов поддерживают аутентификацию по ключам. Добавляете открытый ключ в веб-интерфейсе, и можете клонировать репозитории, пушить коммиты и не вводить пароль каждый раз. Для изоляции лучше создать отдельный ключ «под Git».
&lt;/p&gt;

&lt;p&gt;
Многие сервисы уже понимают ED25519, а некоторые поддерживают даже аппаратные ключи FIDO2:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; GitHub: &lt;a href=&quot;https://docs.github.com/en/authentication/connecting-to-github-with-ssh&quot; class=&quot;urlextern&quot; title=&quot;https://docs.github.com/en/authentication/connecting-to-github-with-ssh&quot; rel=&quot;ugc nofollow&quot;&gt; подключение по SSH&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; GitLab: &lt;a href=&quot;https://docs.gitlab.com/ee/ssh/&quot; class=&quot;urlextern&quot; title=&quot;https://docs.gitlab.com/ee/ssh/&quot; rel=&quot;ugc nofollow&quot;&gt; документация по SSH&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bitbucket: &lt;a href=&quot;https://support.atlassian.com/bitbucket-cloud/docs/set-up-an-ssh-key/&quot; class=&quot;urlextern&quot; title=&quot;https://support.atlassian.com/bitbucket-cloud/docs/set-up-an-ssh-key/&quot; rel=&quot;ugc nofollow&quot;&gt; настройка SSH-ключей&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Git \u0438 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b: \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043b\u044e\u0431\u044f\u0442 SSH&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;git_i_oblachnye_servisyne_tolko_servery_ljubjat_ssh&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;22791-23823&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;avtomatizacijakogda_roboty_sozdajut_kljuchi&quot;&gt;Автоматизация: когда роботы создают ключи&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В CI/CD-пайплайнах и скриптах важно детерминированное поведение без интерактивных вопросов. Все параметры можно задать флагами:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -t ed25519 -a 100 -N &amp;quot;&amp;quot; -C &amp;quot;ci runner $(date +%Y-%m-%d)&amp;quot; -f /tmp/id_ed25519_ci -q&lt;/pre&gt;

&lt;p&gt;
Важно: пустая фраза-пароль (-N «») допустима только для временных ключей в изолированной среде!
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Закрытые ключи держите только в оперативной памяти&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Открытые ключи можно передавать через системы управления конфигурацией&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Чек-листы для быстрой проверки
&lt;/p&gt;

&lt;p&gt;
Настройка клиента:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Создан ED25519-ключ с фразой-паролем&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Права: chmod 700 ~/.ssh &amp;amp;&amp;amp; chmod 600 ~/.ssh/id_*&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Настроен ~/.ssh/config с IdentitiesOnly yes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Агент запущен, ключ добавлен&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Настройка сервера:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ~/.ssh имеет права 700, authorized_keys — 600&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; В sshd_config включен PubkeyAuthentication yes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Сервис sshd перезапущен после изменений&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Сделан бэкап authorized_keys&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f: \u043a\u043e\u0433\u0434\u0430 \u0440\u043e\u0431\u043e\u0442\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043a\u043b\u044e\u0447\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;avtomatizacijakogda_roboty_sozdajut_kljuchi&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;23824-25275&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;osobennosti_platformwindows_macos_linux&quot;&gt;Особенности платформ: Windows, macOS, Linux&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
На Linux и macOS OpenSSH входит в базовую поставку. В Windows 10/11 OpenSSH тоже есть из коробки, но служба агента может быть отключена. В WSL удобно держать ключи внутри подсистемы Linux, чтобы не путаться с правами доступа.
&lt;/p&gt;

&lt;p&gt;
Современные IDE и Git-клиенты умеют работать с системным SSH-агентом, поэтому не нужно дублировать ключи в настройках приложений.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Windows OpenSSH: &lt;a href=&quot;https://learn.microsoft.com/windows-server/administration/openssh/openssh_overview&quot; class=&quot;urlextern&quot; title=&quot;https://learn.microsoft.com/windows-server/administration/openssh/openssh_overview&quot; rel=&quot;ugc nofollow&quot;&gt; официальная документация&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Проверьте настройки IDE — они часто используют системный SSH&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c: Windows, macOS, Linux&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;osobennosti_platformwindows_macos_linux&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;25276-26220&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;voprosy_kotorye_vse_zadajut&quot;&gt;Вопросы, которые все задают&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Можно ли использовать один ключ везде? Технически да, но лучше разделять по задачам. Потеря одного ключа не должна открывать доступ ко всему на свете.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Обязательна ли фраза-пароль? Очень желательна. Без неё украденный файл ключа равен полной компрометации. С агентом вводить пароль нужно только один раз за сессию.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Как понять, какой ключ сработал? Включите детальный вывод: ssh -v user@host. SSH покажет, какие ключи пробует и какой принял сервер.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Что делать с потерянным ключом? Считать его скомпрометированным, удалить из всех authorized_keys, создать новый и добавить заново.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Полезные ссылки для закладок
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://man.openbsd.org/ssh-keygen&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/ssh-keygen&quot; rel=&quot;ugc nofollow&quot;&gt; Мануал ssh-keygen&lt;/a&gt; — самый полный справочник&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://man.openbsd.org/ssh_config&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/ssh_config&quot; rel=&quot;ugc nofollow&quot;&gt; Настройки ssh_config&lt;/a&gt; — все опции клиента&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://man.openbsd.org/sshd&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/sshd&quot; rel=&quot;ugc nofollow&quot;&gt; Документация sshd&lt;/a&gt; — серверная часть&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://man.openbsd.org/sshd&quot; class=&quot;urlextern&quot; title=&quot;https://man.openbsd.org/sshd&quot; rel=&quot;ugc nofollow&quot;&gt; GitHub SSH&lt;/a&gt; — подключение к репозиториям&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://manpages.debian.org/ssh-copy-id&quot; class=&quot;urlextern&quot; title=&quot;https://manpages.debian.org/ssh-copy-id&quot; rel=&quot;ugc nofollow&quot;&gt; ssh-copy-id&lt;/a&gt; — копирование ключей на сервер&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043e\u043f\u0440\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u044e\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;voprosy_kotorye_vse_zadajut&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;26221-27936&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;vyvodyssh-kljuchi_kak_spasenie_ot_parolnogo_ada&quot;&gt;Выводы: SSH-ключи как спасение от парольного ада&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Утилита ssh-keygen решает весь цикл работы с ключами от создания до отзыва. ED25519 с разумными настройками защиты подходит для большинства задач, аппаратные FIDO2-ключи — для особо критичных доступов. Остальное — вопрос организации: понятные комментарии, структурированное хранение файлов, единообразная конфигурация.
&lt;/p&gt;

&lt;p&gt;
Один раз правильно настроив SSH-ключи, вы забудете о ежедневном вводе паролей к серверам и получите более высокую безопасность без постоянной головной боли. А если что-то пойдет не так, детальный вывод ssh -vvv и проверка прав доступа решают 99% проблем.
&lt;/p&gt;

&lt;p&gt;
И помните: лучше потратить час на правильную настройку SSH, чем потом полдня разбираться, почему «оно не работает», особенно когда вся команда ждет деплоя в продакшен.
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh?do=showtag&amp;amp;tag=ssh&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssh&quot; rel=&quot;tag&quot;&gt;ssh&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh-keygen?do=showtag&amp;amp;tag=ssh-keygen&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssh-keygen&quot; rel=&quot;tag&quot;&gt;ssh-keygen&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh-add?do=showtag&amp;amp;tag=ssh-add&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssh-add&quot; rel=&quot;tag&quot;&gt;ssh-add&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh-copy-id?do=showtag&amp;amp;tag=ssh-copy-id&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssh-copy-id&quot; rel=&quot;tag&quot;&gt;ssh-copy-id&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u0432\u043e\u0434\u044b: SSH-\u043a\u043b\u044e\u0447\u0438 \u043a\u0430\u043a \u0441\u043f\u0430\u0441\u0435\u043d\u0438\u0435 \u043e\u0442 \u043f\u0430\u0440\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vyvodyssh-kljuchi_kak_spasenie_ot_parolnogo_ada&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;27937-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 04 Oct 2025 13:09:32 +0000</pubDate>
        </item>
        <item>
            <title>SSH Hardening Guides</title>
            <link>https://wiki.rtzra.ru/software/ssh/ssh-hardening-guides</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ssh_hardening_guides&quot;&gt;SSH Hardening Guides&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Рекомендации по настройке максимально безопасных настроек для SSH (и клиента и сервера): &lt;a href=&quot;https://www.ssh-audit.com/hardening_guides.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.ssh-audit.com/hardening_guides.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.ssh-audit.com/hardening_guides.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Там же можно запустить аудит: &lt;a href=&quot;https://www.ssh-audit.com&quot; class=&quot;urlextern&quot; title=&quot;https://www.ssh-audit.com&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.ssh-audit.com&lt;/a&gt; и посмотреть насколько плохо обстоят дела.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSH Hardening Guides&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssh_hardening_guides&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-405&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;ubuntu_2204_lts_server&quot;&gt;Ubuntu 22.04 LTS Server&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Note: all commands below are to be executed as the root user.
&lt;/p&gt;

&lt;p&gt;
Re-generate the RSA and ED25519 keys
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rm /etc/ssh/ssh_host_*
ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N &amp;quot;&amp;quot;
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N &amp;quot;&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Remove small Diffie-Hellman moduli
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;awk &amp;#039;$5 &amp;gt;= 3071&amp;#039; /etc/ssh/moduli &amp;gt; /etc/ssh/moduli.safe
mv /etc/ssh/moduli.safe /etc/ssh/moduli&lt;/pre&gt;

&lt;p&gt;
Enable the RSA and ED25519 HostKey directives in the /etc/ssh/sshd_config file:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sed -i &amp;#039;s/^\#HostKey \/etc\/ssh\/ssh_host_\(rsa\|ed25519\)_key$/HostKey \/etc\/ssh\/ssh_host_\1_key/g&amp;#039; /etc/ssh/sshd_config&lt;/pre&gt;

&lt;p&gt;
Restrict supported key exchange, cipher, and MAC algorithms
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo -e &amp;quot;\n# Restrict key exchange, cipher, and MAC algorithms, as per sshaudit.com\n# hardening guide.\nKexAlgorithms sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,gss-curve25519-sha256-,diffie-hellman-group16-sha512,gss-group16-sha512-,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256\nCiphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com\nHostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com&amp;quot; &amp;gt; /etc/ssh/sshd_config.d/ssh-audit_hardening.conf&lt;/pre&gt;

&lt;p&gt;
Restart OpenSSH server
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service ssh restart&lt;/pre&gt;

&lt;p&gt;
Note: Because of a bug in OpenSSH, 2048-bit DH moduli will still be used in some limited circumstances. Only a maximum score of 95% is possible.
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh?do=showtag&amp;amp;tag=ssh&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssh&quot; rel=&quot;tag&quot;&gt;ssh&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/hardening?do=showtag&amp;amp;tag=hardening&quot; class=&quot;wikilink1&quot; title=&quot;tag:hardening&quot; rel=&quot;tag&quot;&gt;hardening&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/audit?do=showtag&amp;amp;tag=audit&quot; class=&quot;wikilink1&quot; title=&quot;tag:audit&quot; rel=&quot;tag&quot;&gt;audit&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ubuntu 22.04 LTS Server&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ubuntu_2204_lts_server&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;406-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 02 Nov 2023 14:11:53 +0000</pubDate>
        </item>
        <item>
            <title>Создаем ssh-ключ для аутентификации</title>
            <link>https://wiki.rtzra.ru/software/ssh/ssh-keygen</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;sozdaem_ssh-kljuch_dlja_autentifikacii&quot;&gt;Создаем ssh-ключ для аутентификации&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c ssh-\u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sozdaem_ssh-kljuch_dlja_autentifikacii&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-79&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;kljuchi_rsa&quot;&gt;Ключи RSA&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Старый формат, самые часто используемые ключи. Плюсы: работают везде, на любом железе и операционках. Минусы: считается что ключи менее 2048 сейчас использовать уже небезопасно.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -t rsa -b 4096 -C &amp;quot;john@example.com&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043b\u044e\u0447\u0438 RSA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kljuchi_rsa&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;80-493&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;kljuchi_ed25519&quot;&gt;Ключи Ed25519&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -o -a 100 -t ed25519 -C &amp;quot;john@example.com&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Ключи:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -o использоваеть новый формат хранения ключей, обязателен для ed25519&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -a 100 используем 100 раундов для генерации ключа - чем больше тем безопаснее, но и медленнее&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -t ed25519 на основе эллиптических кривых Ed25519&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -С комментарий, чтобы понимать в дальнейшем для кого был создан ключ&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Для большей безопасности и скорости работы в настоящий момент рекомендуется использовать новый формат ключей Ed25519. Открытый ключ Ed25519 компактен, содержит всего 68 символов по сравнению с RSA 3072, который имеет 544 символа. Также при использовании Ed25519 можно быстро выполнить проверку подписи.
&lt;/p&gt;

&lt;p&gt;
Проверка типа ключа и размер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -l -f id_ed25519&lt;/pre&gt;

&lt;p&gt;
Копирование ключа на другой хост:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-copy-id -i $HOME/.ssh/id_ed25519.pub user@ubuntu-server&lt;/pre&gt;

&lt;p&gt;
Подключаемся по ключу:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh user@ubuntu-server&lt;/pre&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh?do=showtag&amp;amp;tag=ssh&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:ssh&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; ssh&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh-keygen?do=showtag&amp;amp;tag=ssh-keygen&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:ssh-keygen&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; ssh-keygen&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh-copy-id?do=showtag&amp;amp;tag=ssh-copy-id&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:ssh-copy-id&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; ssh-copy-id&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ssh-copy-id?do=showtag&amp;amp;tag=ssh-copy-id&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:ssh-copy-id&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; ssh-copy-id&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/sozdanie_kljucha?do=showtag&amp;amp;tag=%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BB%D1%8E%D1%87%D0%B0&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:sozdanie_kljucha&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; создание ключа&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043b\u044e\u0447\u0438 Ed25519&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kljuchi_ed25519&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;494-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 25 Oct 2020 17:38:15 +0000</pubDate>
        </item>
        <item>
            <title>SSH и все-все-все</title>
            <link>https://wiki.rtzra.ru/software/ssh/tips-and-tricks</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ssh_i_vse-vse-vse&quot;&gt;SSH и все-все-все&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSH \u0438 \u0432\u0441\u0435-\u0432\u0441\u0435-\u0432\u0441\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssh_i_vse-vse-vse&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-43&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;reshaem_problemy_ploxogo_soedinenija&quot;&gt;Решаем проблемы плохого соединения&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если плохая связь у сервера, прописываем в /etc/ssh/sshd_config
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; ClientAliveInterval 2&lt;/pre&gt;

&lt;p&gt;
а если проблемный канал у клиента, то прописываем на этом самом клиенте в /etc/ssh/ssh_config
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; ServerAliveInterval 2&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0430\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;reshaem_problemy_ploxogo_soedinenija&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;44-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 09 May 2017 15:34:00 +0000</pubDate>
        </item>
    </channel>
</rss>
