Amnesia VPN Keys: настройка, подключение и безопасность

Подробное руководство по Amnesia VPN keys: как настроить подключение по ключу, сгенерировать Ed25519, решить ошибку 300 и повысить безопасность сервера.

Что такое Amnesia VPN и зачем нужны ключи

Amnesia VPN — это мультипротокольный VPN-клиент с открытым исходным кодом, который позволяет создавать собственные защищённые подключения. Он поддерживает протоколы AmneziaWG, WireGuard, OpenVPN, XRay и другие. Ключи (private key) используются для аутентификации клиента на сервере вместо логина и пароля, что значительно повышает безопасность. При использовании ключей исключается риск перехвата пароля, а также снижается нагрузка на SSH-сервер. В Amnesia VPN ключи могут быть в формате OpenSSH или PPK, но для корректной работы рекомендуется использовать Ed25519.

Как сгенерировать ключ для Amnesia VPN

Для генерации ключа, совместимого с Amnesia VPN, используйте алгоритм EdDSA Ed25519. Это можно сделать через OpenSSH командой ssh-keygen -t ed25519. Если вы используете PuTTYgen, выберите тип ключа EdDSA и длину 255 бит, затем экспортируйте ключ в формат OpenSSH (меню Conversions → Export OpenSSH key). Важно: ключ должен быть в формате OpenSSH, начинаться с -----BEGIN OPENSSH PRIVATE KEY----- и заканчиваться -----END OPENSSH PRIVATE KEY-----. Ключи в формате PPK не поддерживаются Amnesia VPN напрямую.

Настройка подключения через ключ в Amnesia VPN

Чтобы настроить подключение через ключ, откройте конфигурационный файл ~/.config/AmneziaVPN.ORG/AmneziaVPN.conf. Найдите секцию serversList и добавьте поле "privateKey" с полным содержимым закрытого ключа (включая строки BEGIN и END). Пример: "privateKey": "-----BEGIN OPENSSH PRIVATE KEY-----\nваш_ключ\n-----END OPENSSH PRIVATE KEY-----". После этого отключите авторизацию по паролю на сервере: в файле /etc/ssh/sshd_config установите PasswordAuthentication no и PubkeyAuthentication yes. Перезапустите SSH-сервер. Если после этого возникает ошибка 300, проверьте формат ключа и права доступа к файлам.

Решение ошибки 300 при подключении

Ошибка 300 (SSH-запрос отклонён) возникает, когда клиент пытается подключиться по паролю, а сервер требует ключ. Причины: неверный формат ключа, отсутствие поля privateKey в конфиге, или неправильные права на файлы. Убедитесь, что ключ скопирован целиком, включая строки BEGIN/END, и что в конфиге нет лишних пробелов. Также проверьте, что на сервере разрешён вход по ключу для пользователя Amnezia. Если вы используете нестандартный порт SSH, укажите его в конфиге. Рекомендуется сначала настроить подключение на порту 22, а затем менять порт.

Настройка ключа на Android-клиенте

На Android-клиенте Amnesia VPN также можно использовать ключ для аутентификации. Для этого скопируйте полный закрытый ключ (в формате OpenSSH) и вставьте его в поле пароля при добавлении сервера. Убедитесь, что ключ не содержит лишних символов. Если вы используете Amnezia Free или Premium, ключ предоставляется в виде текста vpn://... — его нужно вставить в приложение через кнопку «Вставить». Для self-hosted сервера ключ можно получить в разделе «Поделиться VPN».

Безопасность: почему ключи лучше паролей

Использование ключей вместо паролей значительно повышает безопасность VPN-сервера. Ключи устойчивы к атакам перебора, не передаются по сети и не могут быть перехвачены при MITM-атаке. Кроме того, отключение авторизации по паролю (PasswordAuthentication no) исключает риск компрометации учётных данных. Amnesia VPN также поддерживает KillSwitch, AmneziaDNS и Split-tunneling для дополнительной защиты. После настройки ключей рекомендуется отключить вход по паролю для всех пользователей, включая root.

Особенности self-hosted сервера и права доступа

