<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://syswiki.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Editor</id>
	<title>SysWiki - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://syswiki.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Editor"/>
	<link rel="alternate" type="text/html" href="https://syswiki.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Editor"/>
	<updated>2026-09-08T07:06:37Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://syswiki.ru/index.php?title=FAQ/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_MariaDB&amp;diff=117</id>
		<title>FAQ/Резервное копирование всех баз данных для MariaDB</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=FAQ/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_MariaDB&amp;diff=117"/>
		<updated>2024-03-19T10:09:21Z</updated>

		<summary type="html">&lt;p&gt;Editor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для копирования всех баз в файл с именем, зависящем от текущей даты и времени (от пользователя root, без указания пароля): &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;mysqldump --routines --single-transaction --all-databases | gzip &amp;gt; db_$(date +%Y%m%d-%H%M%S).sql.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Категория:FAQ]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=FAQ/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_MariaDB&amp;diff=116</id>
		<title>FAQ/Резервное копирование всех баз данных для MariaDB</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=FAQ/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_MariaDB&amp;diff=116"/>
		<updated>2024-03-19T10:07:43Z</updated>

		<summary type="html">&lt;p&gt;Editor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для копирования всех баз в файл с именем, зависящем от текущей даты и времени (от пользователя root, без указания пароля): &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;mysqldump --routines --single-transaction --all-databases | gzip &amp;gt; db_$(date +%Y%m%d-%H%M%S).sql.gz&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=FAQ/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_MariaDB&amp;diff=115</id>
		<title>FAQ/Резервное копирование всех баз данных для MariaDB</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=FAQ/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_MariaDB&amp;diff=115"/>
		<updated>2024-03-19T10:05:08Z</updated>

		<summary type="html">&lt;p&gt;Editor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для копирования всех баз в файл с именем, зависящем от текущей даты и времени: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;mysqldump -u user -ppassword --routines --single-transaction --all-databases | gzip &amp;gt; db_$(date +%Y%m%d-%H%M%S).sql.gz&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=FAQ/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_MariaDB&amp;diff=114</id>
		<title>FAQ/Резервное копирование всех баз данных для MariaDB</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=FAQ/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D1%81%D0%B5%D1%85_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B4%D0%BB%D1%8F_MariaDB&amp;diff=114"/>
		<updated>2024-03-19T10:04:42Z</updated>

		<summary type="html">&lt;p&gt;Editor: Новая страница: «Для копирования всех баз в файл с именем, зависящем от текущей даты и времени:  &amp;lt;code&amp;gt;mysqldump -u user -ppassword --routines --single-transaction --all-databases | gzip &amp;gt; db_$(date +%Y%m%d-%H%M%S).sql.gz&amp;lt;/code&amp;gt;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для копирования всех баз в файл с именем, зависящем от текущей даты и времени:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mysqldump -u user -ppassword --routines --single-transaction --all-databases | gzip &amp;gt; db_$(date +%Y%m%d-%H%M%S).sql.gz&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=111</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=111"/>
		<updated>2024-03-01T22:05:55Z</updated>

		<summary type="html">&lt;p&gt;Editor: доработка раздела про ssh-keygen и создание раздела про вопросы безопасности&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
  apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения расшифрованных ключей в памяти&lt;br /&gt;
* ssh-add — утилита для добавления ключа для использования в ssh-agent&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
Обычный пример использования программы ssh:&lt;br /&gt;
&lt;br /&gt;
  ssh user@example.com&lt;br /&gt;
&lt;br /&gt;
Данный пример показывает обычный сценарий работы, подключение к серверу example.com от имени пользователя user.&lt;br /&gt;
&lt;br /&gt;
При первом подключении приложение сообщит информацию об отпечатке ключа сервера и предложит подтвердить подключение (если вы заботитесь о безопасности, у вас должен быть отпечаток ключа сервера, его можно получить от администратора, также, к примеру, многие хостинг-провайдеры, предоставляющие доступ по ssh, публикуют информацию об отпечатках используемых ключей на своих сайтах).&lt;br /&gt;
&lt;br /&gt;
Далее приложение ssh попытается осуществить аутентификацию. Обычный порядок действий такой: сначала будет осуществлена попытка использовать ключи, которые предоставит ssh-agent и ключи, находящиеся по стандартным именам (например, ~/.ssh/id_ed25519, ~/.ssh/id_rsa), в случае, если ни один ключ не будет принят сервером, то будет выдан запрос на ввод пароля.&lt;br /&gt;
&lt;br /&gt;
Вы можете указать ключ, который ssh должен использовать, при помощи опции -i:&lt;br /&gt;
&lt;br /&gt;
 ssh -i ~/.ssh/id_ed25519 user@example.com&lt;br /&gt;
&lt;br /&gt;
Это может быть полезно в том случае, если ключ находится по нестандартному пути, а также в ситуации, когда настройки сервера требуют прерывать соединение при нескольких неудачных попытках соединения, и ssh, перебирая ключи, не успевает дойти до правильного. В таких ситуациях выводится сообщение «Too many authentication failures», и решить проблему можно указав нужный ключ при помощи опции -i.&lt;br /&gt;
&lt;br /&gt;
Такая же ошибка может возникнуть в ситуации, когда у вас нет ключа, подходящего для сервера, вам нужно зайти туда при помощи пароля, но ssh, перебирая имеющиеся ключи, просто не даёт дойти до парольной аутентификации, поскольку сервер отключается раньше, и вы получаете сообщение об ошибке «Too many authentication failures». Чтобы указать ssh, что при данном подключении не нужно использовать ключи, что требуется использовать только аутентификацию по паролю, можно использовать следующий вариант:&lt;br /&gt;
&lt;br /&gt;
  ssh -o PreferredAuthentications=password user@example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PreferredAuthentications&amp;lt;/code&amp;gt; — это имя параметра из конфигурационного файла ssh, определяющего предпочтительные методы аутентификации, а при помощи опции командной строки -o можно устанавливать такие параметры для отдельных соединений, не меняя файл настроек, в данном случае можно установить его в &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;, что укажет ssh, что нужно использовать только аутентификацию по паролю.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа. В данном примере это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины. Рядом с файлом секретного ключа будет создан файл с публичным ключом, отличающийся от него расширением .pub.&lt;br /&gt;
&lt;br /&gt;
Содержимое файла публичного ключа нужно добавить в файл authorized_keys в подкаталоге .ssh домашнего каталога пользователя, от имени которого вы должны входить в систему. Этот файл содержит строки вида:&lt;br /&gt;
  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDFsStlpvJs9a+/R+B5YKPkTm0KmTOJ1YSBjne+iO1NQ My personal key&lt;br /&gt;
Сначала идёт тип ключа, далее идёт открытый ключ и, далее, комментарий. Также эти строки могут содержать дополнительные опции подключения.&lt;br /&gt;
&lt;br /&gt;
Также утилита ssh-keygen позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;br /&gt;
&lt;br /&gt;
=== ssh-agent и ssh-add ===&lt;br /&gt;
При аутентификации по ключу используется криптографическая пара ключей, открытый ключ известен серверу, а закрытый находится на стороне пользователя, подключающегося к серверу. Закрытый ключ, в целях безопасности, рекомендуется защищать паролем, но это означает, что, без использования дополнительных средств, пользователю придётся вводить пароль каждый раз, когда он будет подключаться к серверу. Это не очень удобно, при этом убирать пароль не рекомендуется из соображений безопасности. При работе в Linux в графическом интерфейсе пароль может потребоваться вводить только один раз (до выхода пользователя из системы), то есть, задача обычно решается автоматически, без дополнительной настройки системы. При работе из консоли соответствующий результат можно получить при помощи пары утилит: ssh-agent и ssh-add. Сначала запускается ssh-agent, этот процесс будет хранить информацию о ключах, и, далее, при помощи ssh-add туда передаётся информация о ключе (на этом этапе нужно будет ввести пароль от него), и, далее, ssh сможет многократно использовать этот ключ без дополнительного запроса пароля.&lt;br /&gt;
&lt;br /&gt;
==== ssh-agent ====&lt;br /&gt;
Утилита ssh-agent служит для сохранения открытого ключа в расшифрованном виде между подключениями.  Данное приложение запускается не совсем обычным образом (в примере предполагается использование командной оболочки bash):&lt;br /&gt;
&lt;br /&gt;
  eval $(ssh-agent -s)&lt;br /&gt;
&lt;br /&gt;
Смысл этой конструкции в следующем. При вызове ssh-agent -s программа запускает фоновый процесс для работы с ключами, информация для подключения к нему выводится в виде текста, содержащего команды оболочки, устанавливающие должным образом значения нескольких переменных, например:&lt;br /&gt;
&lt;br /&gt;
  SSH_AUTH_SOCK=/tmp/ssh-43fFGNj1mMxC/agent.284145; export SSH_AUTH_SOCK;&lt;br /&gt;
  SSH_AGENT_PID=284146; export SSH_AGENT_PID;&lt;br /&gt;
  echo Agent pid 284146;&lt;br /&gt;
&lt;br /&gt;
А при помощи конструкции eval $(...) полученный код выполняется в контексте текущей командной оболочки. Конечным результатом является установка в текущем сеансе переменных SSH_AGENT_PID и SSH_AUTH_SOCK, содержащих данные для подключения к ssh-agent. Эти данные будут нужны утилите ssh-add.&lt;br /&gt;
&lt;br /&gt;
==== ssh-add ====&lt;br /&gt;
Утилита ssh-add добавляет данные заданного ключа в фоновый процесс ssh-agent (который должен быть запущен ранее). Утилита обычно используется в таком формате:&lt;br /&gt;
&lt;br /&gt;
  ssh-add ~/.ssh/id_ed25519&lt;br /&gt;
&lt;br /&gt;
Команда запросит пароль к заданному ключу. После чего ключ можно будет использовать без ввода пароля (до завершения процесса ssh-agent или удаления из него информации о ключе).&lt;br /&gt;
&lt;br /&gt;
=== scp ===&lt;br /&gt;
Утилита scp служит для копирования файлов по защищённому протоколу SCP между системами. Пример использования:&lt;br /&gt;
&lt;br /&gt;
  scp -p file.txt user@example.com:/home/user/tmp&lt;br /&gt;
&lt;br /&gt;
В данном примере копируется файл file.txt на сервер example.com, в каталог /home/user/tmp, подключаясь к серверу под именем пользователя user. Ключ -p означает, что у скопированных файлов время модификации и доступа будут совпадать с исходными (иначе они будут соответствовать времени копирования).&lt;br /&gt;
&lt;br /&gt;
  scp -pr directory user@example.com:/home/user/tmp&lt;br /&gt;
&lt;br /&gt;
В данном примере копируется каталог directory со всем его содержимым (за что отвечает ключ -r, означающий рекурсивное копирование).&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что результат копирования будет разный в зависимости от того, существует последний элемент пути назначения или нет. Допустим, в последнем примере в каталоге directory находится файл file.txt. И, если бы на сервере в каталоге /home/user не было бы каталога tmp, то он был бы создан, а содержимое directory было бы скопировано в него, то есть, на сервере появился бы файл /home/user/tmp/file.txt, или это можно сформулировать так, что каталог directory был бы скопирован на сервер под новым именем tmp. А если бы каталог tmp там уже существовал, то внутрь него был бы скопирован каталог directory вместе со всем содержимым, то есть, появился бы файл /home/user/tmp/directory/file.txt. &lt;br /&gt;
&lt;br /&gt;
=== sftp ===&lt;br /&gt;
Утилита sftp предназначена для копирования файлов между системами по защищённому протоколу. Работа с нею осуществляется иначе, чем с утилитой scp — пользователь подключается к удалённому серверу, может просматривать содержимое его каталогов и вводить команды для копирования файлов на сервер или с него.&lt;br /&gt;
&lt;br /&gt;
== Основные вопросы безопасности при использовании OpenSSH ==&lt;br /&gt;
OpenSSH является фактическим стандартном для предоставления удалённого доступа к командной оболочке в UNIX-подобных операционных системах, много лет обеспечивая защиту множества систем во всём мире. При этом неправильное использование даже надёжного криптографического программного обеспечения может предоставить злоумышленникам возможность взломать систему. В случае с OpenSSH пользователь и администратор системы могут совершить следующие ошибки:&lt;br /&gt;
&lt;br /&gt;
* не проверить отпечаток ключа сервера (это создаст условия для атаки типа [[MITM]]);&lt;br /&gt;
* не проверить подлинность открытого ключа, отправленного, в частности, по электронной почте (злоумышленник может отправить свой ключ под видом ключа легального пользователя);&lt;br /&gt;
* отправить закрытый ключ вместо открытого (администратор системы, которому по ошибке переслали закрытый ключ, может получить техническую возможность подключения к другим системам от имени данного пользователя);&lt;br /&gt;
* не использовать пароль для закрытого ключа (взлом или заражение системы могут привести к утечке ключа и заражению множества других систем);&lt;br /&gt;
* использовать ключ устаревшего типа или недостаточной длины (в OpenSSH периодически добавляется поддержка ключей новых типов, при этом использование старых по умолчанию отключается);&lt;br /&gt;
* использовать слабый пароль (если вы посмотрите логи системы, подключённой к Интернет, то скорее всего увидите там множественные попытки подбора пароля для SSH).&lt;br /&gt;
&lt;br /&gt;
Для уменьшения вероятности взлома часто рекомендуют изменить настройки сервера SSH для работы на нестандартном порту, однако само по себе это малоэффективно, поскольку порт будет найден при сканировании портов системы, но это может дать дополнительную защиту в сочетании с автоматической блокировкой адресов, с которых осуществляется попытка соединения на стандартный порт сервера SSH.&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=110</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=110"/>
		<updated>2024-02-24T15:23:43Z</updated>

		<summary type="html">&lt;p&gt;Editor: уточнены данные про scp и добавлено очень краткое описание работы с sftp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
  apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения расшифрованных ключей в памяти&lt;br /&gt;
* ssh-add — утилита для добавления ключа для использования в ssh-agent&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
Обычный пример использования программы ssh:&lt;br /&gt;
&lt;br /&gt;
  ssh user@example.com&lt;br /&gt;
&lt;br /&gt;
Данный пример показывает обычный сценарий работы, подключение к серверу example.com от имени пользователя user.&lt;br /&gt;
&lt;br /&gt;
При первом подключении приложение сообщит информацию об отпечатке ключа сервера и предложит подтвердить подключение (если вы заботитесь о безопасности, у вас должен быть отпечаток ключа сервера, его можно получить от администратора, также, к примеру, многие хостинг-провайдеры, предоставляющие доступ по ssh, публикуют информацию об отпечатках используемых ключей на своих сайтах).&lt;br /&gt;
&lt;br /&gt;
Далее приложение ssh попытается осуществить аутентификацию. Обычный порядок действий такой: сначала будет осуществлена попытка использовать ключи, которые предоставит ssh-agent и ключи, находящиеся по стандартным именам (например, ~/.ssh/id_ed25519, ~/.ssh/id_rsa), в случае, если ни один ключ не будет принят сервером, то будет выдан запрос на ввод пароля.&lt;br /&gt;
&lt;br /&gt;
Вы можете указать ключ, который ssh должен использовать, при помощи опции -i:&lt;br /&gt;
&lt;br /&gt;
 ssh -i ~/.ssh/id_ed25519 user@example.com&lt;br /&gt;
&lt;br /&gt;
Это может быть полезно в том случае, если ключ находится по нестандартному пути, а также в ситуации, когда настройки сервера требуют прерывать соединение при нескольких неудачных попытках соединения, и ssh, перебирая ключи, не успевает дойти до правильного. В таких ситуациях выводится сообщение «Too many authentication failures», и решить проблему можно указав нужный ключ при помощи опции -i.&lt;br /&gt;
&lt;br /&gt;
Такая же ошибка может возникнуть в ситуации, когда у вас нет ключа, подходящего для сервера, вам нужно зайти туда при помощи пароля, но ssh, перебирая имеющиеся ключи, просто не даёт дойти до парольной аутентификации, поскольку сервер отключается раньше, и вы получаете сообщение об ошибке «Too many authentication failures». Чтобы указать ssh, что при данном подключении не нужно использовать ключи, что требуется использовать только аутентификацию по паролю, можно использовать следующий вариант:&lt;br /&gt;
&lt;br /&gt;
  ssh -o PreferredAuthentications=password user@example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PreferredAuthentications&amp;lt;/code&amp;gt; — это имя параметра из конфигурационного файла ssh, определяющего предпочтительные методы аутентификации, а при помощи опции командной строки -o можно устанавливать такие параметры для отдельных соединений, не меняя файл настроек, в данном случае можно установить его в &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;, что укажет ssh, что нужно использовать только аутентификацию по паролю.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.&lt;br /&gt;
&lt;br /&gt;
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;br /&gt;
&lt;br /&gt;
=== ssh-agent и ssh-add ===&lt;br /&gt;
При аутентификации по ключу используется криптографическая пара ключей, открытый ключ известен серверу, а закрытый находится на стороне пользователя, подключающегося к серверу. Закрытый ключ, в целях безопасности, рекомендуется защищать паролем, но это означает, что, без использования дополнительных средств, пользователю придётся вводить пароль каждый раз, когда он будет подключаться к серверу. Это не очень удобно, при этом убирать пароль не рекомендуется из соображений безопасности. При работе в Linux в графическом интерфейсе пароль может потребоваться вводить только один раз (до выхода пользователя из системы), то есть, задача обычно решается автоматически, без дополнительной настройки системы. При работе из консоли соответствующий результат можно получить при помощи пары утилит: ssh-agent и ssh-add. Сначала запускается ssh-agent, этот процесс будет хранить информацию о ключах, и, далее, при помощи ssh-add туда передаётся информация о ключе (на этом этапе нужно будет ввести пароль от него), и, далее, ssh сможет многократно использовать этот ключ без дополнительного запроса пароля.&lt;br /&gt;
&lt;br /&gt;
==== ssh-agent ====&lt;br /&gt;
Утилита ssh-agent служит для сохранения открытого ключа в расшифрованном виде между подключениями.  Данное приложение запускается не совсем обычным образом (в примере предполагается использование командной оболочки bash):&lt;br /&gt;
&lt;br /&gt;
  eval $(ssh-agent -s)&lt;br /&gt;
&lt;br /&gt;
Смысл этой конструкции в следующем. При вызове ssh-agent -s программа запускает фоновый процесс для работы с ключами, информация для подключения к нему выводится в виде текста, содержащего команды оболочки, устанавливающие должным образом значения нескольких переменных, например:&lt;br /&gt;
&lt;br /&gt;
  SSH_AUTH_SOCK=/tmp/ssh-43fFGNj1mMxC/agent.284145; export SSH_AUTH_SOCK;&lt;br /&gt;
  SSH_AGENT_PID=284146; export SSH_AGENT_PID;&lt;br /&gt;
  echo Agent pid 284146;&lt;br /&gt;
&lt;br /&gt;
А при помощи конструкции eval $(...) полученный код выполняется в контексте текущей командной оболочки. Конечным результатом является установка в текущем сеансе переменных SSH_AGENT_PID и SSH_AUTH_SOCK, содержащих данные для подключения к ssh-agent. Эти данные будут нужны утилите ssh-add.&lt;br /&gt;
&lt;br /&gt;
==== ssh-add ====&lt;br /&gt;
Утилита ssh-add добавляет данные заданного ключа в фоновый процесс ssh-agent (который должен быть запущен ранее). Утилита обычно используется в таком формате:&lt;br /&gt;
&lt;br /&gt;
  ssh-add ~/.ssh/id_ed25519&lt;br /&gt;
&lt;br /&gt;
Команда запросит пароль к заданному ключу. После чего ключ можно будет использовать без ввода пароля (до завершения процесса ssh-agent или удаления из него информации о ключе).&lt;br /&gt;
&lt;br /&gt;
=== scp ===&lt;br /&gt;
Утилита scp служит для копирования файлов по защищённому протоколу SCP между системами. Пример использования:&lt;br /&gt;
&lt;br /&gt;
  scp -p file.txt user@example.com:/home/user/tmp&lt;br /&gt;
&lt;br /&gt;
В данном примере копируется файл file.txt на сервер example.com, в каталог /home/user/tmp, подключаясь к серверу под именем пользователя user. Ключ -p означает, что у скопированных файлов время модификации и доступа будут совпадать с исходными (иначе они будут соответствовать времени копирования).&lt;br /&gt;
&lt;br /&gt;
  scp -pr directory user@example.com:/home/user/tmp&lt;br /&gt;
&lt;br /&gt;
В данном примере копируется каталог directory со всем его содержимым (за что отвечает ключ -r, означающий рекурсивное копирование).&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что результат копирования будет разный в зависимости от того, существует последний элемент пути назначения или нет. Допустим, в последнем примере в каталоге directory находится файл file.txt. И, если бы на сервере в каталоге /home/user не было бы каталога tmp, то он был бы создан, а содержимое directory было бы скопировано в него, то есть, на сервере появился бы файл /home/user/tmp/file.txt, или это можно сформулировать так, что каталог directory был бы скопирован на сервер под новым именем tmp. А если бы каталог tmp там уже существовал, то внутрь него был бы скопирован каталог directory вместе со всем содержимым, то есть, появился бы файл /home/user/tmp/directory/file.txt. &lt;br /&gt;
&lt;br /&gt;
=== sftp ===&lt;br /&gt;
Утилита sftp предназначена для копирования файлов между системами по защищённому протоколу. Работа с нею осуществляется иначе, чем с утилитой scp — пользователь подключается к удалённому серверу, может просматривать содержимое его каталогов и вводить команды для копирования файлов на сервер или с него.&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=109</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=109"/>
		<updated>2024-02-24T15:11:41Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлено краткое описание работы с scp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
  apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения расшифрованных ключей в памяти&lt;br /&gt;
* ssh-add — утилита для добавления ключа для использования в ssh-agent&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
Обычный пример использования программы ssh:&lt;br /&gt;
&lt;br /&gt;
  ssh user@example.com&lt;br /&gt;
&lt;br /&gt;
Данный пример показывает обычный сценарий работы, подключение к серверу example.com от имени пользователя user.&lt;br /&gt;
&lt;br /&gt;
При первом подключении приложение сообщит информацию об отпечатке ключа сервера и предложит подтвердить подключение (если вы заботитесь о безопасности, у вас должен быть отпечаток ключа сервера, его можно получить от администратора, также, к примеру, многие хостинг-провайдеры, предоставляющие доступ по ssh, публикуют информацию об отпечатках используемых ключей на своих сайтах).&lt;br /&gt;
&lt;br /&gt;
Далее приложение ssh попытается осуществить аутентификацию. Обычный порядок действий такой: сначала будет осуществлена попытка использовать ключи, которые предоставит ssh-agent и ключи, находящиеся по стандартным именам (например, ~/.ssh/id_ed25519, ~/.ssh/id_rsa), в случае, если ни один ключ не будет принят сервером, то будет выдан запрос на ввод пароля.&lt;br /&gt;
&lt;br /&gt;
Вы можете указать ключ, который ssh должен использовать, при помощи опции -i:&lt;br /&gt;
&lt;br /&gt;
 ssh -i ~/.ssh/id_ed25519 user@example.com&lt;br /&gt;
&lt;br /&gt;
Это может быть полезно в том случае, если ключ находится по нестандартному пути, а также в ситуации, когда настройки сервера требуют прерывать соединение при нескольких неудачных попытках соединения, и ssh, перебирая ключи, не успевает дойти до правильного. В таких ситуациях выводится сообщение «Too many authentication failures», и решить проблему можно указав нужный ключ при помощи опции -i.&lt;br /&gt;
&lt;br /&gt;
Такая же ошибка может возникнуть в ситуации, когда у вас нет ключа, подходящего для сервера, вам нужно зайти туда при помощи пароля, но ssh, перебирая имеющиеся ключи, просто не даёт дойти до парольной аутентификации, поскольку сервер отключается раньше, и вы получаете сообщение об ошибке «Too many authentication failures». Чтобы указать ssh, что при данном подключении не нужно использовать ключи, что требуется использовать только аутентификацию по паролю, можно использовать следующий вариант:&lt;br /&gt;
&lt;br /&gt;
  ssh -o PreferredAuthentications=password user@example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PreferredAuthentications&amp;lt;/code&amp;gt; — это имя параметра из конфигурационного файла ssh, определяющего предпочтительные методы аутентификации, а при помощи опции командной строки -o можно устанавливать такие параметры для отдельных соединений, не меняя файл настроек, в данном случае можно установить его в &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;, что укажет ssh, что нужно использовать только аутентификацию по паролю.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.&lt;br /&gt;
&lt;br /&gt;
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;br /&gt;
&lt;br /&gt;
=== ssh-agent и ssh-add ===&lt;br /&gt;
При аутентификации по ключу используется криптографическая пара ключей, открытый ключ известен серверу, а закрытый находится на стороне пользователя, подключающегося к серверу. Закрытый ключ, в целях безопасности, рекомендуется защищать паролем, но это означает, что, без использования дополнительных средств, пользователю придётся вводить пароль каждый раз, когда он будет подключаться к серверу. Это не очень удобно, при этом убирать пароль не рекомендуется из соображений безопасности. При работе в Linux в графическом интерфейсе пароль может потребоваться вводить только один раз (до выхода пользователя из системы), то есть, задача обычно решается автоматически, без дополнительной настройки системы. При работе из консоли соответствующий результат можно получить при помощи пары утилит: ssh-agent и ssh-add. Сначала запускается ssh-agent, этот процесс будет хранить информацию о ключах, и, далее, при помощи ssh-add туда передаётся информация о ключе (на этом этапе нужно будет ввести пароль от него), и, далее, ssh сможет многократно использовать этот ключ без дополнительного запроса пароля.&lt;br /&gt;
&lt;br /&gt;
==== ssh-agent ====&lt;br /&gt;
Утилита ssh-agent служит для сохранения открытого ключа в расшифрованном виде между подключениями.  Данное приложение запускается не совсем обычным образом (в примере предполагается использование командной оболочки bash):&lt;br /&gt;
&lt;br /&gt;
  eval $(ssh-agent -s)&lt;br /&gt;
&lt;br /&gt;
Смысл этой конструкции в следующем. При вызове ssh-agent -s программа запускает фоновый процесс для работы с ключами, информация для подключения к нему выводится в виде текста, содержащего команды оболочки, устанавливающие должным образом значения нескольких переменных, например:&lt;br /&gt;
&lt;br /&gt;
  SSH_AUTH_SOCK=/tmp/ssh-43fFGNj1mMxC/agent.284145; export SSH_AUTH_SOCK;&lt;br /&gt;
  SSH_AGENT_PID=284146; export SSH_AGENT_PID;&lt;br /&gt;
  echo Agent pid 284146;&lt;br /&gt;
&lt;br /&gt;
А при помощи конструкции eval $(...) полученный код выполняется в контексте текущей командной оболочки. Конечным результатом является установка в текущем сеансе переменных SSH_AGENT_PID и SSH_AUTH_SOCK, содержащих данные для подключения к ssh-agent. Эти данные будут нужны утилите ssh-add.&lt;br /&gt;
&lt;br /&gt;
==== ssh-add ====&lt;br /&gt;
Утилита ssh-add добавляет данные заданного ключа в фоновый процесс ssh-agent (который должен быть запущен ранее). Утилита обычно используется в таком формате:&lt;br /&gt;
&lt;br /&gt;
  ssh-add ~/.ssh/id_ed25519&lt;br /&gt;
&lt;br /&gt;
Команда запросит пароль к заданному ключу. После чего ключ можно будет использовать без ввода пароля (до завершения процесса ssh-agent или удаления из него информации о ключе).&lt;br /&gt;
&lt;br /&gt;
=== scp ===&lt;br /&gt;
Утилита scp служит для копирования файлов по защищённому протоколу SCP между системами. Пример использования:&lt;br /&gt;
&lt;br /&gt;
  scp -p file.txt user@example.com:/home/user/tmp&lt;br /&gt;
&lt;br /&gt;
В данном примере копируется файл file.txt на сервер example.com, в каталог /home/user/tmp, подключаясь к серверу под именем пользователя user. Ключ -p означает, что у скопированных файлов время модификации и доступа будут совпадать с исходными (иначе они будут соответствовать времени копирования).&lt;br /&gt;
&lt;br /&gt;
  scp -pr directory user@example.com:/home/user/tmp&lt;br /&gt;
&lt;br /&gt;
В данном примере копируется каталог directory со всем его содержимым (за что отвечает ключ -r, означающий рекурсивное копирование).&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что результат копирования будет разный в зависимости от того, существует последний элемент пути назначения или нет. Допустим, во втором примере, в каталоге directory находится файл file.txt. И, если бы на сервере в каталоге /home/user не было бы каталога tmp, то он был бы создан, а содержимое directory было бы скопировано в него, то есть, на сервере появился бы файл /home/user/tmp/file.txt. А если бы каталог tmp там существовал, то внутрь него был бы скопирован каталог directory вместе со всем содержимым, то есть, появился бы файл /home/user/tmp/directory/file.txt.&lt;br /&gt;
&lt;br /&gt;
=== sftp ===&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=108</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=108"/>
		<updated>2024-02-24T14:38:34Z</updated>

		<summary type="html">&lt;p&gt;Editor: /* ssh-agent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
  apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения расшифрованных ключей в памяти&lt;br /&gt;
* ssh-add — утилита для добавления ключа для использования в ssh-agent&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
Обычный пример использования программы ssh:&lt;br /&gt;
&lt;br /&gt;
  ssh user@example.com&lt;br /&gt;
&lt;br /&gt;
Данный пример показывает обычный сценарий работы, подключение к серверу example.com от имени пользователя user.&lt;br /&gt;
&lt;br /&gt;
При первом подключении приложение сообщит информацию об отпечатке ключа сервера и предложит подтвердить подключение (если вы заботитесь о безопасности, у вас должен быть отпечаток ключа сервера, его можно получить от администратора, также, к примеру, многие хостинг-провайдеры, предоставляющие доступ по ssh, публикуют информацию об отпечатках используемых ключей на своих сайтах).&lt;br /&gt;
&lt;br /&gt;
Далее приложение ssh попытается осуществить аутентификацию. Обычный порядок действий такой: сначала будет осуществлена попытка использовать ключи, которые предоставит ssh-agent и ключи, находящиеся по стандартным именам (например, ~/.ssh/id_ed25519, ~/.ssh/id_rsa), в случае, если ни один ключ не будет принят сервером, то будет выдан запрос на ввод пароля.&lt;br /&gt;
&lt;br /&gt;
Вы можете указать ключ, который ssh должен использовать, при помощи опции -i:&lt;br /&gt;
&lt;br /&gt;
 ssh -i ~/.ssh/id_ed25519 user@example.com&lt;br /&gt;
&lt;br /&gt;
Это может быть полезно в том случае, если ключ находится по нестандартному пути, а также в ситуации, когда настройки сервера требуют прерывать соединение при нескольких неудачных попытках соединения, и ssh, перебирая ключи, не успевает дойти до правильного. В таких ситуациях выводится сообщение «Too many authentication failures», и решить проблему можно указав нужный ключ при помощи опции -i.&lt;br /&gt;
&lt;br /&gt;
Такая же ошибка может возникнуть в ситуации, когда у вас нет ключа, подходящего для сервера, вам нужно зайти туда при помощи пароля, но ssh, перебирая имеющиеся ключи, просто не даёт дойти до парольной аутентификации, поскольку сервер отключается раньше, и вы получаете сообщение об ошибке «Too many authentication failures». Чтобы указать ssh, что при данном подключении не нужно использовать ключи, что требуется использовать только аутентификацию по паролю, можно использовать следующий вариант:&lt;br /&gt;
&lt;br /&gt;
  ssh -o PreferredAuthentications=password user@example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PreferredAuthentications&amp;lt;/code&amp;gt; — это имя параметра из конфигурационного файла ssh, определяющего предпочтительные методы аутентификации, а при помощи опции командной строки -o можно устанавливать такие параметры для отдельных соединений, не меняя файл настроек, в данном случае можно установить его в &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;, что укажет ssh, что нужно использовать только аутентификацию по паролю.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.&lt;br /&gt;
&lt;br /&gt;
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;br /&gt;
&lt;br /&gt;
=== ssh-agent и ssh-add ===&lt;br /&gt;
При аутентификации по ключу используется криптографическая пара ключей, открытый ключ известен серверу, а закрытый находится на стороне пользователя, подключающегося к серверу. Закрытый ключ, в целях безопасности, рекомендуется защищать паролем, но это означает, что, без использования дополнительных средств, пользователю придётся вводить пароль каждый раз, когда он будет подключаться к серверу. Это не очень удобно, при этом убирать пароль не рекомендуется из соображений безопасности. При работе в Linux в графическом интерфейсе пароль может потребоваться вводить только один раз (до выхода пользователя из системы), то есть, задача обычно решается автоматически, без дополнительной настройки системы. При работе из консоли соответствующий результат можно получить при помощи пары утилит: ssh-agent и ssh-add. Сначала запускается ssh-agent, этот процесс будет хранить информацию о ключах, и, далее, при помощи ssh-add туда передаётся информация о ключе (на этом этапе нужно будет ввести пароль от него), и, далее, ssh сможет многократно использовать этот ключ без дополнительного запроса пароля.&lt;br /&gt;
&lt;br /&gt;
==== ssh-agent ====&lt;br /&gt;
Утилита ssh-agent служит для сохранения открытого ключа в расшифрованном виде между подключениями.  Данное приложение запускается не совсем обычным образом (в примере предполагается использование командной оболочки bash):&lt;br /&gt;
&lt;br /&gt;
  eval $(ssh-agent -s)&lt;br /&gt;
&lt;br /&gt;
Смысл этой конструкции в следующем. При вызове ssh-agent -s программа запускает фоновый процесс для работы с ключами, информация для подключения к нему выводится в виде текста, содержащего команды оболочки, устанавливающие должным образом значения нескольких переменных, например:&lt;br /&gt;
&lt;br /&gt;
  SSH_AUTH_SOCK=/tmp/ssh-43fFGNj1mMxC/agent.284145; export SSH_AUTH_SOCK;&lt;br /&gt;
  SSH_AGENT_PID=284146; export SSH_AGENT_PID;&lt;br /&gt;
  echo Agent pid 284146;&lt;br /&gt;
&lt;br /&gt;
А при помощи конструкции eval $(...) полученный код выполняется в контексте текущей командной оболочки. Конечным результатом является установка в текущем сеансе переменных SSH_AGENT_PID и SSH_AUTH_SOCK, содержащих данные для подключения к ssh-agent. Эти данные будут нужны утилите ssh-add.&lt;br /&gt;
&lt;br /&gt;
==== ssh-add ====&lt;br /&gt;
Утилита ssh-add добавляет данные заданного ключа в фоновый процесс ssh-agent (который должен быть запущен ранее). Утилита обычно используется в таком формате:&lt;br /&gt;
&lt;br /&gt;
  ssh-add ~/.ssh/id_ed25519&lt;br /&gt;
&lt;br /&gt;
Команда запросит пароль к заданному ключу. После чего ключ можно будет использовать без ввода пароля (до завершения процесса ssh-agent или удаления из него информации о ключе).&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=107</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=107"/>
		<updated>2024-02-24T11:38:02Z</updated>

		<summary type="html">&lt;p&gt;Editor: /* ssh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
  apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения расшифрованных ключей в памяти&lt;br /&gt;
* ssh-add — утилита для добавления ключа для использования в ssh-agent&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
Обычный пример использования программы ssh:&lt;br /&gt;
&lt;br /&gt;
  ssh user@example.com&lt;br /&gt;
&lt;br /&gt;
Данный пример показывает обычный сценарий работы, подключение к серверу example.com от имени пользователя user.&lt;br /&gt;
&lt;br /&gt;
При первом подключении приложение сообщит информацию об отпечатке ключа сервера и предложит подтвердить подключение (если вы заботитесь о безопасности, у вас должен быть отпечаток ключа сервера, его можно получить от администратора, также, к примеру, многие хостинг-провайдеры, предоставляющие доступ по ssh, публикуют информацию об отпечатках используемых ключей на своих сайтах).&lt;br /&gt;
&lt;br /&gt;
Далее приложение ssh попытается осуществить аутентификацию. Обычный порядок действий такой: сначала будет осуществлена попытка использовать ключи, которые предоставит ssh-agent и ключи, находящиеся по стандартным именам (например, ~/.ssh/id_ed25519, ~/.ssh/id_rsa), в случае, если ни один ключ не будет принят сервером, то будет выдан запрос на ввод пароля.&lt;br /&gt;
&lt;br /&gt;
Вы можете указать ключ, который ssh должен использовать, при помощи опции -i:&lt;br /&gt;
&lt;br /&gt;
 ssh -i ~/.ssh/id_ed25519 user@example.com&lt;br /&gt;
&lt;br /&gt;
Это может быть полезно в том случае, если ключ находится по нестандартному пути, а также в ситуации, когда настройки сервера требуют прерывать соединение при нескольких неудачных попытках соединения, и ssh, перебирая ключи, не успевает дойти до правильного. В таких ситуациях выводится сообщение «Too many authentication failures», и решить проблему можно указав нужный ключ при помощи опции -i.&lt;br /&gt;
&lt;br /&gt;
Такая же ошибка может возникнуть в ситуации, когда у вас нет ключа, подходящего для сервера, вам нужно зайти туда при помощи пароля, но ssh, перебирая имеющиеся ключи, просто не даёт дойти до парольной аутентификации, поскольку сервер отключается раньше, и вы получаете сообщение об ошибке «Too many authentication failures». Чтобы указать ssh, что при данном подключении не нужно использовать ключи, что требуется использовать только аутентификацию по паролю, можно использовать следующий вариант:&lt;br /&gt;
&lt;br /&gt;
  ssh -o PreferredAuthentications=password user@example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PreferredAuthentications&amp;lt;/code&amp;gt; — это имя параметра из конфигурационного файла ssh, определяющего предпочтительные методы аутентификации, а при помощи опции командной строки -o можно устанавливать такие параметры для отдельных соединений, не меняя файл настроек, в данном случае можно установить его в &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;, что укажет ssh, что нужно использовать только аутентификацию по паролю.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.&lt;br /&gt;
&lt;br /&gt;
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;br /&gt;
&lt;br /&gt;
=== ssh-agent и ssh-add ===&lt;br /&gt;
При аутентификации по ключу используется криптографическая пара ключей, открытый ключ известен серверу, а закрытый находится на стороне пользователя, подключающегося к серверу. Закрытый ключ, в целях безопасности, рекомендуется защищать паролем, но это означает, что, без использования дополнительных средств, пользователю придётся вводить пароль каждый раз, когда он будет подключаться к серверу. Это не очень удобно, при этом убирать пароль не рекомендуется из соображений безопасности. При работе в Linux в графическом интерфейсе пароль может потребоваться вводить только один раз (до выхода пользователя из системы), то есть, задача обычно решается автоматически, без дополнительной настройки системы. При работе из консоли соответствующий результат можно получить при помощи пары утилит: ssh-agent и ssh-add. Сначала запускается ssh-agent, этот процесс будет хранить информацию о ключах, и, далее, при помощи ssh-add туда передаётся информация о ключе (на этом этапе нужно будет ввести пароль от него), и, далее, ssh сможет многократно использовать этот ключ без дополнительного запроса пароля.&lt;br /&gt;
&lt;br /&gt;
==== ssh-agent ====&lt;br /&gt;
Утилита ssh-agent служит для сохранения открытого ключа в расшифрованном виде между подключениями.  Данное приложение запускается не совсем обычным образом (в примере предполагается использование командной оболочки bash):&lt;br /&gt;
&lt;br /&gt;
  eval $(ssh-agent -s)&lt;br /&gt;
&lt;br /&gt;
Смысл этой конструкции в следующем. При вызове ssh-agent -s программа запускает фоновый процесс для работы с ключами, информация для подключения к нему выводится в формате команд оболочки (установка значений нескольких переменных и т.д.), например:&lt;br /&gt;
&lt;br /&gt;
  SSH_AUTH_SOCK=/tmp/ssh-43fFGNj1mMxC/agent.284145; export SSH_AUTH_SOCK;&lt;br /&gt;
  SSH_AGENT_PID=284146; export SSH_AGENT_PID;&lt;br /&gt;
  echo Agent pid 284146;&lt;br /&gt;
&lt;br /&gt;
А при помощи конструкции eval $(...) полученный код выполняется в контексте текущей командной оболочки. Конечным результатом является установка в текущем сеансе переменных SSH_AGENT_PID и SSH_AUTH_SOCK, содержащих данные для подключения к ssh-agent. Эти данные будут нужны утилите ssh-add.&lt;br /&gt;
&lt;br /&gt;
==== ssh-add ====&lt;br /&gt;
Утилита ssh-add добавляет данные заданного ключа в фоновый процесс ssh-agent (который должен быть запущен ранее). Утилита обычно используется в таком формате:&lt;br /&gt;
&lt;br /&gt;
  ssh-add ~/.ssh/id_ed25519&lt;br /&gt;
&lt;br /&gt;
Команда запросит пароль к заданному ключу. После чего ключ можно будет использовать без ввода пароля (до завершения процесса ssh-agent или удаления из него информации о ключе).&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=106</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=106"/>
		<updated>2024-02-23T19:16:08Z</updated>

		<summary type="html">&lt;p&gt;Editor: /* ssh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
  apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения расшифрованных ключей в памяти&lt;br /&gt;
* ssh-add — утилита для добавления ключа для использования в ssh-agent&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Это наиболее часто используемая программа из набора приложений OpenSSH. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
Обычный пример использования программы ssh&lt;br /&gt;
&lt;br /&gt;
  ssh user@example.com&lt;br /&gt;
&lt;br /&gt;
Данный пример показывает обычный сценарий работы, подключение к серверу example.com от имени пользователя user.&lt;br /&gt;
&lt;br /&gt;
При первом подключении приложение сообщит информацию об отпечатке ключа сервера и предложит подтвердить подключение (если вы заботитесь о безопасности, у вас должен быть отпечаток ключа сервера, его можно получить от администратора, также, к примеру, многие хостинг-провайдеры, предоставляющие доступ по ssh, публикуют информацию об отпечатках используемых ключей на своих сайтах).&lt;br /&gt;
&lt;br /&gt;
Если у вас есть несколько ключей, то ssh может автоматически осуществить несколько попыток подключения с разными ключами, до того, как будет найден нужный. Иногда это создаёт проблему, поскольку сервер может блокировать соединение при нескольких попытках соединения с неправильным паролем или ключом. Для пользователя это выглядит так, что соединение просто не устанавливается, и он видит ошибку: «Too many authentication failures». Решить проблему можно указав нужный ключ при помощи опции -i, к примеру:&lt;br /&gt;
&lt;br /&gt;
 ssh -i ~/.ssh/id_ed25519 user@example.com&lt;br /&gt;
&lt;br /&gt;
Так же случаются ситуации, когда вам нужно подключиться к серверу при помощи пароля, а не ключа, при этом ssh пытается использовать ваши ключи, и вы также получаете ошибку «Too many authentication failures». Чтобы указать ssh, что при данном подключении не нужно использовать ключи, что нужна только парольная аутентификация, можно использовать следующий вариант:&lt;br /&gt;
&lt;br /&gt;
  ssh -o PreferredAuthentications=password user@example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PreferredAuthentications&amp;lt;/code&amp;gt; — это имя параметра из конфигурационного файла ssh, определяющего предпочтительные методы аутентификации, а при помощи опции командной строки -o можно устанавливать такие параметры для отдельных соединений, не меняя файл настроек, в данном случае можно установить его в &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;, что укажет ssh, что нужно использовать только аутентификацию по паролю.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.&lt;br /&gt;
&lt;br /&gt;
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;br /&gt;
&lt;br /&gt;
=== ssh-agent и ssh-add ===&lt;br /&gt;
При аутентификации по ключу используется криптографическая пара ключей, открытый ключ известен серверу, а закрытый находится на стороне пользователя, подключающегося к серверу. Закрытый ключ, в целях безопасности, рекомендуется защищать паролем, но это означает, что, без использования дополнительных средств, пользователю придётся вводить пароль каждый раз, когда он будет подключаться к серверу. Это не очень удобно, при этом убирать пароль не рекомендуется из соображений безопасности. При работе в Linux в графическом интерфейсе пароль может потребоваться вводить только один раз (до выхода пользователя из системы), то есть, задача обычно решается автоматически, без дополнительной настройки системы. При работе из консоли соответствующий результат можно получить при помощи пары утилит: ssh-agent и ssh-add. Сначала запускается ssh-agent, этот процесс будет хранить информацию о ключах, и, далее, при помощи ssh-add туда передаётся информация о ключе (на этом этапе нужно будет ввести пароль от него), и, далее, ssh сможет многократно использовать этот ключ без дополнительного запроса пароля.&lt;br /&gt;
&lt;br /&gt;
==== ssh-agent ====&lt;br /&gt;
Утилита ssh-agent служит для сохранения открытого ключа в расшифрованном виде между подключениями.  Данное приложение запускается не совсем обычным образом (в примере предполагается использование командной оболочки bash):&lt;br /&gt;
&lt;br /&gt;
  eval $(ssh-agent -s)&lt;br /&gt;
&lt;br /&gt;
Смысл этой конструкции в следующем. При вызове ssh-agent -s программа запускает фоновый процесс для работы с ключами, информация для подключения к нему выводится в формате команд оболочки (установка значений нескольких переменных и т.д.), например:&lt;br /&gt;
&lt;br /&gt;
  SSH_AUTH_SOCK=/tmp/ssh-43fFGNj1mMxC/agent.284145; export SSH_AUTH_SOCK;&lt;br /&gt;
  SSH_AGENT_PID=284146; export SSH_AGENT_PID;&lt;br /&gt;
  echo Agent pid 284146;&lt;br /&gt;
&lt;br /&gt;
А при помощи конструкции eval $(...) полученный код выполняется в контексте текущей командной оболочки. Конечным результатом является установка в текущем сеансе переменных SSH_AGENT_PID и SSH_AUTH_SOCK, содержащих данные для подключения к ssh-agent. Эти данные будут нужны утилите ssh-add.&lt;br /&gt;
&lt;br /&gt;
==== ssh-add ====&lt;br /&gt;
Утилита ssh-add добавляет данные заданного ключа в фоновый процесс ssh-agent (который должен быть запущен ранее). Утилита обычно используется в таком формате:&lt;br /&gt;
&lt;br /&gt;
  ssh-add ~/.ssh/id_ed25519&lt;br /&gt;
&lt;br /&gt;
Команда запросит пароль к заданному ключу. После чего ключ можно будет использовать без ввода пароля (до завершения процесса ssh-agent или удаления из него информации о ключе).&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=105</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=105"/>
		<updated>2024-02-23T18:53:28Z</updated>

		<summary type="html">&lt;p&gt;Editor: подробнее описана работа ssh-agent, изменено форматирование&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
  apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения расшифрованных ключей в памяти&lt;br /&gt;
* ssh-add — утилита для добавления ключа для использования в ssh-agent&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Это наиболее часто используемая программа из набора приложений OpenSSH. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.&lt;br /&gt;
&lt;br /&gt;
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
  ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;br /&gt;
&lt;br /&gt;
=== ssh-agent и ssh-add ===&lt;br /&gt;
При аутентификации по ключу используется криптографическая пара ключей, открытый ключ известен серверу, а закрытый находится на стороне пользователя, подключающегося к серверу. Закрытый ключ, в целях безопасности, рекомендуется защищать паролем, но это означает, что, без использования дополнительных средств, пользователю придётся вводить пароль каждый раз, когда он будет подключаться к серверу. Это не очень удобно, при этом убирать пароль не рекомендуется из соображений безопасности. При работе в Linux в графическом интерфейсе пароль может потребоваться вводить только один раз (до выхода пользователя из системы), то есть, задача обычно решается автоматически, без дополнительной настройки системы. При работе из консоли соответствующий результат можно получить при помощи пары утилит: ssh-agent и ssh-add. Сначала запускается ssh-agent, этот процесс будет хранить информацию о ключах, и, далее, при помощи ssh-add туда передаётся информация о ключе (на этом этапе нужно будет ввести пароль от него), и, далее, ssh сможет многократно использовать этот ключ без дополнительного запроса пароля.&lt;br /&gt;
&lt;br /&gt;
==== ssh-agent ====&lt;br /&gt;
Утилита ssh-agent служит для сохранения открытого ключа в расшифрованном виде между подключениями.  Данное приложение запускается не совсем обычным образом (в примере предполагается использование командной оболочки bash):&lt;br /&gt;
&lt;br /&gt;
  eval $(ssh-agent -s)&lt;br /&gt;
&lt;br /&gt;
Смысл этой конструкции в следующем. При вызове ssh-agent -s программа запускает фоновый процесс для работы с ключами, информация для подключения к нему выводится в формате команд оболочки (установка значений нескольких переменных и т.д.), например:&lt;br /&gt;
&lt;br /&gt;
  SSH_AUTH_SOCK=/tmp/ssh-43fFGNj1mMxC/agent.284145; export SSH_AUTH_SOCK;&lt;br /&gt;
  SSH_AGENT_PID=284146; export SSH_AGENT_PID;&lt;br /&gt;
  echo Agent pid 284146;&lt;br /&gt;
&lt;br /&gt;
А при помощи конструкции eval $(...) полученный код выполняется в контексте текущей командной оболочки. Конечным результатом является установка в текущем сеансе переменных SSH_AGENT_PID и SSH_AUTH_SOCK, содержащих данные для подключения к ssh-agent. Эти данные будут нужны утилите ssh-add.&lt;br /&gt;
&lt;br /&gt;
==== ssh-add ====&lt;br /&gt;
Утилита ssh-add добавляет данные заданного ключа в фоновый процесс ssh-agent (который должен быть запущен ранее). Утилита обычно используется в таком формате:&lt;br /&gt;
&lt;br /&gt;
  ssh-add ~/.ssh/id_ed25519&lt;br /&gt;
&lt;br /&gt;
Команда запросит пароль к заданному ключу. После чего ключ можно будет использовать без ввода пароля (до завершения процесса ssh-agent или удаления из него информации о ключе).&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=104</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=104"/>
		<updated>2024-02-23T18:42:20Z</updated>

		<summary type="html">&lt;p&gt;Editor: /* ssh-agent и ssh-add */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения расшифрованных ключей в памяти&lt;br /&gt;