При использовании self-hosted сервера Amnesia VPN требует root-доступ для создания новых конфигураций. В файле sudoers можно добавить правило %AmneziaUserName% ALL=(ALL) NOPASSWD: ALL, чтобы клиент мог выполнять команды без пароля. Альтернативно, можно добавить пользователя в группу docker, чтобы он мог управлять контейнерами без root. Важно: не отключайте root-доступ полностью, иначе Amnesia не сможет создавать новые конфиги. После настройки ключей проверьте, что сервер может подключаться к контейнеру Amnezia.

Подключение через ключ в виде текста (vpn://)

Amnesia VPN поддерживает подключение через ключ в виде текста, начинающийся с vpn://. Этот ключ можно получить в личном кабинете Amnezia Premium, в Telegram-боте Amnezia Free или в приложении для self-hosted. Чтобы подключиться, откройте приложение, нажмите «+», выберите «Вставить» и вставьте ключ. Приложение автоматически распознает протокол и создаст подключение. Не используйте ключи из публичных источников — они могут быть скомпрометированы. Ключ должен быть скопирован полностью, иначе приложение сообщит об ошибке.

Практические рекомендации и устранение неполадок

Если после настройки ключа подключение не работает, проверьте: 1) формат ключа (только OpenSSH, не PPK); 2) права на файлы конфигурации (должны быть 600); 3) настройки SSH-сервера (PubkeyAuthentication yes, PasswordAuthentication no); 4) не заблокирован ли порт фаерволом. Для диагностики включите логи Amnesia VPN (в настройках приложения). Если ошибка 300 сохраняется, временно включите авторизацию по паролю, проверьте подключение, затем снова отключите. На Android убедитесь, что ключ вставлен именно в поле пароля, а не в поле логина.

Вопросы и ответы

Какой формат ключа поддерживает Amnesia VPN?

Amnesia VPN поддерживает только ключи в формате OpenSSH (начинаются с -----BEGIN OPENSSH PRIVATE KEY-----). Ключи PPK от PuTTY не работают напрямую — их нужно конвертировать через PuTTYgen (Export OpenSSH key). Рекомендуется использовать алгоритм Ed25519.

Что делать, если при подключении возникает ошибка 300?

Ошибка 300 означает, что SSH-запрос был отклонён. Проверьте: 1) ключ скопирован целиком с BEGIN/END строками; 2) в конфиге AmneziaVPN.conf добавлено поле "privateKey"; 3) на сервере отключена авторизация по паролю (PasswordAuthentication no). Также убедитесь, что ключ в формате OpenSSH, а не PPK.

Можно ли использовать Amnesia VPN без пароля, только по ключу?

Да, можно. Для этого нужно сгенерировать ключ Ed25519, добавить его в конфиг клиента и отключить на сервере авторизацию по паролю. Однако Amnesia VPN требует root-доступ для создания конфигов, поэтому не отключайте его полностью — настройте sudoers для пользователя.

Как подключиться к Amnesia VPN через ключ на Android?

На Android откройте приложение Amnesia VPN, нажмите «+», выберите «Вставить» и вставьте ключ в формате vpn://... или полный закрытый ключ OpenSSH в поле пароля. Убедитесь, что ключ скопирован без лишних символов. Если ключ из Amnezia Premium, он уже содержит все необходимые данные.

Где взять ключ для подключения к Amnesia VPN?

Ключ можно получить: для Amnezia Premium — в личном кабинете или в письме после оплаты; для Amnezia Free — в Telegram-боте; для self-hosted — в приложении Amnesia VPN в разделе «Поделиться VPN». Не используйте ключи из публичных источников.

Нужно ли отключать авторизацию по паролю после настройки ключа?

Да, это рекомендуется для повышения безопасности. В файле /etc/ssh/sshd_config установите PasswordAuthentication no и PubkeyAuthentication yes. Перед этим убедитесь, что ключ работает корректно, иначе вы потеряете доступ к серверу.

Что такое AmneziaWG и как он связан с ключами?

AmneziaWG — это форк WireGuard с дополнительной защитой от DPI. Для подключения используются те же ключи, что и для WireGuard. В Amnesia VPN ключи для AmneziaWG можно вставить в виде текста или импортировать конфиг. Ключи генерируются автоматически при создании сервера.