* ssh-add — утилита для добавления ключа для использования в ssh-agent&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Это наиболее часто используемая программа из набора приложений OpenSSH. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.&lt;br /&gt;
&lt;br /&gt;
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;br /&gt;
&lt;br /&gt;
=== ssh-agent и ssh-add ===&lt;br /&gt;
При аутентификации по ключу используется криптографическая пара ключей, открытый ключ известен серверу, а закрытый находится на стороне пользователя, подключающегося к серверу. Закрытый ключ, в целях безопасности, рекомендуется защищать паролем, но это означает, что, без использования дополнительных средств, пользователю придётся вводить пароль каждый раз, когда он будет подключаться к серверу. Это не очень удобно, при этом убирать пароль не рекомендуется из соображений безопасности. При работе в Linux в графическом интерфейсе пароль может потребоваться вводить только один раз (до выхода пользователя из системы), то есть, задача обычно решается автоматически, без дополнительной настройки системы. При работе из консоли соответствующий результат можно получить при помощи пары утилит: ssh-agent и ssh-add. Сначала запускается ssh-agent, этот процесс будет хранить информацию о ключах, и, далее, при помощи ssh-add туда передаётся информация о ключе (на этом этапе нужно будет ввести пароль от него), и, далее, ssh сможет многократно использовать этот ключ без дополнительного запроса пароля.&lt;br /&gt;
&lt;br /&gt;
==== ssh-agent ====&lt;br /&gt;
Утилита ssh-agent служит для сохранения открытого ключа в расшифрованном виде между подключениями.  Данное приложение запускается не совсем обычным образом (в примере предполагается использование командной оболочки bash):&lt;br /&gt;
&lt;br /&gt;
eval $(ssh-agent -s)&lt;br /&gt;
&lt;br /&gt;
Смысл этой конструкции в следующем. При вызове ssh-agent -s программа запускает фоновый процесс для работы с ключами, информация для подключения к нему выводится в формате команд оболочки (установка значений нескольких переменных и т.д.), а при помощи конструкции eval $(...) тот код выполняется в контексте текущей командной оболочки. Конечным результатом является установка в текущем сеансе переменных SSH_AGENT_PID и SSH_AUTH_SOCK, содержащих данные для подключения к ssh-agent. Эти данные будут нужны утилите ssh-add.&lt;br /&gt;
&lt;br /&gt;
==== ssh-add ====&lt;br /&gt;
Утилита ssh-add добавляет данные заданного ключа в фоновый процесс ssh-agent (который должен быть запущен ранее). Утилита обычно используется в таком формате:&lt;br /&gt;
&lt;br /&gt;
ssh-add ~/.ssh/id_ed25519&lt;br /&gt;
&lt;br /&gt;
Команда запросит пароль к заданному ключу. После чего ключ можно будет использовать без ввода пароля (до завершения процесса ssh-agent или удаления из него информации о ключе).&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=103</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=103"/>
		<updated>2024-02-18T21:53:01Z</updated>

		<summary type="html">&lt;p&gt;Editor: подробнее описана работа с ssh-agent и ssh-add&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения расшифрованных ключей в памяти&lt;br /&gt;
* ssh-add — утилита для добавления ключа для использования в ssh-agent&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Это наиболее часто используемая программа из набора приложений OpenSSH. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.&lt;br /&gt;
&lt;br /&gt;
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;br /&gt;
&lt;br /&gt;
=== ssh-agent и ssh-add ===&lt;br /&gt;
Если вы используете аутентификацию по ключу, то вам может потребоваться каждый раз вводить пароль от ключа при подключении к удалённому хосту. Это не очень удобно, при этом убирать пароль не рекомендуется из соображений безопасности. Для упрощения работы можно использовать пару утилит: ssh-agent и ssh-add, первая из них служит для хранения информации о расшифрованных ключах, а вторая — добавляет в неё информацию о ключах.&lt;br /&gt;
&lt;br /&gt;
==== ssh-agent ====&lt;br /&gt;
Утилита ssh-agent служит для сохранения открытого ключа в расшифрованном виде между подключениями.  Данное приложение запускается не совсем обычным образом (в примере предполагается использование командной оболочки bash):&lt;br /&gt;
&lt;br /&gt;
eval $(ssh-agent -s)&lt;br /&gt;
&lt;br /&gt;
Смысл этой конструкции в следующем. При вызове ssh-agent -s программа запускает фоновый процесс для работы с ключами, информация для подключения к нему выводится в формате команд оболочки (установка значений нескольких переменных и т.д.), а при помощи конструкции eval $(...) тот код выполняется в контексте текущей командной оболочки. Конечным результатом является установка переменных SSH_AGENT_PID и SSH_AUTH_SOCK, содержащих данные для подключения к ssh-agent. Эти данные будут нужны утилите ssh-add.&lt;br /&gt;
&lt;br /&gt;
==== ssh-add ====&lt;br /&gt;
Утилита ssh-add добавляет данные заданного ключа в фоновый процесс ssh-agent (который должен быть запущен ранее). Утилита обычно используется в таком формате:&lt;br /&gt;
&lt;br /&gt;
ssh-add ~/.ssh/id_ed25519&lt;br /&gt;
&lt;br /&gt;
Команда запросит пароль к заданному ключу. После чего ключ можно будет использовать без ввода пароля (до завершения процесса ssh-agent или удаления из него информации о ключе).&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=102</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=102"/>
		<updated>2024-02-18T21:20:04Z</updated>

		<summary type="html">&lt;p&gt;Editor: подробнее описана работа с ssh-keygen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssh-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения ключей в памяти&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Это наиболее часто используемая программа из набора приложений OpenSSH. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:&lt;br /&gt;
&lt;br /&gt;
ssh-keygen -t ed25519 -C &#039;My personal key&#039;&lt;br /&gt;
&lt;br /&gt;
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.&lt;br /&gt;
&lt;br /&gt;
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.&lt;br /&gt;
&lt;br /&gt;
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа [[MITM]]. Администратор сервера может посмотреть отпечаток ключа командой вида:&lt;br /&gt;
&lt;br /&gt;
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию  имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).&lt;br /&gt;
&lt;br /&gt;
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает  строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:&lt;br /&gt;
&lt;br /&gt;
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=101</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=101"/>
		<updated>2024-02-11T08:52:20Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлена информация о ряде приложений, входящих в состав OpenSSH&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;br /&gt;
&lt;br /&gt;
== Установка ==&lt;br /&gt;
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):&lt;br /&gt;
&lt;br /&gt;
apt install openssh-client openssh-server&lt;br /&gt;
&lt;br /&gt;
== Приложения, входящие в состав OpenSSH ==&lt;br /&gt;
В состав OpenSSH в частности входят следующие приложения:&lt;br /&gt;
&lt;br /&gt;
* sshd — сервер&lt;br /&gt;
* ssh — клиент&lt;br /&gt;
* ssj-keygen — утилита для генерирования ключей и управления ими&lt;br /&gt;
* ssh-agent — приложение для хранения ключей в памяти&lt;br /&gt;
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp&lt;br /&gt;
* sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту&lt;br /&gt;
&lt;br /&gt;
=== sshd ===&lt;br /&gt;
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться,  возможны ли новые подключения.&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
Программа ssh является клиентом для подключения к SSH-серверу. Это наиболее часто используемая программа из набора приложений OpenSSH. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.&lt;br /&gt;
&lt;br /&gt;
=== ssh-keygen ===&lt;br /&gt;
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей.&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=OpenSSH&amp;diff=100</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=OpenSSH&amp;diff=100"/>
		<updated>2024-02-10T21:42:13Z</updated>

		<summary type="html">&lt;p&gt;Editor: создание заготовки страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenSSH — приложение для работы по протоколу SSH, включающее в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=SSH&amp;diff=99</id>
		<title>SSH</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=SSH&amp;diff=99"/>
		<updated>2024-02-10T21:39:05Z</updated>

		<summary type="html">&lt;p&gt;Editor: доработка текста&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;SSH&#039;&#039;&#039; — сетевой криптографический протокол, предназначенный для безопасного доступа к удалённой командной оболочке, а также для создания защищённых туннелей.&lt;br /&gt;
&lt;br /&gt;
Протокол SSH основан на клиент-серверной архитектуре, работает по протоколу TCP, стандартный порт для сервера SSH — 22. Он является основным вариантом для удалённого администрирования UNIX-подобных операционных систем, предоставляя защищённый доступ к командной оболочке по незащищённой сети. Аутентификация при работе по SSH обычно осуществляется при помощи логина и пароля или при помощи алгоритмов электронной подписи с открытым ключом, хотя существует вариант аутентификации по IP-адресу.&lt;br /&gt;
&lt;br /&gt;
== Аутентификация при подключении к серверу SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Аутентификация по паролю ===&lt;br /&gt;
Наиболее простой вариант аутентификации для SSH — это использование логина и пароля. Обычно это те же логин и пароль, которые используются при входе в систему (на сервере). При этом для пользователя root аутентификация по паролю в SSH часто отключена из соображений безопасности.&lt;br /&gt;
&lt;br /&gt;
=== Аутентификация с использованием алгоритмов электронной подписи с открытым ключом ===&lt;br /&gt;
Данный вариант считается более безопасным и удобным, чем вариант с аутентификацией по паролю. Для его использования необходимо сгенерировать пару ключей, обычно это делается приложением, которое идёт в комплекте с SSH-клиентом. Закрытый ключ пользователь должен хранить в тайне от остальных (более того, при генерации ключевой пары будет предложено задать пароль, чтобы закрытый ключ хранился зашифрованным), а открытый ключ нужно передать администратору удалённой машины для того, чтобы администратор добавил открытый ключ в список разрешённых для SSH-сервера (это может делаться, например, добавлением ключа в файл .ssh/authorized_keys в домашнем каталоге пользователя на сервере). Для пользователя установление связи с удалённой машиной выглядит примерно так же, как в предыдущем варианте, но, в случае успешной аутентификации по ключу, пароль не запрашивается.&lt;br /&gt;
&lt;br /&gt;
Данные открытого ключа выглядят следующим образом: это строка, в начале которой идёт информация о типе ключа (например, «ssh-ed25519» или «ssh-rsa»), далее, через пробел, идёт сам ключ в виде последовательности символов (размер которой зависит от типа ключа и его длины), далее, опять же, через пробел, может идти комментарий.&lt;br /&gt;
&lt;br /&gt;
Пример открытого ключа:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE5rD/4RXDAsVtB4aVUJdFpfCiKIbFGrYxyKpk6php/F My personal key&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Иногда, по ошибке, администратору удалённой машины пересылается не открытый ключ, а закрытый (обычно он хранится в файле с похожим названием), что является грубой ошибкой: один и тот же ключ может использоваться для доступа к разным серверам, и администратор одного из них, получив ошибочно высланный ключ, получит техническую возможность подключаться от имени пользователя к другим серверам. Отправлять третьим лицам закрытый ключ не следует, при этом отправка открытого ключа может считаться безопасной.&lt;br /&gt;
&lt;br /&gt;
Некоторые приложения для генерации ключей могут разбивать длинную строку на несколько более коротких строк, при этом на сервере может потребоваться привести его к описанному выше виду.&lt;br /&gt;
&lt;br /&gt;
== Предотвращение атак типа MITM ==&lt;br /&gt;
Для предотвращения атак типа [[MITM]] при первом подключении к серверу клиетская программа показывает удалённому пользователю отпечаток ключа сервера. Пользователь должен иметь возможность получить для сравнения этот отпечаток другим путём, и подтверждать подключение только убедившись в подлинности сервера. При повторном подключении запрос на подтверждение не выводится, пока открытый ключ сервера не поменяется.&lt;br /&gt;
&lt;br /&gt;
При игнорировании этой проверки существует техническая возможность перехватить пароль и другую информацию, передаваемую между клиентом и сервером: злоумышленник, имеющий возможность перехватывать пакеты, пересылаемые между клиентом и сервером, может создать свой сервер SSH, отвечающий вместо настоящего, который получит таким образом введённые пользователем логин и пароль, далее установит соединение с настоящим сервером с учётными данными легального пользователя, и будет передавать команды пользователя на настоящий сервер, возвращая пользователю ответы настоящего сервера. При этом для пользователя и для настоящего сервера соединение будет выглядеть защищённым. Однако у сервера злоумышленника будет своя пара криптографических ключей, и, если пользователь проверит отпечаток, то увидет несоответствие и обнаружит атаку.&lt;br /&gt;
&lt;br /&gt;
Если отпечаток ключа сервера был проверен, но, при очередном подключении, неожиданно снова был выдан запрос на подтверждение, это означает, что либо администратор системы поменял ключ сервера, либо происходит попытка атаки типа MITM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Приложения для работы по протоколу SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Клиентские приложения ===&lt;br /&gt;
&lt;br /&gt;
* ssh ([[OpenSSH]])&lt;br /&gt;
* [[PuTTY]]&lt;br /&gt;
&lt;br /&gt;
=== Серверные приложения ===&lt;br /&gt;
* sshd (OpenSSH)&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [https://datatracker.ietf.org/doc/html/rfc4251 RFC 4251 «The Secure Shell (SSH) Protocol Architecture»]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=Less&amp;diff=98</id>
		<title>Less</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=Less&amp;diff=98"/>
		<updated>2024-02-10T15:17:45Z</updated>

		<summary type="html">&lt;p&gt;Editor: исправлен текст и добавлен раздел про поиск&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;less&#039;&#039;&#039; — утилита для постраничного вывода информации.&lt;br /&gt;
&lt;br /&gt;
== Общие сведения ==&lt;br /&gt;
Утилита less предназначена для постраничного показа на экране терминала содержимого текстовых файлов или потока вывода другой программы. Утилита является продвинутым аналогом программы more, которая обладает достаточно ограниченным функционалом (например, не позволяет осуществлять прокрутку текста назад).&lt;br /&gt;
&lt;br /&gt;
=== Простейшие примеры вызова программы ===&lt;br /&gt;
less file.txt — постранично покажет содержимое файла file.txt&lt;br /&gt;
&lt;br /&gt;
ls /home/user | less — постранично покажет вывод команды ls /home/user (то есть, список файлов в домашнем каталоге пользователя user)&lt;br /&gt;
&lt;br /&gt;
== Опции командной строки и команды ==&lt;br /&gt;
Как и многие другие программы, при вызове утилиты less можно указывать опции командной строки, также в процессе работы ею можно управлять через команды, но при этом команды можно передать как опции командной строки (с предшествующим символом «+»), и наоборот, многие опции командной строки можно ввести как команды в процессе работы программы (просто набирая их на клавиатуре). К примеру, опция «-i» делает поиск нечувствительным к регистру (если шаблон для поиска набран в нижнем регистре), но, если эта опция не была добавлена при вызове, то, в процессе работы с less можно просто набрать символы «-i» в качестве команды, и переключить режим поиска, и, обратный пример, если после вызова less нужно попасть в самый конец файла, что делается командой G, можно, вместо ручного ввода команды, запустить less таким образом: less +G.&lt;br /&gt;
&lt;br /&gt;
Обычно программа less используется для просмотра одного файла (или передаваемой ей на стандартный ввод информации), но также она может показывать (по очереди) содержимое нескольких файлов. В последнем случае, при указании команды в командной строке, префикс «+» означает, что команда будет выполнена только для первого файла, если же она должна быть выполнена для каждого из файлов, нужно использовать префикс «++». Например, чтобы открыть два файла и перейти в конец каждого из них, команда less может быть вызвана таким образом:&lt;br /&gt;
&lt;br /&gt;
less ++G file0.txt file1.txt&lt;br /&gt;
&lt;br /&gt;
== Полезные опции и команды ==&lt;br /&gt;
Полный список опций и команд программы less достаточно обширен и может быть просмотрен при помощи команды &amp;lt;code&amp;gt;man less&amp;lt;/code&amp;gt;. Ниже будет представлен небольшой набор полезных или важных опций и команд. При этом, как уже было сказано выше, многие опции командной строки могут быть использованы как команды, и наоборот. &lt;br /&gt;
&lt;br /&gt;
=== Опции командной строки ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Опция&lt;br /&gt;
!Назначение&lt;br /&gt;
|-&lt;br /&gt;
| -i или --ignore-case&lt;br /&gt;
|При поиске игнорировать регистр символов, если шаблон набран в нижнем регистре (например, строки «test» и «Test» попадут под шаблон «test», но под шаблон «Test» попадёт только вторая из них).&lt;br /&gt;
|-&lt;br /&gt;
| -I или --IGNORE-CASE&lt;br /&gt;
|При поиске полностью игнорировать регистр символов.&lt;br /&gt;
|-&lt;br /&gt;
| -N или --LINE-NUMBERS&lt;br /&gt;
|Показывать номера строк.&lt;br /&gt;
|-&lt;br /&gt;
| +&lt;br /&gt;
|Рассматривать последующие символы (до разделителя) как команду, которая должна быть выполнена после открытия файла (только для первого файла, если открывается несколько файлов).&lt;br /&gt;
|-&lt;br /&gt;
| ++&lt;br /&gt;
|Аналогично +, но команда будет выполнена для всех открытых в less файлов.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Команды ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Команда&lt;br /&gt;
!Назначение&lt;br /&gt;
|-&lt;br /&gt;
|h или H&lt;br /&gt;
|Вывод справки по командам.&lt;br /&gt;
|-&lt;br /&gt;
|q&lt;br /&gt;
|Выход из less&lt;br /&gt;
|-&lt;br /&gt;
|/&lt;br /&gt;
|Поиск вперёд. После символа / должен быть введён шаблон, который рассматривается как регулярное выражение, но, если после / (и до ввода шаблона) нажать комбинацию клавиш Ctrl-R, то будет осуществлён простой текстовой поиск.&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Аналогично /, но поиск идёт в обратном направлении.&lt;br /&gt;
|-&lt;br /&gt;
|g&lt;br /&gt;
|Переход в начало файла. Если перед командой набрать номер строки, будет осуществлён переход к ней (например, 10g означает переход к десятой строке.&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Переход в конец файла. Если перед командой набрать номер строки, будет осуществлён переход к ней, как и в случае команды g.&lt;br /&gt;
|-&lt;br /&gt;
|F&lt;br /&gt;
|Перейти в конец отображаемого файла и ожидать добавления в него новых данных, показывая их по мере появления. Это полезная опция для просмотра, например, файлов логов, она позволяет видеть изменения сразу, не перезапуская программу.&lt;br /&gt;
|-&lt;br /&gt;
|=&lt;br /&gt;
|Показать информацию о файле в последней строке.&lt;br /&gt;
|-&lt;br /&gt;
|:n&lt;br /&gt;
|Переход к следующему файлу (если при вызове less в числе параметров было передано больше одного имени файла).&lt;br /&gt;
|-&lt;br /&gt;
|:p&lt;br /&gt;
|Переход к предыдущему файлу (если при вызове less в числе параметров было передано больше одного имени файла).&lt;br /&gt;
|-&lt;br /&gt;
|v&lt;br /&gt;
|Вызвать текстовый редактор.&lt;br /&gt;
|-&lt;br /&gt;
|!&lt;br /&gt;
|Запустить командную оболочку.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Поиск ==&lt;br /&gt;
Важной составляющей команды less является поиск по содержимому файлов. Шаблон для поиска может рассматриваться как обычный текст и как регулярное выражение, что даёт более широкие возможности для поиска. Для поиска служит команда / (для поиска от текущего положения к началу файла используется команда ?), после команды нужно ввести шаблон для поиска. Например, если нужно найти строку, содержащую слово «user», нужно будет набрать следующую последовательность:&lt;br /&gt;
&lt;br /&gt;
/user&lt;br /&gt;
&lt;br /&gt;
После нажатия на клавишу перевода строки, less покажет первую строку, в которой есть такая подстрока.&lt;br /&gt;
&lt;br /&gt;
Для перехода к следующему результату поиска нужно нажать &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, для перехода к предыдущему — нажать &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
По умолчанию предполагается поиск регулярных выражений, что может привести к неожиданному результату для тех, кто не работал с ними. Например, если шаблон для поиска содержит обычную точку, то она будет рассматриваться как любой символ, поэтому, например, по шаблону «abc.» будет найдено не только точное соответствие, под него попадёт, например, и строка, содержащая «abcd», «abc9», «abc!» и т.п. Если вам нужен поиск по простому текстовому соответствию, то, после команды / (или, соответственно, ?) нужно нажать комбинацию клавиш Ctrl-R, для индикации того, что режим поиска переключён, перед приглашением для ввода шаблона появится уведомление: «Regex-off».&lt;br /&gt;
&lt;br /&gt;
== Вопросы безопасности ==&lt;br /&gt;
Команда less позволяет выполнять команды оболочки. Если в процессе выполнения команды less нажать символ «!», то далее можно ввести команду оболочки, например, запустить интерпретатор bash. Чтобы запретить такое поведение, нужно установить переменную окружения LESSSECURE в значение 1. Это может быть актуально например для скриптов, выполняемых через sudo: если в таком скрипте пользователю, при помощи less, постранично показывается некий текст, то пользователь может получить повысить свои привилегии в системе, если переменная LESSSECURE не будет установлена в 1.&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=Less&amp;diff=97</id>
		<title>Less</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=Less&amp;diff=97"/>
		<updated>2024-02-08T22:39:47Z</updated>

		<summary type="html">&lt;p&gt;Editor: дано простое описание работы с less&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;less&#039;&#039;&#039; — утилита для постраничного вывода информации.&lt;br /&gt;
&lt;br /&gt;
== Общие сведения ==&lt;br /&gt;
Утилита less предназначена для постраничного показа на экране терминала содержимого текстовых файлов или потока вывода другой программы. Утилита является продвинутым аналогом программы more, которая обладает достаточно ограниченным функционалом (например, не позволяет осуществлять прокрутку текста назад).&lt;br /&gt;
&lt;br /&gt;
=== Простейшие примеры вызова программы ===&lt;br /&gt;
less file.txt — постранично покажет содержимое файла file.txt&lt;br /&gt;
&lt;br /&gt;
ls /home/user | less — постранично покажет вывод команды ls /home/user (то есть, список файлов в домашнем каталоге пользователя user)&lt;br /&gt;
&lt;br /&gt;
== Опции командной строки и команды ==&lt;br /&gt;
Как и многие другие программы, при вызове утилиты less можно указывать опции командной строки, также в процессе работы ею можно управлять через команды, но при этом команды можно передать как опции командной строки (с предшествующим символом «+»), и наоборот, многие опции командной строки можно ввести как команды в процессе работы программы (просто набирая их на клавиатуре). К примеру, опция «-i» делает поиск нечувствительным к регистру (если шаблон для поиска набран в нижнем регистре), но, если эта опция не была добавлена при вызове, то, в процессе работы с less можно просто набрать символы «-i» в качестве команды, и переключить режим поиска, и, обратный пример, если после вызова less нужно попасть в самый конец файла, что делается командой G, можно, вместо ручного ввода команды, запустить less таким образом: less +G.&lt;br /&gt;
&lt;br /&gt;
Обычно программа less используется для просмотра одного файла (или передаваемой ей на стандартный ввод информации), но также она может показывать (по очереди) содержимое нескольких файлов. В последнем случае, при указании команды в командной строке, префикс «+» означает, что команда будет выполнена только для первого файла, если же она должна быть выполнена для каждого из файлов, нужно использовать префикс «++». Например, чтобы открыть два файла и перейти в конец каждого из них, команда less может быть вызвана таким образом:&lt;br /&gt;
&lt;br /&gt;
less ++G file0.txt file1.txt&lt;br /&gt;
&lt;br /&gt;
== Полезные опции и команды ==&lt;br /&gt;
Полный список опций и команд программы less достаточно обширен и может быть просмотрен при помощи команды &amp;lt;code&amp;gt;man less&amp;lt;/code&amp;gt;. Ниже будет представлен небольшой набор возможно наиболее полезных или важных опций. Как уже было сказано выше, многие опции командной строки могут быть &lt;br /&gt;
&lt;br /&gt;
=== Опции командной строки ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Опция&lt;br /&gt;
!Назначение&lt;br /&gt;
|-&lt;br /&gt;
| -i или --ignore-case&lt;br /&gt;
|При поиске игнорировать регистр символов, если шаблон набран в нижнем регистре (например, строки «test» и «Test» попадут под шаблон «test», но под шаблон «Test» попадёт только вторая из них).&lt;br /&gt;
|-&lt;br /&gt;
| -I или --IGNORE-CASE&lt;br /&gt;
|При поиске полностью игнорировать регистр символов.&lt;br /&gt;
|-&lt;br /&gt;
| -N или --LINE-NUMBERS&lt;br /&gt;
|Показывать номера строк.&lt;br /&gt;
|-&lt;br /&gt;
| +&lt;br /&gt;
|Рассматривать последующие символы (до разделителя) как команду, которая должна быть выполнена после открытия файла (только для первого файла, если открывается несколько файлов).&lt;br /&gt;
|-&lt;br /&gt;
| ++&lt;br /&gt;
|Аналогично +, но команда будет выполнена для всех открытых в less файлов.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Команды ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Команда&lt;br /&gt;
!Назначение&lt;br /&gt;
|-&lt;br /&gt;
|h или H&lt;br /&gt;
|Вывод справки по командам.&lt;br /&gt;
|-&lt;br /&gt;
|q&lt;br /&gt;
|Выход из less&lt;br /&gt;
|-&lt;br /&gt;
|/&lt;br /&gt;
|Поиск вперёд. После символа / должен быть введён шаблон, который рассматривается как регулярное выражение, но, если после / (и до ввода шаблона) нажать комбинацию клавиш Ctrl-R, то будет осуществлён простой текстовой поиск.&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Аналогично /, но поиск идёт в обратном направлении.&lt;br /&gt;
|-&lt;br /&gt;
|g&lt;br /&gt;
|Переход в начало файла. Если перед командой набрать номер строки, будет осуществлён переход к ней (например, 10g означает переход к десятой строке.&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Переход в конец файла. Если перед командой набрать номер строки, будет осуществлён переход к ней, как и в случае команды g.&lt;br /&gt;
|-&lt;br /&gt;
|=&lt;br /&gt;
|Показать информацию о файле в последней строке.&lt;br /&gt;
|-&lt;br /&gt;
|:n&lt;br /&gt;
|Переход к следующему файлу (если при вызове less в числе параметров было передано больше одного имени файла).&lt;br /&gt;
|-&lt;br /&gt;
|:p&lt;br /&gt;
|Переход к предыдущему файлу (если при вызове less в числе параметров было передано больше одного имени файла).&lt;br /&gt;
|-&lt;br /&gt;
|v&lt;br /&gt;
|Вызвать текстовый редактор.&lt;br /&gt;
|-&lt;br /&gt;
|!&lt;br /&gt;
|Запустить командную оболочку.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Вопросы безопасности ==&lt;br /&gt;
Команда less позволяет выполнять команды оболочки. Если в процессе выполнения команды less нажать символ «!», то далее можно ввести команду оболочки, например, запустить интерпретатор bash. Чтобы запретить такое поведение, нужно установить переменную окружения LESSSECURE в значение 1. Это может быть актуально например для скриптов, выполняемых через sudo: если в таком скрипте пользователю, при помощи less, постранично показывается некий текст, то пользователь может получить повысить свои привилегии в системе, если переменная LESSSECURE не будет установлена в 1.&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=Less&amp;diff=94</id>
		<title>Less</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=Less&amp;diff=94"/>
		<updated>2024-02-05T23:02:07Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлена небольшая часть информации&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;less&#039;&#039;&#039; — утилита для постраничного вывода информации.&lt;br /&gt;
&lt;br /&gt;
== Общие сведения ==&lt;br /&gt;
&lt;br /&gt;
== Примеры использования ==&lt;br /&gt;
&lt;br /&gt;
== Вопросы безопасности ==&lt;br /&gt;
Команда less позволяет выполнять команды оболочки. Если в процессе выполнения команды less нажать символ «!», то далее можно ввести команду оболочки, например, запустить интерпретатор bash. Чтобы запретить такое поведение, нужно установить переменную окружения LESSSECURE в значение 1.&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=93</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=93"/>
		<updated>2024-02-05T22:45:08Z</updated>

		<summary type="html">&lt;p&gt;Editor: исправление ссылки с http на https&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей ряда проектов, кроме ссылок непосредственно на ключи, в целях безопасности, даны ссылки на страницы на сайтах этих проектов, содержащих данную информацию, рекомендуется использовать эти ссылки чтобы видеть, что вы скачиваете открытые ключи именно с соответствующих сайтов.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на файлы открытых ключей (при наличии)&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
|Arch Linux&lt;br /&gt;
|https://wiki.archlinux.org/title/Installation_guide#Verify_signature&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Debian]]|| rowspan=&amp;quot;2&amp;quot; | https://ftp-master.debian.org/keys.html&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
|-&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
|Gentoo&lt;br /&gt;
|https://www.gentoo.org/downloads/signatures/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Linux Mint&lt;br /&gt;
|https://linuxmint-installation-guide.readthedocs.io/en/latest/verify.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[MariaDB]]&lt;br /&gt;
|https://mariadb.com/kb/en/gpg/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Nginx]]&lt;br /&gt;
|http://nginx.org/en/pgp_keys.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[PHP]]&lt;br /&gt;
|https://www.php.net/downloads.php#gpg-8.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | [[Python]] || rowspan=&amp;quot;7&amp;quot; | https://www.python.org/downloads/&lt;br /&gt;
|https://github.com/Yhg1s.gpg&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|[[Ubuntu]]&lt;br /&gt;
|https://ubuntu.com/tutorials/how-to-verify-ubuntu#4-retrieve-the-correct-signature-key&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|VLC&lt;br /&gt;
|https://download.videolan.org/pub/videolan/keys/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=92</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=92"/>
		<updated>2024-02-05T22:43:00Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлена ссылка для VLC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей ряда проектов, кроме ссылок непосредственно на ключи, в целях безопасности, даны ссылки на страницы на сайтах этих проектов, содержащих данную информацию, рекомендуется использовать эти ссылки чтобы видеть, что вы скачиваете открытые ключи именно с соответствующих сайтов.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на файлы открытых ключей (при наличии)&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
|Arch Linux&lt;br /&gt;
|https://wiki.archlinux.org/title/Installation_guide#Verify_signature&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Debian]]|| rowspan=&amp;quot;2&amp;quot; | https://ftp-master.debian.org/keys.html&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
|-&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
|Gentoo&lt;br /&gt;
|https://www.gentoo.org/downloads/signatures/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Linux Mint&lt;br /&gt;
|https://linuxmint-installation-guide.readthedocs.io/en/latest/verify.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[MariaDB]]&lt;br /&gt;
|https://mariadb.com/kb/en/gpg/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Nginx]]&lt;br /&gt;
|http://nginx.org/en/pgp_keys.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[PHP]]&lt;br /&gt;
|https://www.php.net/downloads.php#gpg-8.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | [[Python]] || rowspan=&amp;quot;7&amp;quot; | https://www.python.org/downloads/&lt;br /&gt;
|https://github.com/Yhg1s.gpg&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|[[Ubuntu]]&lt;br /&gt;
|https://ubuntu.com/tutorials/how-to-verify-ubuntu#4-retrieve-the-correct-signature-key&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|VLC&lt;br /&gt;
|http://download.videolan.org/pub/videolan/keys/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=91</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=91"/>
		<updated>2024-02-05T22:37:37Z</updated>

		<summary type="html">&lt;p&gt;Editor: перенос ссылки в другую колонку&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей ряда проектов, кроме ссылок непосредственно на ключи, в целях безопасности, даны ссылки на страницы на сайтах этих проектов, содержащих данную информацию, рекомендуется использовать эти ссылки чтобы видеть, что вы скачиваете открытые ключи именно с соответствующих сайтов.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на файлы открытых ключей (при наличии)&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
|Arch Linux&lt;br /&gt;
|https://wiki.archlinux.org/title/Installation_guide#Verify_signature&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Debian]]|| rowspan=&amp;quot;2&amp;quot; | https://ftp-master.debian.org/keys.html&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
|-&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
|Gentoo&lt;br /&gt;
|https://www.gentoo.org/downloads/signatures/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Linux Mint&lt;br /&gt;
|https://linuxmint-installation-guide.readthedocs.io/en/latest/verify.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[MariaDB]]&lt;br /&gt;
|https://mariadb.com/kb/en/gpg/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Nginx]]&lt;br /&gt;
|http://nginx.org/en/pgp_keys.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[PHP]]&lt;br /&gt;
|https://www.php.net/downloads.php#gpg-8.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | [[Python]] || rowspan=&amp;quot;7&amp;quot; | https://www.python.org/downloads/&lt;br /&gt;
|https://github.com/Yhg1s.gpg&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|[[Ubuntu]]&lt;br /&gt;
|https://ubuntu.com/tutorials/how-to-verify-ubuntu#4-retrieve-the-correct-signature-key&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=90</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=90"/>
		<updated>2024-02-04T14:27:07Z</updated>

		<summary type="html">&lt;p&gt;Editor: изменение оформления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей ряда проектов, кроме ссылок непосредственно на ключи, в целях безопасности, даны ссылки на страницы на сайтах этих проектов, содержащих данную информацию, рекомендуется использовать эти ссылки чтобы видеть, что вы скачиваете открытые ключи именно с соответствующих сайтов.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на файлы открытых ключей (при наличии)&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
|Arch Linux&lt;br /&gt;
|https://wiki.archlinux.org/title/Installation_guide#Verify_signature&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Debian]]|| rowspan=&amp;quot;2&amp;quot; | https://ftp-master.debian.org/keys.html&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
|-&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
|Gentoo&lt;br /&gt;
|https://www.gentoo.org/downloads/signatures/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Linux Mint&lt;br /&gt;
|https://linuxmint-installation-guide.readthedocs.io/en/latest/verify.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[MariaDB]]&lt;br /&gt;
|&lt;br /&gt;
|https://mariadb.com/kb/en/gpg/&lt;br /&gt;
|-&lt;br /&gt;
|[[Nginx]]&lt;br /&gt;
|http://nginx.org/en/pgp_keys.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[PHP]]&lt;br /&gt;
|https://www.php.net/downloads.php#gpg-8.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | [[Python]] || rowspan=&amp;quot;7&amp;quot; | https://www.python.org/downloads/&lt;br /&gt;
|https://github.com/Yhg1s.gpg&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|[[Ubuntu]]&lt;br /&gt;
|https://ubuntu.com/tutorials/how-to-verify-ubuntu#4-retrieve-the-correct-signature-key&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=89</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=89"/>
		<updated>2024-02-04T14:24:21Z</updated>

		<summary type="html">&lt;p&gt;Editor: изменение оформления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей ряда проектов, кроме ссылок непосредственно на ключи, в целях безопасности, даны ссылки на страницы на сайтах этих проектов, содержащих данную информацию, рекомендуется использовать эти ссылки чтобы видеть, что вы скачиваете открытые ключи именно с соответствующих сайтов.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на файлы открытых ключей (при наличии)&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
|Arch Linux&lt;br /&gt;
|https://wiki.archlinux.org/title/Installation_guide#Verify_signature&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Debian]]|| rowspan=&amp;quot;2&amp;quot; | https://ftp-master.debian.org/keys.html&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
|-&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
|Gentoo&lt;br /&gt;
|https://www.gentoo.org/downloads/signatures/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Linux Mint&lt;br /&gt;
|https://linuxmint-installation-guide.readthedocs.io/en/latest/verify.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[MariaDB]]&lt;br /&gt;
|&lt;br /&gt;
|https://mariadb.com/kb/en/gpg/&lt;br /&gt;
|-&lt;br /&gt;
|[[Nginx]]&lt;br /&gt;
|http://nginx.org/en/pgp_keys.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[PHP]]&lt;br /&gt;
|https://www.php.net/downloads.php#gpg-8.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | [[Python]] || rowspan=&amp;quot;7&amp;quot; | https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|https://github.com/Yhg1s.gpg&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
|-&lt;br /&gt;
|https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|[[Ubuntu]]&lt;br /&gt;
|https://ubuntu.com/tutorials/how-to-verify-ubuntu#4-retrieve-the-correct-signature-key&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=88</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=88"/>
		<updated>2024-02-04T14:19:37Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлены данные о ключах для Gentoo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей ряда проектов, кроме ссылок непосредственно на ключи, в целях безопасности, даны ссылки на страницы на сайтах этих проектов, содержащих данную информацию, рекомендуется использовать эти ссылки чтобы видеть, что вы скачиваете открытые ключи именно с соответствующих сайтов.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на файлы открытых ключей (при наличии)&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
|Arch Linux&lt;br /&gt;
|https://wiki.archlinux.org/title/Installation_guide#Verify_signature&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Debian]]|| https://ftp-master.debian.org/keys.html&lt;br /&gt;
|&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
|Gentoo&lt;br /&gt;
|https://www.gentoo.org/downloads/signatures/&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Linux Mint&lt;br /&gt;
|https://linuxmint-installation-guide.readthedocs.io/en/latest/verify.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[MariaDB]]&lt;br /&gt;
|&lt;br /&gt;
|https://mariadb.com/kb/en/gpg/&lt;br /&gt;
|-&lt;br /&gt;
|[[Nginx]]&lt;br /&gt;
|http://nginx.org/en/pgp_keys.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[PHP]]&lt;br /&gt;
|https://www.php.net/downloads.php#gpg-8.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|&lt;br /&gt;
* https://github.com/Yhg1s.gpg&lt;br /&gt;
* https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
* https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
* https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
* https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|[[Ubuntu]]&lt;br /&gt;
|https://ubuntu.com/tutorials/how-to-verify-ubuntu#4-retrieve-the-correct-signature-key&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=87</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=87"/>
		<updated>2024-02-04T14:16:33Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлены данные о нескольких ключах&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей ряда проектов, кроме ссылок непосредственно на ключи, в целях безопасности, даны ссылки на страницы на сайтах этих проектов, содержащих данную информацию, рекомендуется использовать эти ссылки чтобы видеть, что вы скачиваете открытые ключи именно с соответствующих сайтов.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на файлы открытых ключей (при наличии)&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
|Arch Linux&lt;br /&gt;
|https://wiki.archlinux.org/title/Installation_guide#Verify_signature&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Debian]]|| https://ftp-master.debian.org/keys.html&lt;br /&gt;
|&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
|Linux Mint&lt;br /&gt;
|https://linuxmint-installation-guide.readthedocs.io/en/latest/verify.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[MariaDB]]&lt;br /&gt;
|&lt;br /&gt;
|https://mariadb.com/kb/en/gpg/&lt;br /&gt;
|-&lt;br /&gt;
|[[Nginx]]&lt;br /&gt;
|http://nginx.org/en/pgp_keys.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[PHP]]&lt;br /&gt;
|https://www.php.net/downloads.php#gpg-8.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|&lt;br /&gt;
* https://github.com/Yhg1s.gpg&lt;br /&gt;
* https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
* https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
* https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
* https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|[[Ubuntu]]&lt;br /&gt;
|https://ubuntu.com/tutorials/how-to-verify-ubuntu#4-retrieve-the-correct-signature-key&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=86</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=86"/>
		<updated>2024-02-04T14:00:04Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлены данные о нескольких ключах&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей ряда проектов, кроме ссылок непосредственно на ключи, в целях безопасности, даны ссылки на страницы на сайтах этих проектов, содержащих данную информацию, рекомендуется использовать эти ссылки чтобы видеть, что вы скачиваете открытые ключи именно с соответствующих сайтов.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на файлы открытых ключей (при наличии)&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
| [[Debian]]|| https://ftp-master.debian.org/keys.html&lt;br /&gt;
|&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
|[[MariaDB]]&lt;br /&gt;
|&lt;br /&gt;
|https://mariadb.com/kb/en/gpg/&lt;br /&gt;
|-&lt;br /&gt;
|[[Nginx]]&lt;br /&gt;
|http://nginx.org/en/pgp_keys.html&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[PHP]]&lt;br /&gt;
|https://www.php.net/downloads.php#gpg-8.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|&lt;br /&gt;
* https://github.com/Yhg1s.gpg&lt;br /&gt;
* https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
* https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
* https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
* https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|[[Ubuntu]]&lt;br /&gt;
|https://ubuntu.com/tutorials/how-to-verify-ubuntu#4-retrieve-the-correct-signature-key&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=85</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=85"/>
		<updated>2024-02-04T09:32:41Z</updated>

		<summary type="html">&lt;p&gt;Editor: изменение формулировок&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей ряда проектов, кроме ссылок непосредственно на ключи, в целях безопасности, даны ссылки на страницы на сайтах этих проектов, содержащих данную информацию, рекомендуется использовать эти ссылки чтобы видеть, что вы скачиваете открытые ключи именно с соответствующих сайтов.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на ключи&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
| [[Debian]]|| https://ftp-master.debian.org/keys.html&lt;br /&gt;
|&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|&lt;br /&gt;
* https://github.com/Yhg1s.gpg&lt;br /&gt;
* https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
* https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
* https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
* https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=84</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=84"/>
		<updated>2024-02-04T09:29:08Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлены категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей, в целях безопасности, ссылки даны не непосредственно на загрузку ключа, а на страницу на сайте проекта, на которой ссылки на данные ключи расположены: чтобы, перед загрузкой, легко было проконтролировать, что ключи загружаются с сайта проекта.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на ключи&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
| [[Debian]]|| https://ftp-master.debian.org/keys.html&lt;br /&gt;
|&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|&lt;br /&gt;
* https://github.com/Yhg1s.gpg&lt;br /&gt;
* https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
* https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
* https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
* https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Категория:Криптография]]&lt;br /&gt;
[[Категория:Безопасность]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=83</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=83"/>
		<updated>2024-02-04T09:27:52Z</updated>

		<summary type="html">&lt;p&gt;Editor: два ключа организованы как список&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей, в целях безопасности, ссылки даны не непосредственно на загрузку ключа, а на страницу на сайте проекта, на которой ссылки на данные ключи расположены: чтобы, перед загрузкой, легко было проконтролировать, что ключи загружаются с сайта проекта.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на ключи&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
| [[Debian]]|| https://ftp-master.debian.org/keys.html&lt;br /&gt;
|&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12.asc&lt;br /&gt;
* https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|&lt;br /&gt;
* https://github.com/Yhg1s.gpg&lt;br /&gt;
* https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
* https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
* https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
* https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=82</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=82"/>
		<updated>2024-02-04T09:26:34Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлены прямые ссылки на ключи&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей, в целях безопасности, ссылки даны не непосредственно на загрузку ключа, а на страницу на сайте проекта, на которой ссылки на данные ключи расположены: чтобы, перед загрузкой, легко было проконтролировать, что ключи загружаются с сайта проекта.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей (или с информацией об отпечатках)&lt;br /&gt;
!Прямые ссылки на ключи&lt;br /&gt;
|-&lt;br /&gt;
|[[Apache|Apache HTTP Server]]&lt;br /&gt;
|https://httpd.apache.org/dev/verification.html&lt;br /&gt;
|https://downloads.apache.org/httpd/KEYS&lt;br /&gt;
|-&lt;br /&gt;
| [[Debian]]|| https://ftp-master.debian.org/keys.html&lt;br /&gt;
|https://ftp-master.debian.org/keys/archive-key-12.asc&amp;lt;nowiki/&amp;gt;https://ftp-master.debian.org/keys/archive-key-12-security.asc&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora]|| https://fedoraproject.org/security&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox]|| https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|http://releases.mozilla.org/pub/firefox/releases/122.0/KEY&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js]|| https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|&lt;br /&gt;
* https://github.com/Yhg1s.gpg&lt;br /&gt;
* https://keybase.io/pablogsal/pgp_keys.asc?fingerprint=a035c8c19219ba821ecea86b64e628f8d684696d&lt;br /&gt;
* https://keybase.io/stevedower/pgp_keys.asc?fingerprint=7ed10b6531d7c8e1bc296021fc624643487034e5&lt;br /&gt;
* https://keybase.io/ambv/pgp_keys.asc?fingerprint=e3ff2839c048b25c084debe9b26995e310250568&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=0d96df4d4110e5c43fbfb17f2d347ea6aa65421d&lt;br /&gt;
* https://keybase.io/nad/pgp_keys.asc?fingerprint=c9b104b3dd3aa72d7ccb1066fb9921286f5e1540&lt;br /&gt;
* https://keybase.io/bp/pgp_keys.asc?fingerprint=c01e1cad5ea2c4f0b8e3571504c367c218add4ff&lt;br /&gt;
|-&lt;br /&gt;
|Ядро Linux&lt;br /&gt;
|https://kernel.org/category/signatures.html&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=81</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=81"/>
		<updated>2024-02-04T08:48:21Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлены ссылки и дополнительная информация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В таблице со списком открытых ключей, в целях безопасности, ссылки даны не непосредственно на загрузку ключа, а на страницу на сайте проекта, на которой ссылки на данные ключи расположены: чтобы, перед загрузкой, легко было проконтролировать, что ключи загружаются с сайта проекта.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Список открытых ключей&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей&lt;br /&gt;
|-&lt;br /&gt;
| [[Debian]] || https://ftp-master.debian.org/keys.html&lt;br /&gt;
|-&lt;br /&gt;
| [https://fedoraproject.org/ Fedora] || https://fedoraproject.org/security&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.mozilla.org/ru/firefox/ Firefox] || https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|-&lt;br /&gt;
| [https://nodejs.org/ Node.js] || https://github.com/nodejs/node?tab=readme-ov-file#release-keys&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=80</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=80"/>
		<updated>2024-02-04T02:30:02Z</updated>

		<summary type="html">&lt;p&gt;Editor: Добавлена ссылка для Debian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Текст подписи&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей&lt;br /&gt;
|-&lt;br /&gt;
| Python || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|-&lt;br /&gt;
| Debian || https://ftp-master.debian.org/keys.html&lt;br /&gt;
|-&lt;br /&gt;
| Fedora || Текст ячейки&lt;br /&gt;
|-&lt;br /&gt;
| Firefox || https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|-&lt;br /&gt;
| Текст ячейки || Текст ячейки&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=79</id>
		<title>Список открытых ключей для проверки подлинности дистрибутивов программного обеспечения</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=79"/>
		<updated>2024-02-04T02:28:12Z</updated>

		<summary type="html">&lt;p&gt;Editor: создание заготовки страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Текст подписи&lt;br /&gt;
|-&lt;br /&gt;
! Проект !! Ссылки на страницы загрузки ключей&lt;br /&gt;
|-&lt;br /&gt;
| Python || https://www.python.org/downloads/ (раздел «OpenPGP Public Keys»)&lt;br /&gt;
|-&lt;br /&gt;
| Debian || Текст ячейки&lt;br /&gt;
|-&lt;br /&gt;
| Fedora || Текст ячейки&lt;br /&gt;
|-&lt;br /&gt;
| Firefox || https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/&lt;br /&gt;
|-&lt;br /&gt;
| Текст ячейки || Текст ячейки&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%9F%D1%80%D0%BE_%D0%AD%D0%A6%D0%9F_Browser_plug-in&amp;diff=78</id>
		<title>КриптоПро ЭЦП Browser plug-in</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%9F%D1%80%D0%BE_%D0%AD%D0%A6%D0%9F_Browser_plug-in&amp;diff=78"/>
		<updated>2024-02-04T02:20:07Z</updated>

		<summary type="html">&lt;p&gt;Editor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;КриптоПро ЭЦП Browser plug-in — плагин для браузера, предназначенный для взаимодействия с криптопровайдером (например, приложением [[КриптоПро CSP]]). Для работы криптографических функций в браузере также может потребоваться установка расширения, работающего с данным плагином. Таким образом, данный плагин является связующим звеном между КриптоПро CSP и расширением браузера для работы с КриптоПро.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.cryptopro.ru/products/cades/plugin КриптоПро ЭЦП Browser plug-in] (страница продукта на сайте Крипто Про)&lt;br /&gt;
&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=77</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=77"/>
		<updated>2024-02-03T18:33:48Z</updated>

		<summary type="html">&lt;p&gt;Editor: исправление форматирования&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталляция или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты (примеры подобного известны). Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий кого-либо из множества людей, которые имеют техническую возможность подменить файл тем или иным способом (это может быть администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д.). Ситуацию усугубляет наличие зеркал, которые часто используются для уменьшения нагрузки на основной сайт, переадресация на которые может происходить во время загрузки файлов незаметно для пользователя. Использование защищённого соединения не решает проблемы (например, у зеркала, контролируемого злоумышленниками, будет вполне валидный сертификат для их домена).&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ при помощи электронной подписи. Более того, они позволяют обнаружить ошибки при загрузке (которые возникают гораздо чаще, чем подмена файлов злоумышленниками, хотя последнее, конечно, наносит жертвам намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Использование электронной подписи ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.&lt;br /&gt;
&lt;br /&gt;
Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:&lt;br /&gt;
&lt;br /&gt;
  apt install gnupg&lt;br /&gt;
&lt;br /&gt;
При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):&lt;br /&gt;
&lt;br /&gt;
  apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring&lt;br /&gt;
&lt;br /&gt;
После этого в каталоге /usr/share/keyrings/ появятся новые файлы с открытыми ключами, связанными с рядом проектов.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign. Чтобы её проверить, нужно скачать ещё файл ключа, проверить его подлинность, импортировать его и установить степень доверия к нему. Чтобы было понятнее, рассмотрим это на практическом примере, скачаем и проверим целостность исходных текстов Python. Чтобы выполнить все проверки, вам потребуется своя пара ключей, о том, как её сгенерировать, написано в статье про [[GnuPG]].&lt;br /&gt;
&lt;br /&gt;
Откроем в браузере адрес https://www.python.org/ftp/python/, там найдём подкаталог с последней версией, на момент написания данного материала это 3.12.0, перейдём в него и загрузим оттуда файлы Python-3.12.1.tar.xz (исходные тексты Python), Python-3.12.1.tar.xz.asc (файл подписи). Или можно скачать из командной строки эти файлы командой:&lt;br /&gt;
&lt;br /&gt;
  wget &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz.asc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь мы можем попробовать проверить подлинность файла командой:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify Python-3.12.1.tar.xz.asc&lt;br /&gt;
&lt;br /&gt;
Результат получился такой:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Не могу проверить подпись: No public key&lt;br /&gt;
&lt;br /&gt;
Как видно, проверить подпись не удаётся из-за отсутствия нужного открытого ключа (его идентификатор 7169605F62C751356D054A26A821E680E5FA6305 указан в сообщении об ошибке, которое вывела программа gpg). Ключи для проверки дистрибутивов Python можно скачать на странице https://www.python.org/downloads/ — на странице есть раздел «OpenPGP Public Keys», где мы видим нужный ключ (указан идентификатор ключа, точнее, его последняя часть, которая соответствует идентификатору того ключа, который мы ищем. Скачаем его (его можно загрузить по ссылке https://github.com/Yhg1s.gpg). Откроем в консоли каталог, где был сохранён ключ, и импортируем его базу ключей GnuPG:&lt;br /&gt;
&lt;br /&gt;
  gpg --import Yhg1s.gpg&lt;br /&gt;
&lt;br /&gt;
Если мы повторно выполним команду &amp;lt;code&amp;gt;gpg --verify Python-3.12.1.tar.xz.asc&amp;lt;/code&amp;gt;, то получим уже новый результат, показывающий, что подпись верна, но уверенности в подлинности ещё нет, поскольку у системы нет данных, позволяющих убедиться, что открытый ключ принадлежит владельцу:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg: Внимание: Данный ключ не заверен доверенной подписью!&lt;br /&gt;
  gpg:           Нет указаний на то, что подпись принадлежит владельцу.&lt;br /&gt;
&lt;br /&gt;
Отпечаток первичного ключа: 7169 605F 62C7 5135 6D05  4A26 A821 E680 E5FA 6305&lt;br /&gt;
&lt;br /&gt;
Мы скачали ключ по ссылке с официального сайта, но давайте проявим дополнительную бдительность и посмотрим, каким был файл в прошлом, на web.archive.org: http://web.archive.org/web/20230101004252/https://www.python.org/downloads/ — там мы увидим соответствующую ссылку для скачивания, и, если откроем сохранённую версию ключа, то можем убедиться, что она идентична той, что мы уже скачали, наверное можно уже считать, что мы проявили достаточную осмотрительность и убедились, что ключ подлинный. Поэтому мы можем подписать этот ключ, чтобы в дальнейшем проверка подписи при помощи GnuPG не вызывала ошибок. Для этого в командной строке введём команду:&lt;br /&gt;
&lt;br /&gt;
  gpg --edit-key 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
Увидим приглашение для ввода команд вида gpg&amp;gt; и введём там команду lsign (завершив ввод переводом строки). Эта команда означает, что вы подписываете ключ только для себя, подпись не будет экспортироваться (есть также варианты sign, tsign и т.д., о которых вы можете прочитать в документации), при её выполнении нужно будет дважды подтвердить осуществляемые действия введя «y», после чего можно завершить работу в GnuPG с сохранением командой &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь команда gpg --verify Python-3.12.1.tar.xz.asc покажет нам результат проверки подлинности дистрибутива Python:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: проверка таблицы доверия&lt;br /&gt;
  gpg: marginals needed: 3  completes needed: 1  trust model: pgp&lt;br /&gt;
  gpg: глубина: 0  достоверных:   5  подписанных:   5  доверие: 0-, 0q, 0n, 0m, 0f, 5u&lt;br /&gt;
  gpg: глубина: 1  достоверных:   5  подписанных:   1  доверие: 5-, 0q, 0n, 0m, 0f, 0u&lt;br /&gt;
  gpg: срок следующей проверки таблицы доверия 2024-12-28&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [полное]&lt;br /&gt;
&lt;br /&gt;
Итак, GnuPG сообщила нам: «Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]» — как мы видим, архив подписан одним из участников проекта Python.&lt;br /&gt;
&lt;br /&gt;
Таким образом, резюмируя, чтобы проверить файл, подписанный электронной подписью, нужно скачать дополнительно файл подписи (который будет иметь почти такое же имя, как у основного файла, с дополнительным расширением вида .asc, .sig или .sign) и выполнить команду вида:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify file.asc&lt;br /&gt;
&lt;br /&gt;
Если перед этим был установлен и подписан соответствующий открытый ключ, то программа &amp;lt;code&amp;gt;gpg&amp;lt;/code&amp;gt; сообщит о том, что подпись верна (или о том, что не верна, если файл был повреждён или подменён). Открытые ключи для проверки обычно есть на сайтах разработчиков, могут быть включены в дистрибутивы и т.д. Установка ключа осуществляется командой &amp;lt;code&amp;gt;gpg --import&amp;lt;/code&amp;gt;, а его заверение — командой &amp;lt;code&amp;gt;gpg --edit-key&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
Этот вариант обычно применяется, когда на сервер выкладывается множество вариантов дистрибутива (для разных платформ, для разных языков и т.д.). Вероятно для того, чтобы не создавать множество отдельных файлов с подписями, делается иначе: создаётся файл, который содержит криптографические контрольные суммы (хэши) всех этих файлов, и он один заверяется цифровой подписью. Таким образом, подмена файла точно так же будет обнаружена, но дополнительных файлов получается всего два.&lt;br /&gt;
&lt;br /&gt;
В этом случае нужно скачать, кроме файла программы (образа диска и т.д.) файлы вида SHA512SUM и SHA512SUM.asc (расширение у второго файла может быть также .sig или .sign, а вместо SHA512SUM может быть, например, SHA256SUM) и сначала проверить подлинность файла контрольных сумм (как и в предыдущем рассмотренном варианте):&lt;br /&gt;
&lt;br /&gt;
  gpg --verify SHA512SUM.asc&lt;br /&gt;
&lt;br /&gt;
Если подпись верна, можно проверить контрольную сумму при помощи команды sha512sum (sha256sum и т.д.), проще всего сделать это выполнив команду вида:&lt;br /&gt;
&lt;br /&gt;
  sha512sum --check --ignore-missing SHA512SUM&lt;br /&gt;
&lt;br /&gt;
Ключ --check означает проверку, а ключ --ignore-missing означает, что отсутствующие файлы игнорируются (предполагается, что мы скачали только нужный нам файл из множества вариантов, и нам не нужна информация о том, что отсутствуют другие файлы, упомянутые в SHA512SUM).&lt;br /&gt;
&lt;br /&gt;
Также можно проверить хэш вручную. Для этого можно выполнить команду (filename в данном случае это имя проверяемого файла)&lt;br /&gt;
&lt;br /&gt;
  sha512sum filename&lt;br /&gt;
&lt;br /&gt;
Программа выдаст результат в виде хэша (длинная последовательность латинских букв и цифр) и имени файла, нужно убедиться, что соответствующая строка есть в файле SHA512SUM.&lt;br /&gt;
&lt;br /&gt;
В настоящее время для проверки подлинности распространяемых файлов обычно применяются хэши, вычисленные по алгоритмам SHA-256 и SHA-512 (из семейства алгоритмов SHA-2), они считаются достаточно надёжными, при этом ранее использовались, например, контрольные суммы, вычисленные по алгоритмам MD5 и SHA-1, в дальнейшем, возможно, появятся другие варианты.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
Программное обеспечение может распространяться в виде исходных кодов в репозитории git. При этом в данной системе управления версиями теги и коммиты могут быть подписаны, что позволяет убедиться в подлинности загружаемой программы. Для подписания и проверки подписи также используется приложение GnuPG.&lt;br /&gt;
&lt;br /&gt;
Для проверки коммитов служит команда git verify-commit, для проверки тегов — git verify-tag. Если, допустим, вы клонировали удалённый репозиторий, зашли в получившийся каталог, то можете проверить подлинность последнего коммита при помощи команды вида:&lt;br /&gt;
&lt;br /&gt;
  git verify-commit HEAD&lt;br /&gt;
&lt;br /&gt;
Вместо HEAD может быть идентификатор другого коммита. Однако не все коммиты могут быть подписаны (хотя это и хорошая практика). Иногда подписывают только теги. Тогда команда для проверки подписи будет выглядеть примерно так (предполагается, что нужной версии назначили тег v1.2.3):&lt;br /&gt;
&lt;br /&gt;
  git verify-tag v1.2.3&lt;br /&gt;
&lt;br /&gt;
Конечно для использования исходников следует переключиться на ту же версию (иначе проверка теряет смысл):&lt;br /&gt;
&lt;br /&gt;
  git checkout v1.2.3&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[GnuPG]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=76</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=76"/>
		<updated>2024-02-03T18:32:55Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлен раздел См. также&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталляция или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты (примеры подобного известны). Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий кого-либо из множества людей, которые имеют техническую возможность подменить файл тем или иным способом (это может быть администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д.). Ситуацию усугубляет наличие зеркал, которые часто используются для уменьшения нагрузки на основной сайт, переадресация на которые может происходить во время загрузки файлов незаметно для пользователя. Использование защищённого соединения не решает проблемы (например, у зеркала, контролируемого злоумышленниками, будет вполне валидный сертификат для их домена).&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ при помощи электронной подписи. Более того, они позволяют обнаружить ошибки при загрузке (которые возникают гораздо чаще, чем подмена файлов злоумышленниками, хотя последнее, конечно, наносит жертвам намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Использование электронной подписи ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.&lt;br /&gt;
&lt;br /&gt;
Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:&lt;br /&gt;
&lt;br /&gt;
  apt install gnupg&lt;br /&gt;
&lt;br /&gt;
При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого в каталоге /usr/share/keyrings/ появятся новые файлы с открытыми ключами, связанными с рядом проектов.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign. Чтобы её проверить, нужно скачать ещё файл ключа, проверить его подлинность, импортировать его и установить степень доверия к нему. Чтобы было понятнее, рассмотрим это на практическом примере, скачаем и проверим целостность исходных текстов Python. Чтобы выполнить все проверки, вам потребуется своя пара ключей, о том, как её сгенерировать, написано в статье про [[GnuPG]].&lt;br /&gt;
&lt;br /&gt;
Откроем в браузере адрес https://www.python.org/ftp/python/, там найдём подкаталог с последней версией, на момент написания данного материала это 3.12.0, перейдём в него и загрузим оттуда файлы Python-3.12.1.tar.xz (исходные тексты Python), Python-3.12.1.tar.xz.asc (файл подписи). Или можно скачать из командной строки эти файлы командой:&lt;br /&gt;
&lt;br /&gt;
  wget &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz.asc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь мы можем попробовать проверить подлинность файла командой:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify Python-3.12.1.tar.xz.asc&lt;br /&gt;
&lt;br /&gt;
Результат получился такой:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Не могу проверить подпись: No public key&lt;br /&gt;
&lt;br /&gt;
Как видно, проверить подпись не удаётся из-за отсутствия нужного открытого ключа (его идентификатор 7169605F62C751356D054A26A821E680E5FA6305 указан в сообщении об ошибке, которое вывела программа gpg). Ключи для проверки дистрибутивов Python можно скачать на странице https://www.python.org/downloads/ — на странице есть раздел «OpenPGP Public Keys», где мы видим нужный ключ (указан идентификатор ключа, точнее, его последняя часть, которая соответствует идентификатору того ключа, который мы ищем. Скачаем его (его можно загрузить по ссылке https://github.com/Yhg1s.gpg). Откроем в консоли каталог, где был сохранён ключ, и импортируем его базу ключей GnuPG:&lt;br /&gt;
&lt;br /&gt;
  gpg --import Yhg1s.gpg&lt;br /&gt;
&lt;br /&gt;
Если мы повторно выполним команду &amp;lt;code&amp;gt;gpg --verify Python-3.12.1.tar.xz.asc&amp;lt;/code&amp;gt;, то получим уже новый результат, показывающий, что подпись верна, но уверенности в подлинности ещё нет, поскольку у системы нет данных, позволяющих убедиться, что открытый ключ принадлежит владельцу:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg: Внимание: Данный ключ не заверен доверенной подписью!&lt;br /&gt;
  gpg:           Нет указаний на то, что подпись принадлежит владельцу.&lt;br /&gt;
&lt;br /&gt;
Отпечаток первичного ключа: 7169 605F 62C7 5135 6D05  4A26 A821 E680 E5FA 6305&lt;br /&gt;
&lt;br /&gt;
Мы скачали ключ по ссылке с официального сайта, но давайте проявим дополнительную бдительность и посмотрим, каким был файл в прошлом, на web.archive.org: http://web.archive.org/web/20230101004252/https://www.python.org/downloads/ — там мы увидим соответствующую ссылку для скачивания, и, если откроем сохранённую версию ключа, то можем убедиться, что она идентична той, что мы уже скачали, наверное можно уже считать, что мы проявили достаточную осмотрительность и убедились, что ключ подлинный. Поэтому мы можем подписать этот ключ, чтобы в дальнейшем проверка подписи при помощи GnuPG не вызывала ошибок. Для этого в командной строке введём команду:&lt;br /&gt;
&lt;br /&gt;
  gpg --edit-key 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
Увидим приглашение для ввода команд вида gpg&amp;gt; и введём там команду lsign (завершив ввод переводом строки). Эта команда означает, что вы подписываете ключ только для себя, подпись не будет экспортироваться (есть также варианты sign, tsign и т.д., о которых вы можете прочитать в документации), при её выполнении нужно будет дважды подтвердить осуществляемые действия введя «y», после чего можно завершить работу в GnuPG с сохранением командой &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь команда gpg --verify Python-3.12.1.tar.xz.asc покажет нам результат проверки подлинности дистрибутива Python:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: проверка таблицы доверия&lt;br /&gt;
  gpg: marginals needed: 3  completes needed: 1  trust model: pgp&lt;br /&gt;
  gpg: глубина: 0  достоверных:   5  подписанных:   5  доверие: 0-, 0q, 0n, 0m, 0f, 5u&lt;br /&gt;
  gpg: глубина: 1  достоверных:   5  подписанных:   1  доверие: 5-, 0q, 0n, 0m, 0f, 0u&lt;br /&gt;
  gpg: срок следующей проверки таблицы доверия 2024-12-28&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [полное]&lt;br /&gt;
&lt;br /&gt;
Итак, GnuPG сообщила нам: «Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]» — как мы видим, архив подписан одним из участников проекта Python.&lt;br /&gt;
&lt;br /&gt;
Таким образом, резюмируя, чтобы проверить файл, подписанный электронной подписью, нужно скачать дополнительно файл подписи (который будет иметь почти такое же имя, как у основного файла, с дополнительным расширением вида .asc, .sig или .sign) и выполнить команду вида:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify file.asc&lt;br /&gt;
&lt;br /&gt;
Если перед этим был установлен и подписан соответствующий открытый ключ, то программа &amp;lt;code&amp;gt;gpg&amp;lt;/code&amp;gt; сообщит о том, что подпись верна (или о том, что не верна, если файл был повреждён или подменён). Открытые ключи для проверки обычно есть на сайтах разработчиков, могут быть включены в дистрибутивы и т.д. Установка ключа осуществляется командой &amp;lt;code&amp;gt;gpg --import&amp;lt;/code&amp;gt;, а его заверение — командой &amp;lt;code&amp;gt;gpg --edit-key&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
Этот вариант обычно применяется, когда на сервер выкладывается множество вариантов дистрибутива (для разных платформ, для разных языков и т.д.). Вероятно для того, чтобы не создавать множество отдельных файлов с подписями, делается иначе: создаётся файл, который содержит криптографические контрольные суммы (хэши) всех этих файлов, и он один заверяется цифровой подписью. Таким образом, подмена файла точно так же будет обнаружена, но дополнительных файлов получается всего два.&lt;br /&gt;
&lt;br /&gt;
В этом случае нужно скачать, кроме файла программы (образа диска и т.д.) файлы вида SHA512SUM и SHA512SUM.asc (расширение у второго файла может быть также .sig или .sign, а вместо SHA512SUM может быть, например, SHA256SUM) и сначала проверить подлинность файла контрольных сумм (как и в предыдущем рассмотренном варианте):&lt;br /&gt;
&lt;br /&gt;
  gpg --verify SHA512SUM.asc&lt;br /&gt;
&lt;br /&gt;
Если подпись верна, можно проверить контрольную сумму при помощи команды sha512sum (sha256sum и т.д.), проще всего сделать это выполнив команду вида:&lt;br /&gt;
&lt;br /&gt;
  sha512sum --check --ignore-missing SHA512SUM&lt;br /&gt;
&lt;br /&gt;
Ключ --check означает проверку, а ключ --ignore-missing означает, что отсутствующие файлы игнорируются (предполагается, что мы скачали только нужный нам файл из множества вариантов, и нам не нужна информация о том, что отсутствуют другие файлы, упомянутые в SHA512SUM).&lt;br /&gt;
&lt;br /&gt;
Также можно проверить хэш вручную. Для этого можно выполнить команду (filename в данном случае это имя проверяемого файла)&lt;br /&gt;
&lt;br /&gt;
  sha512sum filename&lt;br /&gt;
&lt;br /&gt;
Программа выдаст результат в виде хэша (длинная последовательность латинских букв и цифр) и имени файла, нужно убедиться, что соответствующая строка есть в файле SHA512SUM.&lt;br /&gt;
&lt;br /&gt;
В настоящее время для проверки подлинности распространяемых файлов обычно применяются хэши, вычисленные по алгоритмам SHA-256 и SHA-512 (из семейства алгоритмов SHA-2), они считаются достаточно надёжными, при этом ранее использовались, например, контрольные суммы, вычисленные по алгоритмам MD5 и SHA-1, в дальнейшем, возможно, появятся другие варианты.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
Программное обеспечение может распространяться в виде исходных кодов в репозитории git. При этом в данной системе управления версиями теги и коммиты могут быть подписаны, что позволяет убедиться в подлинности загружаемой программы. Для подписания и проверки подписи также используется приложение GnuPG.&lt;br /&gt;
&lt;br /&gt;
Для проверки коммитов служит команда git verify-commit, для проверки тегов — git verify-tag. Если, допустим, вы клонировали удалённый репозиторий, зашли в получившийся каталог, то можете проверить подлинность последнего коммита при помощи команды вида:&lt;br /&gt;
&lt;br /&gt;
  git verify-commit HEAD&lt;br /&gt;
&lt;br /&gt;
Вместо HEAD может быть идентификатор другого коммита. Однако не все коммиты могут быть подписаны (хотя это и хорошая практика). Иногда подписывают только теги. Тогда команда для проверки подписи будет выглядеть примерно так (предполагается, что нужной версии назначили тег v1.2.3):&lt;br /&gt;
&lt;br /&gt;
  git verify-tag v1.2.3&lt;br /&gt;
&lt;br /&gt;
Конечно для использования исходников следует переключиться на ту же версию (иначе проверка теряет смысл):&lt;br /&gt;
&lt;br /&gt;
  git checkout v1.2.3&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[GnuPG]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=75</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=75"/>
		<updated>2024-02-03T18:26:10Z</updated>

		<summary type="html">&lt;p&gt;Editor: /* Проверка подлинности коммита в репозитории git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталляция или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты (примеры подобного известны). Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий кого-либо из множества людей, которые имеют техническую возможность подменить файл тем или иным способом (это может быть администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д.). Ситуацию усугубляет наличие зеркал, которые часто используются для уменьшения нагрузки на основной сайт, переадресация на которые может происходить во время загрузки файлов незаметно для пользователя. Использование защищённого соединения не решает проблемы (например, у зеркала, контролируемого злоумышленниками, будет вполне валидный сертификат для их домена).&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ при помощи электронной подписи. Более того, они позволяют обнаружить ошибки при загрузке (которые возникают гораздо чаще, чем подмена файлов злоумышленниками, хотя последнее, конечно, наносит жертвам намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Использование электронной подписи ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.&lt;br /&gt;
&lt;br /&gt;
Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:&lt;br /&gt;
&lt;br /&gt;
  apt install gnupg&lt;br /&gt;
&lt;br /&gt;
При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого в каталоге /usr/share/keyrings/ появятся новые файлы с открытыми ключами, связанными с рядом проектов.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign. Чтобы её проверить, нужно скачать ещё файл ключа, проверить его подлинность, импортировать его и установить степень доверия к нему. Чтобы было понятнее, рассмотрим это на практическом примере, скачаем и проверим целостность исходных текстов Python. Чтобы выполнить все проверки, вам потребуется своя пара ключей, о том, как её сгенерировать, написано в статье про [[GnuPG]].&lt;br /&gt;
&lt;br /&gt;
Откроем в браузере адрес https://www.python.org/ftp/python/, там найдём подкаталог с последней версией, на момент написания данного материала это 3.12.0, перейдём в него и загрузим оттуда файлы Python-3.12.1.tar.xz (исходные тексты Python), Python-3.12.1.tar.xz.asc (файл подписи). Или можно скачать из командной строки эти файлы командой:&lt;br /&gt;
&lt;br /&gt;
  wget &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz.asc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь мы можем попробовать проверить подлинность файла командой:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify Python-3.12.1.tar.xz.asc&lt;br /&gt;
&lt;br /&gt;
Результат получился такой:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Не могу проверить подпись: No public key&lt;br /&gt;
&lt;br /&gt;
Как видно, проверить подпись не удаётся из-за отсутствия нужного открытого ключа (его идентификатор 7169605F62C751356D054A26A821E680E5FA6305 указан в сообщении об ошибке, которое вывела программа gpg). Ключи для проверки дистрибутивов Python можно скачать на странице https://www.python.org/downloads/ — на странице есть раздел «OpenPGP Public Keys», где мы видим нужный ключ (указан идентификатор ключа, точнее, его последняя часть, которая соответствует идентификатору того ключа, который мы ищем. Скачаем его (его можно загрузить по ссылке https://github.com/Yhg1s.gpg). Откроем в консоли каталог, где был сохранён ключ, и импортируем его базу ключей GnuPG:&lt;br /&gt;
&lt;br /&gt;
  gpg --import Yhg1s.gpg&lt;br /&gt;
&lt;br /&gt;
Если мы повторно выполним команду &amp;lt;code&amp;gt;gpg --verify Python-3.12.1.tar.xz.asc&amp;lt;/code&amp;gt;, то получим уже новый результат, показывающий, что подпись верна, но уверенности в подлинности ещё нет, поскольку у системы нет данных, позволяющих убедиться, что открытый ключ принадлежит владельцу:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg: Внимание: Данный ключ не заверен доверенной подписью!&lt;br /&gt;
  gpg:           Нет указаний на то, что подпись принадлежит владельцу.&lt;br /&gt;
&lt;br /&gt;
Отпечаток первичного ключа: 7169 605F 62C7 5135 6D05  4A26 A821 E680 E5FA 6305&lt;br /&gt;
&lt;br /&gt;
Мы скачали ключ по ссылке с официального сайта, но давайте проявим дополнительную бдительность и посмотрим, каким был файл в прошлом, на web.archive.org: http://web.archive.org/web/20230101004252/https://www.python.org/downloads/ — там мы увидим соответствующую ссылку для скачивания, и, если откроем сохранённую версию ключа, то можем убедиться, что она идентична той, что мы уже скачали, наверное можно уже считать, что мы проявили достаточную осмотрительность и убедились, что ключ подлинный. Поэтому мы можем подписать этот ключ, чтобы в дальнейшем проверка подписи при помощи GnuPG не вызывала ошибок. Для этого в командной строке введём команду:&lt;br /&gt;
&lt;br /&gt;
  gpg --edit-key 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
Увидим приглашение для ввода команд вида gpg&amp;gt; и введём там команду lsign (завершив ввод переводом строки). Эта команда означает, что вы подписываете ключ только для себя, подпись не будет экспортироваться (есть также варианты sign, tsign и т.д., о которых вы можете прочитать в документации), при её выполнении нужно будет дважды подтвердить осуществляемые действия введя «y», после чего можно завершить работу в GnuPG с сохранением командой &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь команда gpg --verify Python-3.12.1.tar.xz.asc покажет нам результат проверки подлинности дистрибутива Python:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: проверка таблицы доверия&lt;br /&gt;
  gpg: marginals needed: 3  completes needed: 1  trust model: pgp&lt;br /&gt;
  gpg: глубина: 0  достоверных:   5  подписанных:   5  доверие: 0-, 0q, 0n, 0m, 0f, 5u&lt;br /&gt;
  gpg: глубина: 1  достоверных:   5  подписанных:   1  доверие: 5-, 0q, 0n, 0m, 0f, 0u&lt;br /&gt;
  gpg: срок следующей проверки таблицы доверия 2024-12-28&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [полное]&lt;br /&gt;
&lt;br /&gt;
Итак, GnuPG сообщила нам: «Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]» — как мы видим, архив подписан одним из участников проекта Python.&lt;br /&gt;
&lt;br /&gt;
Таким образом, резюмируя, чтобы проверить файл, подписанный электронной подписью, нужно скачать дополнительно файл подписи (который будет иметь почти такое же имя, как у основного файла, с дополнительным расширением вида .asc, .sig или .sign) и выполнить команду вида:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify file.asc&lt;br /&gt;
&lt;br /&gt;
Если перед этим был установлен и подписан соответствующий открытый ключ, то программа &amp;lt;code&amp;gt;gpg&amp;lt;/code&amp;gt; сообщит о том, что подпись верна (или о том, что не верна, если файл был повреждён или подменён). Открытые ключи для проверки обычно есть на сайтах разработчиков, могут быть включены в дистрибутивы и т.д. Установка ключа осуществляется командой &amp;lt;code&amp;gt;gpg --import&amp;lt;/code&amp;gt;, а его заверение — командой &amp;lt;code&amp;gt;gpg --edit-key&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
Этот вариант обычно применяется, когда на сервер выкладывается множество вариантов дистрибутива (для разных платформ, для разных языков и т.д.). Вероятно для того, чтобы не создавать множество отдельных файлов с подписями, делается иначе: создаётся файл, который содержит криптографические контрольные суммы (хэши) всех этих файлов, и он один заверяется цифровой подписью. Таким образом, подмена файла точно так же будет обнаружена, но дополнительных файлов получается всего два.&lt;br /&gt;
&lt;br /&gt;
В этом случае нужно скачать, кроме файла программы (образа диска и т.д.) файлы вида SHA512SUM и SHA512SUM.asc (расширение у второго файла может быть также .sig или .sign, а вместо SHA512SUM может быть, например, SHA256SUM) и сначала проверить подлинность файла контрольных сумм (как и в предыдущем рассмотренном варианте):&lt;br /&gt;
&lt;br /&gt;
  gpg --verify SHA512SUM.asc&lt;br /&gt;
&lt;br /&gt;
Если подпись верна, можно проверить контрольную сумму при помощи команды sha512sum (sha256sum и т.д.), проще всего сделать это выполнив команду вида:&lt;br /&gt;
&lt;br /&gt;
  sha512sum --check --ignore-missing SHA512SUM&lt;br /&gt;
&lt;br /&gt;
Ключ --check означает проверку, а ключ --ignore-missing означает, что отсутствующие файлы игнорируются (предполагается, что мы скачали только нужный нам файл из множества вариантов, и нам не нужна информация о том, что отсутствуют другие файлы, упомянутые в SHA512SUM).&lt;br /&gt;
&lt;br /&gt;
Также можно проверить хэш вручную. Для этого можно выполнить команду (filename в данном случае это имя проверяемого файла)&lt;br /&gt;
&lt;br /&gt;
  sha512sum filename&lt;br /&gt;
&lt;br /&gt;
Программа выдаст результат в виде хэша (длинная последовательность латинских букв и цифр) и имени файла, нужно убедиться, что соответствующая строка есть в файле SHA512SUM.&lt;br /&gt;
&lt;br /&gt;
В настоящее время для проверки подлинности распространяемых файлов обычно применяются хэши, вычисленные по алгоритмам SHA-256 и SHA-512 (из семейства алгоритмов SHA-2), они считаются достаточно надёжными, при этом ранее использовались, например, контрольные суммы, вычисленные по алгоритмам MD5 и SHA-1, в дальнейшем, возможно, появятся другие варианты.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
Программное обеспечение может распространяться в виде исходных кодов в репозитории git. При этом в данной системе управления версиями теги и коммиты могут быть подписаны, что позволяет убедиться в подлинности загружаемой программы. Для подписания и проверки подписи также используется приложение GnuPG.&lt;br /&gt;
&lt;br /&gt;
Для проверки коммитов служит команда git verify-commit, для проверки тегов — git verify-tag. Если, допустим, вы клонировали удалённый репозиторий, зашли в получившийся каталог, то можете проверить подлинность последнего коммита при помощи команды вида:&lt;br /&gt;
&lt;br /&gt;
  git verify-commit HEAD&lt;br /&gt;
&lt;br /&gt;
Вместо HEAD может быть идентификатор другого коммита. Однако не все коммиты могут быть подписаны (хотя это и хорошая практика). Иногда подписывают только теги. Тогда команда для проверки подписи будет выглядеть примерно так (предполагается, что нужной версии назначили тег v1.2.3):&lt;br /&gt;
&lt;br /&gt;
  git verify-tag v1.2.3&lt;br /&gt;
&lt;br /&gt;
Конечно для использования исходников следует переключиться на ту же версию (иначе проверка теряет смысл):&lt;br /&gt;
&lt;br /&gt;
  git checkout v1.2.3&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=74</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=74"/>
		<updated>2024-02-03T18:03:37Z</updated>

		<summary type="html">&lt;p&gt;Editor: /* Проверка подлинности при помощи подписанных файлов контрольных сумм */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталляция или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты (примеры подобного известны). Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий кого-либо из множества людей, которые имеют техническую возможность подменить файл тем или иным способом (это может быть администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д.). Ситуацию усугубляет наличие зеркал, которые часто используются для уменьшения нагрузки на основной сайт, переадресация на которые может происходить во время загрузки файлов незаметно для пользователя. Использование защищённого соединения не решает проблемы (например, у зеркала, контролируемого злоумышленниками, будет вполне валидный сертификат для их домена).&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ при помощи электронной подписи. Более того, они позволяют обнаружить ошибки при загрузке (которые возникают гораздо чаще, чем подмена файлов злоумышленниками, хотя последнее, конечно, наносит жертвам намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Использование электронной подписи ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.&lt;br /&gt;
&lt;br /&gt;
Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:&lt;br /&gt;
&lt;br /&gt;
  apt install gnupg&lt;br /&gt;
&lt;br /&gt;
При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого в каталоге /usr/share/keyrings/ появятся новые файлы с открытыми ключами, связанными с рядом проектов.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign. Чтобы её проверить, нужно скачать ещё файл ключа, проверить его подлинность, импортировать его и установить степень доверия к нему. Чтобы было понятнее, рассмотрим это на практическом примере, скачаем и проверим целостность исходных текстов Python. Чтобы выполнить все проверки, вам потребуется своя пара ключей, о том, как её сгенерировать, написано в статье про [[GnuPG]].&lt;br /&gt;
&lt;br /&gt;
Откроем в браузере адрес https://www.python.org/ftp/python/, там найдём подкаталог с последней версией, на момент написания данного материала это 3.12.0, перейдём в него и загрузим оттуда файлы Python-3.12.1.tar.xz (исходные тексты Python), Python-3.12.1.tar.xz.asc (файл подписи). Или можно скачать из командной строки эти файлы командой:&lt;br /&gt;
&lt;br /&gt;
  wget &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz.asc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь мы можем попробовать проверить подлинность файла командой:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify Python-3.12.1.tar.xz.asc&lt;br /&gt;
&lt;br /&gt;
Результат получился такой:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Не могу проверить подпись: No public key&lt;br /&gt;
&lt;br /&gt;
Как видно, проверить подпись не удаётся из-за отсутствия нужного открытого ключа (его идентификатор 7169605F62C751356D054A26A821E680E5FA6305 указан в сообщении об ошибке, которое вывела программа gpg). Ключи для проверки дистрибутивов Python можно скачать на странице https://www.python.org/downloads/ — на странице есть раздел «OpenPGP Public Keys», где мы видим нужный ключ (указан идентификатор ключа, точнее, его последняя часть, которая соответствует идентификатору того ключа, который мы ищем. Скачаем его (его можно загрузить по ссылке https://github.com/Yhg1s.gpg). Откроем в консоли каталог, где был сохранён ключ, и импортируем его базу ключей GnuPG:&lt;br /&gt;
&lt;br /&gt;
  gpg --import Yhg1s.gpg&lt;br /&gt;
&lt;br /&gt;
Если мы повторно выполним команду &amp;lt;code&amp;gt;gpg --verify Python-3.12.1.tar.xz.asc&amp;lt;/code&amp;gt;, то получим уже новый результат, показывающий, что подпись верна, но уверенности в подлинности ещё нет, поскольку у системы нет данных, позволяющих убедиться, что открытый ключ принадлежит владельцу:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg: Внимание: Данный ключ не заверен доверенной подписью!&lt;br /&gt;
  gpg:           Нет указаний на то, что подпись принадлежит владельцу.&lt;br /&gt;
&lt;br /&gt;
Отпечаток первичного ключа: 7169 605F 62C7 5135 6D05  4A26 A821 E680 E5FA 6305&lt;br /&gt;
&lt;br /&gt;
Мы скачали ключ по ссылке с официального сайта, но давайте проявим дополнительную бдительность и посмотрим, каким был файл в прошлом, на web.archive.org: http://web.archive.org/web/20230101004252/https://www.python.org/downloads/ — там мы увидим соответствующую ссылку для скачивания, и, если откроем сохранённую версию ключа, то можем убедиться, что она идентична той, что мы уже скачали, наверное можно уже считать, что мы проявили достаточную осмотрительность и убедились, что ключ подлинный. Поэтому мы можем подписать этот ключ, чтобы в дальнейшем проверка подписи при помощи GnuPG не вызывала ошибок. Для этого в командной строке введём команду:&lt;br /&gt;
&lt;br /&gt;
  gpg --edit-key 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
Увидим приглашение для ввода команд вида gpg&amp;gt; и введём там команду lsign (завершив ввод переводом строки). Эта команда означает, что вы подписываете ключ только для себя, подпись не будет экспортироваться (есть также варианты sign, tsign и т.д., о которых вы можете прочитать в документации), при её выполнении нужно будет дважды подтвердить осуществляемые действия введя «y», после чего можно завершить работу в GnuPG с сохранением командой &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь команда gpg --verify Python-3.12.1.tar.xz.asc покажет нам результат проверки подлинности дистрибутива Python:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: проверка таблицы доверия&lt;br /&gt;
  gpg: marginals needed: 3  completes needed: 1  trust model: pgp&lt;br /&gt;
  gpg: глубина: 0  достоверных:   5  подписанных:   5  доверие: 0-, 0q, 0n, 0m, 0f, 5u&lt;br /&gt;
  gpg: глубина: 1  достоверных:   5  подписанных:   1  доверие: 5-, 0q, 0n, 0m, 0f, 0u&lt;br /&gt;
  gpg: срок следующей проверки таблицы доверия 2024-12-28&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [полное]&lt;br /&gt;
&lt;br /&gt;
Итак, GnuPG сообщила нам: «Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]» — как мы видим, архив подписан одним из участников проекта Python.&lt;br /&gt;
&lt;br /&gt;
Таким образом, резюмируя, чтобы проверить файл, подписанный электронной подписью, нужно скачать дополнительно файл подписи (который будет иметь почти такое же имя, как у основного файла, с дополнительным расширением вида .asc, .sig или .sign) и выполнить команду вида:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify file.asc&lt;br /&gt;
&lt;br /&gt;
Если перед этим был установлен и подписан соответствующий открытый ключ, то программа &amp;lt;code&amp;gt;gpg&amp;lt;/code&amp;gt; сообщит о том, что подпись верна (или о том, что не верна, если файл был повреждён или подменён). Открытые ключи для проверки обычно есть на сайтах разработчиков, могут быть включены в дистрибутивы и т.д. Установка ключа осуществляется командой &amp;lt;code&amp;gt;gpg --import&amp;lt;/code&amp;gt;, а его заверение — командой &amp;lt;code&amp;gt;gpg --edit-key&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
Этот вариант обычно применяется, когда на сервер выкладывается множество вариантов дистрибутива (для разных платформ, для разных языков и т.д.). Вероятно для того, чтобы не создавать множество отдельных файлов с подписями, делается иначе: создаётся файл, который содержит криптографические контрольные суммы (хэши) всех этих файлов, и он один заверяется цифровой подписью. Таким образом, подмена файла точно так же будет обнаружена, но дополнительных файлов получается всего два.&lt;br /&gt;
&lt;br /&gt;
В этом случае нужно скачать, кроме файла программы (образа диска и т.д.) файлы вида SHA512SUM и SHA512SUM.asc (расширение у второго файла может быть также .sig или .sign, а вместо SHA512SUM может быть, например, SHA256SUM) и сначала проверить подлинность файла контрольных сумм (как и в предыдущем рассмотренном варианте):&lt;br /&gt;
&lt;br /&gt;
  gpg --verify SHA512SUM.asc&lt;br /&gt;
&lt;br /&gt;
Если подпись верна, можно проверить контрольную сумму при помощи команды sha512sum (sha256sum и т.д.), проще всего сделать это выполнив команду вида:&lt;br /&gt;
&lt;br /&gt;
  sha512sum --check --ignore-missing SHA512SUM&lt;br /&gt;
&lt;br /&gt;
Ключ --check означает проверку, а ключ --ignore-missing означает, что отсутствующие файлы игнорируются (предполагается, что мы скачали только нужный нам файл из множества вариантов, и нам не нужна информация о том, что отсутствуют другие файлы, упомянутые в SHA512SUM).&lt;br /&gt;
&lt;br /&gt;
Также можно проверить хэш вручную. Для этого можно выполнить команду (filename в данном случае это имя проверяемого файла)&lt;br /&gt;
&lt;br /&gt;
  sha512sum filename&lt;br /&gt;
&lt;br /&gt;
Программа выдаст результат в виде хэша (длинная последовательность латинских букв и цифр) и имени файла, нужно убедиться, что соответствующая строка есть в файле SHA512SUM.&lt;br /&gt;
&lt;br /&gt;
В настоящее время для проверки подлинности распространяемых файлов обычно применяются хэши, вычисленные по алгоритмам SHA-256 и SHA-512 (из семейства алгоритмов SHA-2), они считаются достаточно надёжными, при этом ранее использовались, например, контрольные суммы, вычисленные по алгоритмам MD5 и SHA-1, в дальнейшем, возможно, появятся другие варианты.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=73</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=73"/>
		<updated>2024-02-03T17:19:01Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлена информация про проверку при помощи файлов вида SHA512SUM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталляция или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты (примеры подобного известны). Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий кого-либо из множества людей, которые имеют техническую возможность подменить файл тем или иным способом (это может быть администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д.). Ситуацию усугубляет наличие зеркал, которые часто используются для уменьшения нагрузки на основной сайт, переадресация на которые может происходить во время загрузки файлов незаметно для пользователя. Использование защищённого соединения не решает проблемы (например, у зеркала, контролируемого злоумышленниками, будет вполне валидный сертификат для их домена).&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ при помощи электронной подписи. Более того, они позволяют обнаружить ошибки при загрузке (которые возникают гораздо чаще, чем подмена файлов злоумышленниками, хотя последнее, конечно, наносит жертвам намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Использование электронной подписи ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.&lt;br /&gt;
&lt;br /&gt;
Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:&lt;br /&gt;
&lt;br /&gt;
  apt install gnupg&lt;br /&gt;
&lt;br /&gt;
При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого в каталоге /usr/share/keyrings/ появятся новые файлы с открытыми ключами, связанными с рядом проектов.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign. Чтобы её проверить, нужно скачать ещё файл ключа, проверить его подлинность, импортировать его и установить степень доверия к нему. Чтобы было понятнее, рассмотрим это на практическом примере, скачаем и проверим целостность исходных текстов Python. Чтобы выполнить все проверки, вам потребуется своя пара ключей, о том, как её сгенерировать, написано в статье про [[GnuPG]].&lt;br /&gt;
&lt;br /&gt;
Откроем в браузере адрес https://www.python.org/ftp/python/, там найдём подкаталог с последней версией, на момент написания данного материала это 3.12.0, перейдём в него и загрузим оттуда файлы Python-3.12.1.tar.xz (исходные тексты Python), Python-3.12.1.tar.xz.asc (файл подписи). Или можно скачать из командной строки эти файлы командой:&lt;br /&gt;
&lt;br /&gt;
  wget &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz.asc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь мы можем попробовать проверить подлинность файла командой:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify Python-3.12.1.tar.xz.asc&lt;br /&gt;
&lt;br /&gt;
Результат получился такой:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Не могу проверить подпись: No public key&lt;br /&gt;
&lt;br /&gt;
Как видно, проверить подпись не удаётся из-за отсутствия нужного открытого ключа (его идентификатор 7169605F62C751356D054A26A821E680E5FA6305 указан в сообщении об ошибке, которое вывела программа gpg). Ключи для проверки дистрибутивов Python можно скачать на странице https://www.python.org/downloads/ — на странице есть раздел «OpenPGP Public Keys», где мы видим нужный ключ (указан идентификатор ключа, точнее, его последняя часть, которая соответствует идентификатору того ключа, который мы ищем. Скачаем его (его можно загрузить по ссылке https://github.com/Yhg1s.gpg). Откроем в консоли каталог, где был сохранён ключ, и импортируем его базу ключей GnuPG:&lt;br /&gt;
&lt;br /&gt;
  gpg --import Yhg1s.gpg&lt;br /&gt;
&lt;br /&gt;
Если мы повторно выполним команду &amp;lt;code&amp;gt;gpg --verify Python-3.12.1.tar.xz.asc&amp;lt;/code&amp;gt;, то получим уже новый результат, показывающий, что подпись верна, но уверенности в подлинности ещё нет, поскольку у системы нет данных, позволяющих убедиться, что открытый ключ принадлежит владельцу:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg: Внимание: Данный ключ не заверен доверенной подписью!&lt;br /&gt;
  gpg:           Нет указаний на то, что подпись принадлежит владельцу.&lt;br /&gt;
&lt;br /&gt;
Отпечаток первичного ключа: 7169 605F 62C7 5135 6D05  4A26 A821 E680 E5FA 6305&lt;br /&gt;
&lt;br /&gt;
Мы скачали ключ по ссылке с официального сайта, но давайте проявим дополнительную бдительность и посмотрим, каким был файл в прошлом, на web.archive.org: http://web.archive.org/web/20230101004252/https://www.python.org/downloads/ — там мы увидим соответствующую ссылку для скачивания, и, если откроем сохранённую версию ключа, то можем убедиться, что она идентична той, что мы уже скачали, наверное можно уже считать, что мы проявили достаточную осмотрительность и убедились, что ключ подлинный. Поэтому мы можем подписать этот ключ, чтобы в дальнейшем проверка подписи при помощи GnuPG не вызывала ошибок. Для этого в командной строке введём команду:&lt;br /&gt;
&lt;br /&gt;
  gpg --edit-key 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
Увидим приглашение для ввода команд вида gpg&amp;gt; и введём там команду lsign (завершив ввод переводом строки). Эта команда означает, что вы подписываете ключ только для себя, подпись не будет экспортироваться (есть также варианты sign, tsign и т.д., о которых вы можете прочитать в документации), при её выполнении нужно будет дважды подтвердить осуществляемые действия введя «y», после чего можно завершить работу в GnuPG с сохранением командой &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь команда gpg --verify Python-3.12.1.tar.xz.asc покажет нам результат проверки подлинности дистрибутива Python:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: проверка таблицы доверия&lt;br /&gt;
  gpg: marginals needed: 3  completes needed: 1  trust model: pgp&lt;br /&gt;
  gpg: глубина: 0  достоверных:   5  подписанных:   5  доверие: 0-, 0q, 0n, 0m, 0f, 5u&lt;br /&gt;
  gpg: глубина: 1  достоверных:   5  подписанных:   1  доверие: 5-, 0q, 0n, 0m, 0f, 0u&lt;br /&gt;
  gpg: срок следующей проверки таблицы доверия 2024-12-28&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [полное]&lt;br /&gt;
&lt;br /&gt;
Итак, GnuPG сообщила нам: «Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]» — как мы видим, архив подписан одним из участников проекта Python.&lt;br /&gt;
&lt;br /&gt;
Таким образом, резюмируя, чтобы проверить файл, подписанный электронной подписью, нужно скачать дополнительно файл подписи (который будет иметь почти такое же имя, как у основного файла, с дополнительным расширением вида .asc, .sig или .sign) и выполнить команду вида:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify file.asc&lt;br /&gt;
&lt;br /&gt;
Если перед этим был установлен и подписан соответствующий открытый ключ, то программа &amp;lt;code&amp;gt;gpg&amp;lt;/code&amp;gt; сообщит о том, что подпись верна (или о том, что не верна, если файл был повреждён или подменён). Открытые ключи для проверки обычно есть на сайтах разработчиков, могут быть включены в дистрибутивы и т.д. Установка ключа осуществляется командой &amp;lt;code&amp;gt;gpg --import&amp;lt;/code&amp;gt;, а его заверение — командой &amp;lt;code&amp;gt;gpg --edit-key&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
Иногда подписывается не файл дистрибутива, а файл, содержащий контрольные суммы загружаемых с сервера файлов. Этот вариант обычно применяется, когда на сервер выкладывается множество вариантов дистрибутива (для разных платформ, для разных языков и т.д.). В этом случае нужно скачать, кроме файла программы (образа диска и т.д.) файлы вида SHA512SUM и SHA512SUM.asc (расширение у второго файла может быть также .sig или .sign, а вместо SHA512SUM может быть, например, SHA256SUM) и сначала проверить подлинность файла контрольных сумм (как и в предыдущем рассмотренном варианте):&lt;br /&gt;
&lt;br /&gt;
  gpg --verify SHA512SUM.asc&lt;br /&gt;
&lt;br /&gt;
Если подпись верна, можно проверить контрольную сумму при помощи команды sha512sum (sha256sum и т.д.), проще всего сделать это выполнив команду вида:&lt;br /&gt;
&lt;br /&gt;
  sha512sum --check --ignore-missing SHA512SUM&lt;br /&gt;
&lt;br /&gt;
Ключ --check означает проверку, а ключ --ignore-missing означает, что отсутствующие файлы игнорируются (предполагается, что мы скачали только нужный нам файл из множества вариантов, и нам не нужна информация о том, что отсутствуют другие файлы, упомянутые в SHA512SUM).&lt;br /&gt;
&lt;br /&gt;
Также можно проверить хэш вручную. Для этого можно выполнить команду (filename в данном случае это имя проверяемого файла)&lt;br /&gt;
&lt;br /&gt;
  sha512sum filename&lt;br /&gt;
&lt;br /&gt;
Программа выдаст результат в виде хэша (длинная последовательность латинских букв и цифр) и имени файла, нужно убедиться, что соответствующая строка есть в файле SHA512SUM.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=72</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=72"/>
		<updated>2024-02-03T16:48:54Z</updated>

		<summary type="html">&lt;p&gt;Editor: изменение оформления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталляция или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты (примеры подобного известны). Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий кого-либо из множества людей, которые имеют техническую возможность подменить файл тем или иным способом (это может быть администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д.). Ситуацию усугубляет наличие зеркал, которые часто используются для уменьшения нагрузки на основной сайт, переадресация на которые может происходить во время загрузки файлов незаметно для пользователя. Использование защищённого соединения не решает проблемы (например, у зеркала, контролируемого злоумышленниками, будет вполне валидный сертификат для их домена).&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ при помощи электронной подписи. Более того, они позволяют обнаружить ошибки при загрузке (которые возникают гораздо чаще, чем подмена файлов злоумышленниками, хотя последнее, конечно, наносит жертвам намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Использование электронной подписи ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.&lt;br /&gt;
&lt;br /&gt;
Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install gnupg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого в каталоге /usr/share/keyrings/ появятся новые файлы с открытыми ключами, связанными с рядом проектов.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign. Чтобы её проверить, нужно скачать ещё файл ключа, проверить его подлинность, импортировать его и установить степень доверия к нему. Чтобы было понятнее, рассмотрим это на практическом примере, скачаем и проверим целостность исходных текстов Python. Чтобы выполнить все проверки, вам потребуется своя пара ключей, о том, как её сгенерировать, написано в статье про [[GnuPG]].&lt;br /&gt;
&lt;br /&gt;
Откроем в браузере адрес https://www.python.org/ftp/python/, там найдём подкаталог с последней версией, на момент написания данного материала это 3.12.0, перейдём в него и загрузим оттуда файлы Python-3.12.1.tar.xz (исходные тексты Python), Python-3.12.1.tar.xz.asc (файл подписи). Или можно скачать из командной строки эти файлы командой:&lt;br /&gt;
&lt;br /&gt;
  wget &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz.asc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь мы можем попробовать проверить подлинность файла командой:&lt;br /&gt;
&lt;br /&gt;
  gpg --verify Python-3.12.1.tar.xz.asc&lt;br /&gt;
&lt;br /&gt;
Результат получился такой:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Не могу проверить подпись: No public key&lt;br /&gt;
&lt;br /&gt;
Как видно, проверить подпись не удаётся из-за отсутствия нужного открытого ключа (его идентификатор 7169605F62C751356D054A26A821E680E5FA6305 указан в сообщении об ошибке, которое вывела программа gpg). Ключи для проверки дистрибутивов Python можно скачать на странице https://www.python.org/downloads/ — на странице есть раздел «OpenPGP Public Keys», где мы видим нужный ключ (указан идентификатор ключа, точнее, его последняя часть, которая соответствует идентификатору того ключа, который мы ищем. Скачаем его (его можно загрузить по ссылке https://github.com/Yhg1s.gpg). Откроем в консоли каталог, где был сохранён ключ, и импортируем его базу ключей GnuPG:&lt;br /&gt;
&lt;br /&gt;
  gpg --import Yhg1s.gpg&lt;br /&gt;
&lt;br /&gt;
Если мы повторно выполним команду &amp;lt;code&amp;gt;gpg --verify Python-3.12.1.tar.xz.asc&amp;lt;/code&amp;gt;, то получим уже новый результат, показывающий, что подпись верна, но уверенности в подлинности ещё нет, поскольку у системы нет данных, позволяющих убедиться, что открытый ключ принадлежит владельцу:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
  gpg: Внимание: Данный ключ не заверен доверенной подписью!&lt;br /&gt;
  gpg:           Нет указаний на то, что подпись принадлежит владельцу.&lt;br /&gt;
&lt;br /&gt;
Отпечаток первичного ключа: 7169 605F 62C7 5135 6D05  4A26 A821 E680 E5FA 6305&lt;br /&gt;
&lt;br /&gt;
Мы скачали ключ по ссылке с официального сайта, но давайте проявим дополнительную бдительность и посмотрим, каким был файл в прошлом, на web.archive.org: http://web.archive.org/web/20230101004252/https://www.python.org/downloads/ — там мы увидим соответствующую ссылку для скачивания, и, если откроем сохранённую версию ключа, то можем убедиться, что она идентична той, что мы уже скачали, наверное можно уже считать, что мы проявили достаточную осмотрительность и убедились, что ключ подлинный. Поэтому мы можем подписать этот ключ, чтобы в дальнейшем проверка подписи при помощи GnuPG не вызывала ошибок. Для этого в командной строке введём команду:&lt;br /&gt;
&lt;br /&gt;
  gpg --edit-key 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
Увидим приглашение для ввода команд вида gpg&amp;gt; и введём там команду lsign (завершив ввод переводом строки). Эта команда означает, что вы подписываете ключ только для себя, подпись не будет экспортироваться (есть также варианты sign, tsign и т.д., о которых вы можете прочитать в документации), при её выполнении нужно будет дважды подтвердить осуществляемые действия введя «y», после чего можно завершить работу в GnuPG с сохранением командой &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь команда gpg --verify Python-3.12.1.tar.xz.asc покажет нам результат проверки подлинности дистрибутива Python:&lt;br /&gt;
&lt;br /&gt;
  gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
  gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
  gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
  gpg: проверка таблицы доверия&lt;br /&gt;
  gpg: marginals needed: 3  completes needed: 1  trust model: pgp&lt;br /&gt;
  gpg: глубина: 0  достоверных:   5  подписанных:   5  доверие: 0-, 0q, 0n, 0m, 0f, 5u&lt;br /&gt;
  gpg: глубина: 1  достоверных:   5  подписанных:   1  доверие: 5-, 0q, 0n, 0m, 0f, 0u&lt;br /&gt;
  gpg: срок следующей проверки таблицы доверия 2024-12-28&lt;br /&gt;
  gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [полное]&lt;br /&gt;
  gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [полное]&lt;br /&gt;
&lt;br /&gt;
Итак, GnuPG сообщила нам: «Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]» — как мы видим, архив подписан одним из участников проекта Python.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
Иногда подписывается не файл дистрибутива, а файл, содержащий контрольные суммы загружаемых с сервера файлов. Этот вариант обычно применяется, когда на сервер выкладывается множество вариантов дистрибутива (для разных платформ, для разных языков и т.д.).&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=71</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=71"/>
		<updated>2024-02-03T16:42:36Z</updated>

		<summary type="html">&lt;p&gt;Editor: показана проверка файла при помощи файла с подписью&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталляция или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты (примеры подобного известны). Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий кого-либо из множества людей, которые имеют техническую возможность подменить файл тем или иным способом (это может быть администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д.). Ситуацию усугубляет наличие зеркал, которые часто используются для уменьшения нагрузки на основной сайт, переадресация на которые может происходить во время загрузки файлов незаметно для пользователя. Использование защищённого соединения не решает проблемы (например, у зеркала, контролируемого злоумышленниками, будет вполне валидный сертификат для их домена).&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ при помощи электронной подписи. Более того, они позволяют обнаружить ошибки при загрузке (которые возникают гораздо чаще, чем подмена файлов злоумышленниками, хотя последнее, конечно, наносит жертвам намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Использование электронной подписи ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.&lt;br /&gt;
&lt;br /&gt;
Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install gnupg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого в каталоге /usr/share/keyrings/ появятся новые файлы с открытыми ключами, связанными с рядом проектов.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign. Чтобы её проверить, нужно скачать ещё файл ключа, проверить его подлинность, импортировать его и установить степень доверия к нему. Чтобы было понятнее, рассмотрим это на практическом примере, скачаем и проверим целостность исходных текстов Python. Чтобы выполнить все проверки, вам потребуется своя пара ключей, о том, как её сгенерировать, написано в статье про [[GnuPG]].&lt;br /&gt;
&lt;br /&gt;
Откроем в браузере адрес https://www.python.org/ftp/python/, там найдём подкаталог с последней версией, на момент написания данного материала это 3.12.0, перейдём в него и загрузим оттуда файлы Python-3.12.1.tar.xz (исходные тексты Python), Python-3.12.1.tar.xz.asc (файл подписи). Или можно скачать из командной строки эти файлы командой:&lt;br /&gt;
&lt;br /&gt;
wget &#039;&amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz&#039;&amp;lt;/nowiki&amp;gt; &#039;&amp;lt;nowiki&amp;gt;https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz.asc&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь мы можем попробовать проверить подлинность файла командой:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gpg --verify Python-3.12.1.tar.xz.asc&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат получился такой:&lt;br /&gt;
&lt;br /&gt;
gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
&lt;br /&gt;
gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
&lt;br /&gt;
gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
gpg: Не могу проверить подпись: No public key&lt;br /&gt;
&lt;br /&gt;
Как видно, проверить подпись не удаётся из-за отсутствия нужного открытого ключа (его идентификатор 7169605F62C751356D054A26A821E680E5FA6305 указан в сообщении об ошибке, которое вывела программа gpg). Ключи для проверки дистрибутивов Python можно скачать на странице https://www.python.org/downloads/ — на странице есть раздел «OpenPGP Public Keys», где мы видим нужный ключ (указан идентификатор ключа, точнее, его последняя часть, которая соответствует идентификатору того ключа, который мы ищем. Скачаем его (его можно загрузить по ссылке https://github.com/Yhg1s.gpg). Откроем в консоли каталог, где был сохранён ключ, и импортируем его базу ключей GnuPG:&lt;br /&gt;
&lt;br /&gt;
gpg --import Yhg1s.gpg&lt;br /&gt;
&lt;br /&gt;
Если мы повторно выполним команду &amp;lt;code&amp;gt;gpg --verify Python-3.12.1.tar.xz.asc&amp;lt;/code&amp;gt;, то получим уже новый результат, показывающий, что подпись верна, но уверенности в подлинности ещё нет, поскольку у системы нет данных, позволяющих убедиться, что открытый ключ принадлежит владельцу:&lt;br /&gt;
&lt;br /&gt;
gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
&lt;br /&gt;
gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
&lt;br /&gt;
gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
&lt;br /&gt;
gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
&lt;br /&gt;
gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [неизвестно]&lt;br /&gt;
&lt;br /&gt;
gpg: Внимание: Данный ключ не заверен доверенной подписью!&lt;br /&gt;
&lt;br /&gt;
gpg:           Нет указаний на то, что подпись принадлежит владельцу.&lt;br /&gt;
&lt;br /&gt;
Отпечаток первичного ключа: 7169 605F 62C7 5135 6D05  4A26 A821 E680 E5FA 6305&lt;br /&gt;
&lt;br /&gt;
Мы скачали ключ по ссылке с официального сайта, но давайте проявим дополнительную бдительность и посмотрим, каким был файл в прошлом, на web.archive.org: http://web.archive.org/web/20230101004252/https://www.python.org/downloads/ — там мы увидим соответствующую ссылку для скачивания, и, если откроем сохранённую версию ключа, то можем убедиться, что она идентична той, что мы уже скачали, наверное можно уже считать, что мы проявили достаточную осмотрительность и убедились, что ключ подлинный. Поэтому мы можем подписать этот ключ, чтобы в дальнейшем проверка подписи при помощи GnuPG не вызывала ошибок. Для этого в командной строке введём команду:&lt;br /&gt;
&lt;br /&gt;
gpg --edit-key 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
Увидим приглашение для ввода команд вида gpg&amp;gt; и введём там команду lsign (завершив ввод переводом строки). Эта команда означает, что вы подписываете ключ только для себя, подпись не будет экспортироваться (есть также варианты sign, tsign и т.д., о которых вы можете прочитать в документации), при её выполнении нужно будет дважды подтвердить осуществляемые действия введя «y», после чего можно завершить работу в GnuPG с сохранением командой &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь команда gpg --verify Python-3.12.1.tar.xz.asc покажет нам результат проверки подлинности дистрибутива Python:&lt;br /&gt;
&lt;br /&gt;
gpg: предполагается, что подписанные данные находятся в &#039;Python-3.12.1.tar.xz&#039;&lt;br /&gt;
&lt;br /&gt;
gpg: Подпись сделана Пт 08 дек 2023 00:02:02 MSK&lt;br /&gt;
&lt;br /&gt;
gpg:                ключом RSA с идентификатором 7169605F62C751356D054A26A821E680E5FA6305&lt;br /&gt;
&lt;br /&gt;
gpg: проверка таблицы доверия&lt;br /&gt;
&lt;br /&gt;
gpg: marginals needed: 3  completes needed: 1  trust model: pgp&lt;br /&gt;
&lt;br /&gt;
gpg: глубина: 0  достоверных:   5  подписанных:   5  доверие: 0-, 0q, 0n, 0m, 0f, 5u&lt;br /&gt;
&lt;br /&gt;
gpg: глубина: 1  достоверных:   5  подписанных:   1  доверие: 5-, 0q, 0n, 0m, 0f, 0u&lt;br /&gt;
&lt;br /&gt;
gpg: срок следующей проверки таблицы доверия 2024-12-28&lt;br /&gt;
&lt;br /&gt;
gpg: Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]&lt;br /&gt;
&lt;br /&gt;
gpg:                 или &amp;quot;Thomas Wouters &amp;lt;thomas@xs4all.nl&amp;gt;&amp;quot; [полное]&lt;br /&gt;
&lt;br /&gt;
gpg:                 или &amp;quot;Thomas Wouters &amp;lt;twouters@google.com&amp;gt;&amp;quot; [полное]&lt;br /&gt;
&lt;br /&gt;
Итак, GnuPG сообщила нам: «Действительная подпись пользователя &amp;quot;Thomas Wouters &amp;lt;thomas@python.org&amp;gt;&amp;quot; [полное]» — как мы видим, архив подписан одним из участников проекта Python.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
Иногда подписывается не файл дистрибутива, а файл, содержащий контрольные суммы загружаемых с сервера файлов. Этот вариант обычно применяется, когда на сервер выкладывается множество вариантов дистрибутива (для разных платформ, для разных языков и т.д.).&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=70</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=70"/>
		<updated>2024-02-03T14:40:31Z</updated>

		<summary type="html">&lt;p&gt;Editor: изменение формулировок&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталляция или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты (примеры подобного известны). Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий кого-либо из множества людей, которые имеют техническую возможность подменить файл тем или иным способом (это может быть администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д.). Ситуацию усугубляет наличие зеркал, которые часто используются для уменьшения нагрузки на основной сайт, переадресация на которые может происходить во время загрузки файлов незаметно для пользователя. Использование защищённого соединения не решает проблемы (например, у зеркала, контролируемого злоумышленниками, будет вполне валидный сертификат для их домена).&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ при помощи электронной подписи. Более того, они позволяют обнаружить ошибки при загрузке (которые возникают гораздо чаще, чем подмена файлов злоумышленниками, хотя последнее, конечно, наносит жертвам намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Использование электронной подписи ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.&lt;br /&gt;
&lt;br /&gt;
Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install gnupg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
Иногда подписывается не файл дистрибутива, а файл, содержащий контрольные суммы загружаемых с сервера файлов. Этот вариант обычно применяется, когда на сервер выкладывается множество вариантов дистрибутива (для разных платформ, для разных языков и т.д.).&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=69</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=69"/>
		<updated>2024-02-01T21:55:32Z</updated>

		<summary type="html">&lt;p&gt;Editor: /* Проверка подлинности при помощи подписанных файлов контрольных сумм */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталлятор или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты, более того, примеры подобного известны. Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д. Ситуацию усугубляет наличие в некоторых случаях зеркал, перенаправление на которые, для уменьшения трафика основного сервера, может осуществляться автоматически, незаметно для пользователя, при том, что зеркало может находиться в другой стране и управлять им может кто угодно.&lt;br /&gt;
&lt;br /&gt;
Использование защищённого соединения не решает проблемы. Например, у зеркала злоумышленников будет вполне валидный сертификат для их домена, или, например, кто-то, имеющий доступ к инфраструктуре провайдера, может получить контроль над трафиком сайта, используя это, получить TLS-сертификат для него и организовать подмену файлов сайта для всех или некоторых адресов.&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ. Более того, эти способы проверки подлинности ПО позволяют выявить ситуации, когда оно было скопировано не полностью или с ошибками (ситуация наверное более частая, чем попытки подмены файлов, хотя подмены установочных файлов всё же наносят намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Способы проверки ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG. При этом, для проверки дистрибутива необходимо обладать соответствующим открытым ключом, данные ключи обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но проблема тут в том, что , если просто загрузить и установить такой файл, то проверка подлинности может не обнаружить подмену файла, поскольку открытый ключ владельца ключа может быть подменён на сервере вместе с дистрибутивом и подписью. Поэтому к получению ключа стоит отнестись достаточно ответственно.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
Иногда подписывается не файл дистрибутива, а файл, содержащий контрольные суммы загружаемых с сервера файлов. Этот вариант обычно применяется, когда на сервер выкладывается множество вариантов дистрибутива (для разных платформ, для разных языков и т.д.).&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=68</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=68"/>
		<updated>2024-02-01T21:52:36Z</updated>

		<summary type="html">&lt;p&gt;Editor: /* Способы проверки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталлятор или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты, более того, примеры подобного известны. Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д. Ситуацию усугубляет наличие в некоторых случаях зеркал, перенаправление на которые, для уменьшения трафика основного сервера, может осуществляться автоматически, незаметно для пользователя, при том, что зеркало может находиться в другой стране и управлять им может кто угодно.&lt;br /&gt;
&lt;br /&gt;
Использование защищённого соединения не решает проблемы. Например, у зеркала злоумышленников будет вполне валидный сертификат для их домена, или, например, кто-то, имеющий доступ к инфраструктуре провайдера, может получить контроль над трафиком сайта, используя это, получить TLS-сертификат для него и организовать подмену файлов сайта для всех или некоторых адресов.&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ. Более того, эти способы проверки подлинности ПО позволяют выявить ситуации, когда оно было скопировано не полностью или с ошибками (ситуация наверное более частая, чем попытки подмены файлов, хотя подмены установочных файлов всё же наносят намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Способы проверки ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG. При этом, для проверки дистрибутива необходимо обладать соответствующим открытым ключом, данные ключи обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но проблема тут в том, что , если просто загрузить и установить такой файл, то проверка подлинности может не обнаружить подмену файла, поскольку открытый ключ владельца ключа может быть подменён на сервере вместе с дистрибутивом и подписью. Поэтому к получению ключа стоит отнестись достаточно ответственно.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=67</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=67"/>
		<updated>2024-02-01T21:46:56Z</updated>

		<summary type="html">&lt;p&gt;Editor: /* Способы проверки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталлятор или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты, более того, примеры подобного известны. Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д. Ситуацию усугубляет наличие в некоторых случаях зеркал, перенаправление на которые, для уменьшения трафика основного сервера, может осуществляться автоматически, незаметно для пользователя, при том, что зеркало может находиться в другой стране и управлять им может кто угодно.&lt;br /&gt;
&lt;br /&gt;
Использование защищённого соединения не решает проблемы. Например, у зеркала злоумышленников будет вполне валидный сертификат для их домена, или, например, кто-то, имеющий доступ к инфраструктуре провайдера, может получить контроль над трафиком сайта, используя это, получить TLS-сертификат для него и организовать подмену файлов сайта для всех или некоторых адресов.&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ. Более того, эти способы проверки подлинности ПО позволяют выявить ситуации, когда оно было скопировано не полностью или с ошибками (ситуация наверное более частая, чем попытки подмены файлов, хотя подмены установочных файлов всё же наносят намного больший ущерб).&lt;br /&gt;
&lt;br /&gt;
== Способы проверки ==&lt;br /&gt;
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign.&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=66</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=66"/>
		<updated>2024-02-01T21:39:19Z</updated>

		<summary type="html">&lt;p&gt;Editor: Категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталлятор или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты, более того, примеры подобного известны. Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д. Ситуацию усугубляет наличие в некоторых случаях зеркал, перенаправление на которые, для уменьшения трафика основного сервера, может осуществляться автоматически, незаметно для пользователя, при том, что зеркало может находиться в другой стране и управлять им может кто угодно.&lt;br /&gt;
&lt;br /&gt;
Использование защищённого соединения не решает проблемы. Например, у зеркала злоумышленников будет вполне валидный сертификат для их домена, или, например, кто-то, имеющий доступ к инфраструктуре провайдера, может получить контроль над трафиком сайта, используя это, получить TLS-сертификат для него и организовать подмену файлов сайта для всех или некоторых адресов.&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ.&lt;br /&gt;
&lt;br /&gt;
== Способы проверки ==&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;br /&gt;
[[Категория:Безопасность]]&lt;br /&gt;
[[Категория:Криптография]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=65</id>
		<title>Проверка целостности дистрибутивов</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D0%BE%D0%B2&amp;diff=65"/>
		<updated>2024-02-01T21:38:21Z</updated>

		<summary type="html">&lt;p&gt;Editor: Заготовка статьи&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программное обеспечение, загружаемое по сети, в ряде случаев может быть подменено злоумышленниками, поэтому существуют способы убедиться, что была получена подлинная копия файла. В некоторых случаях проверка осуществляется автоматически, но в некоторых случаях её проводят вручную.&lt;br /&gt;
&lt;br /&gt;
== Необходимость проверки ==&lt;br /&gt;
Исходный текст программы, инсталлятор или, например, образ диска дистрибутива, доступные по сети, теоретически могут быть подменены на модифицированные копии, содержащие те или иные вредоносные компоненты, более того, примеры подобного известны. Это может произойти из-за взлома сайта, с которого загружается приложение, а также из-за злонамеренных действий администратора сайта, сотрудника хостинг-провайдера, Интернет-провайдера и т.д. Ситуацию усугубляет наличие в некоторых случаях зеркал, перенаправление на которые, для уменьшения трафика основного сервера, может осуществляться автоматически, незаметно для пользователя, при том, что зеркало может находиться в другой стране и управлять им может кто угодно.&lt;br /&gt;
&lt;br /&gt;
Использование защищённого соединения не решает проблемы. Например, у зеркала злоумышленников будет вполне валидный сертификат для их домена, или, например, кто-то, имеющий доступ к инфраструктуре провайдера, может получить контроль над трафиком сайта, используя это, получить TLS-сертификат для него и организовать подмену файлов сайта для всех или некоторых адресов.&lt;br /&gt;
&lt;br /&gt;
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ.&lt;br /&gt;
&lt;br /&gt;
== Способы проверки ==&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи электронной подписи для файла ===&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности при помощи подписанных файлов контрольных сумм ===&lt;br /&gt;
&lt;br /&gt;
=== Проверка подлинности коммита в репозитории git ===&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
	<entry>
		<id>https://syswiki.ru/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_Debian&amp;diff=64</id>
		<title>Обновление Debian</title>
		<link rel="alternate" type="text/html" href="https://syswiki.ru/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_Debian&amp;diff=64"/>
		<updated>2024-01-29T17:43:05Z</updated>

		<summary type="html">&lt;p&gt;Editor: добавлены contrib non-free для данных о репозиториях Debian 10&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Обновление Debian может проводиться как вручную, так и в автоматическом режиме, последнее справедливо для установки обновлений в рамках одной версии, переход на следующую версию требует ряда предварительных операций (проверки состояния пакетов и настройки на репозиторий нового дистрибутива).&lt;br /&gt;
&lt;br /&gt;
== Обновление в рамках одной версии Debian ==&lt;br /&gt;
&lt;br /&gt;
=== Ручная установка обновлений ===&lt;br /&gt;
Для установки обновлений в Debian необходимо сначала обновить список пакетов командой &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt; и далее выполнить команду &amp;lt;code&amp;gt;apt upgrade&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;apt full-upgrade&amp;lt;/code&amp;gt;. Разница между последними двумя командами в том, что первая из них не удаляет пакеты, даже если это действие необходимо для обновления других пакетов, а вторая осуществляет обновление даже если для этого требуется удалить некоторые пакеты. Как правило, разницы между этими командами нет, и лучше использовать вторую из них, обращая при этом внимание на то, не будет ли удалён какой-либо пакет из тех, которые вам всё же нужны настолько, что вы готовы подождать с обновлением системы. Таким образом, команда для установки обновлений будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt update; apt full-upgrade&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При обновлении программа также запросит подтверждение, для чего нужно нажать Y, если всё в порядке (и N, если предложенный вариант вас не устраивает).&lt;br /&gt;
&lt;br /&gt;
При этом обновления устанавливаются только в рамках одной версии, без дополнительных действий вы не перейдёте на новую версию Debian.&lt;br /&gt;
&lt;br /&gt;
=== Автоматическая установка обновлений ===&lt;br /&gt;
Для автоматической установки обновлений служит приложение UnattendedUpgrades, которое устанавливается следующей командой:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt install unattended-upgrades&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После установки данное приложение нужно настроить. Во-первых, нужно разрешить автоматическую установку обновлений, это делается переконфигурированием пакета при помощи dpkg-reconfigure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dpkg-reconfigure -plow unattended-upgrades&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Будет показан запрос на автоматическую установку обновлений, нужно выбрать вариант, разрешающий её. Далее имеет смысл отредактировать конфигурационный файл &amp;lt;code&amp;gt;/etc/apt/apt.conf.d/50unattended-upgrades&amp;lt;/code&amp;gt;, в котором можно разрешить перезагрузку системы в случае необходимости (например, это нужно при обновлении ядра) и выбрать время, когда это должно происходить, для этого можно установить нужным образом в этом конфигурационном файле опции &amp;lt;code&amp;gt;Unattended-Upgrade::Automatic-Reboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Unattended-Upgrade::Automatic-Reboot-WithUsers&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;Unattended-Upgrade::Automatic-Reboot-Time&amp;lt;/code&amp;gt; (по умолчанию они закомментированы), их назначение понятно из названия:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Unattended-Upgrade::Automatic-Reboot&amp;lt;/code&amp;gt; , если установлен в true, то разрешает автоматическую перезагрузку, если она потребовалась после установки обновлений, в противном случае надо поставить false;&lt;br /&gt;
* &amp;lt;code&amp;gt;Unattended-Upgrade::Automatic-Reboot-WithUsers&amp;lt;/code&amp;gt;, если установлен в true, то разрешает автоматическую перезагрузку даже если в системе работают пользователи;&lt;br /&gt;
* &amp;lt;code&amp;gt;Unattended-Upgrade::Automatic-Reboot-Time&amp;lt;/code&amp;gt; определяет время перезагрузки, например, &amp;quot;02:00&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Более подробно об автоматическом обновлении при помощи UnattendedUpgrades можно прочитать на сайте проекта Debian, на странице https://wiki.debian.org/UnattendedUpgrades.&lt;br /&gt;
&lt;br /&gt;
== Переход на следующую версию Debian ==&lt;br /&gt;
&lt;br /&gt;
=== Подготовка к обновлению ===&lt;br /&gt;
Информация по обновлению Debian на сайте проекта есть, в частности, по адресам https://wiki.debian.org/DebianUpgrade и https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.html. Процедура может несколько отличаться от версии к версии, в частности, могут меняться списки репозиториев и их разделов (например, в Debian 12 в архиве пакетов появился новый компонент, non-free-firmware, для того, чтобы отделить несвободное программное обеспечение от несвободных прошивок для оборудования. Но обычные принципы обновления версии Debian следующие.&lt;br /&gt;
&lt;br /&gt;
Прежде всего необходимо создать резервную копию, чтобы, в случае ошибки при обновлении системы данные с неё не оказались потеряны или недоступны. Далее нужно обновить последние обновления для установленной версии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt update; apt full-upgrade&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее необходимо убедиться, что нет препятствий для обновления системы.&lt;br /&gt;
&lt;br /&gt;
Проверьте, что все установленные пакеты установлены из репозитория Debian (пакеты, установленные из других источников, как минимум могут перестать работать после обновления, или даже помешать обновлению). Проверить пакеты можно следующей командой:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная команда покажет список установленных пакетов, которых нет в репозитории (возможно все пакеты из дистрибутива, и программа не выведет ни одного названия). Будьте осторожны с этим списком, туда могут также попасть пакеты, которые ранее были в репозитории, но теперь в нём отсутствуют, например, старые пакеты с ядром системы. В обычной ситуации пакеты, выведенные командой выше, надо удалить перед обновлением. Также эта команда пригодится после обновления, поскольку после него в системе могут оставаться пакеты из старого дистрибутива, которые стоит удалить.&lt;br /&gt;
&lt;br /&gt;
Далее нужно убедиться, что ни один из пакетов не имеет статус hold (что блокирует автоматическую установку, удаление или обновление пакета). Просмотреть список пакетов со статусом hold можно командой:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt-mark showhold&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если какой-либо пакет имеет данный статус, то снять его можно командой вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt-mark unhold имя_пакета&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее вам нужно изменить файл /etc/apt/sources.list — убрать оттуда (или закомментировать) репозитории старого дистрибутива и добавить репозитории нового. Обновлять Debian следует от версии к версии, не пропуская промежуточные, то есть, например, если вы обновляете версию 10, то лучше обновить систему до версии 11 и, далее, до версии 12. Также следует проверить каталог /etc/apt/sources.list.d/ на отсутствие дополнительных источников пакетов. Список репозиториев для дистрибутивов Debian разных версий может отличаться не только именем дистрибутива. Примеры содержимого файлов /etc/apt/sources.list для ряда версий Debian даны ниже.  &lt;br /&gt;
&lt;br /&gt;
=== Содержимое /etc/apt/sources.list для разных версий Debian ===&lt;br /&gt;
&lt;br /&gt;
==== Debian 10 (buster) ====&lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian/&amp;lt;/nowiki&amp;gt; buster main contrib non-free&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian/&amp;lt;/nowiki&amp;gt; buster main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://security.debian.org/debian-security&amp;lt;/nowiki&amp;gt; buster/updates main contrib non-free&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://security.debian.org/debian-security&amp;lt;/nowiki&amp;gt; buster/updates main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian/&amp;lt;/nowiki&amp;gt; buster-updates main contrib non-free&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian/&amp;lt;/nowiki&amp;gt; buster-updates main contrib non-free&lt;br /&gt;
&lt;br /&gt;
==== Debian 11 (bullseye) ====&lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bullseye main contrib non-free&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bullseye main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bullseye-updates main contrib non-free&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bullseye-updates main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bullseye-backports main contrib non-free&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bullseye-backports main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://security.debian.org/debian-security/&amp;lt;/nowiki&amp;gt; bullseye-security main contrib non-free&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://security.debian.org/debian-security/&amp;lt;/nowiki&amp;gt; bullseye-security main contrib non-free&lt;br /&gt;
&lt;br /&gt;
==== Debian 12 (bookworm) ====&lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bookworm main contrib non-free non-free-firmware&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bookworm main contrib non-free non-free-firmware&lt;br /&gt;
 &lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
 &lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
 &lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://security.debian.org/debian-security/&amp;lt;/nowiki&amp;gt; bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
 deb-src &amp;lt;nowiki&amp;gt;http://security.debian.org/debian-security/&amp;lt;/nowiki&amp;gt; bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
=== Обновление ===&lt;br /&gt;
Обновление лучше вести из текстовой консоли (имеется в виду настоящая текстовая консоль, куда, например, можно попасть при помощи комбинации клавиш перейдя туда комбинацией клавиш Ctrl-Alt-F2), а не эмулятор терминала, запускаемый из графического интерфейса), поскольку в процессе обновления графический интерфейс может зависнуть. Также обычно обновление проходит нормально при подключении через SSH, но, в ответственных случаях, убедитесь, что у вас есть план Б на случай, если обновление через SSH пойдёт не по плану. Для обновления нужно ввести команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt update; apt full-upgrade&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И, как обычно, подтвердить операцию по запросу приложенрия, нажав Y. После того, как пакеты будут обновлены, перезагрузите систему.&lt;br /&gt;
&lt;br /&gt;
После перезагрузки проверьте, не остались ли от старого дистрибутива пакеты, которых уже нет в новом дистрибутиве, командой, которую вы уже использовали ранее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вероятно пакеты из списка, который покажет данная команда, вам не нужны, тогда их стоит удалить.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Debian]]&lt;/div&gt;</summary>
		<author><name>Editor</name></author>
	</entry>
</feed>