Sis admin linux
SSH-доступ с macOS к LXC-контейнеру Proxmox по ключу
Назначение
Инструкция позволяет настроить подключение с Mac к LXC-контейнеру Proxmox по SSH без ввода пароля пользователя root.
Публичный ключ добавляется через консоль Proxmox, поэтому знать или создавать пароль root контейнера для этой настройки не требуется.
Все адреса и идентификаторы приведены для примера. Замените их значениями своей инфраструктуры.
| Параметр | Пример |
|---|---|
| ID контейнера | 123 |
| IP-адрес контейнера | 192.168.2.2 |
| Пользователь SSH | root |
| Клиент | Mac с macOS |
| Тип ключа | Ed25519 |
Перед началом
Для выполнения инструкции необходимы:
- Доступ к терминалу macOS.
- Административный доступ к консоли узла Proxmox, на котором запущен контейнер.
- Установленный и работающий SSH-сервер внутри контейнера.
- Сетевая доступность контейнера с Mac — напрямую через локальную сеть либо через VPN.
SSH-сервер контейнера должен разрешать авторизацию по публичному ключу и вход root по ключу.
1. Создание SSH-ключа на Mac
Открыть приложение Терминал на Mac.
Выполнить:
if [ ! -f ~/.ssh/id_ed25519 ]; then
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
else
echo "SSH-ключ уже существует."
fi
Команда создаёт новый ключ только при отсутствии файла ~/.ssh/id_ed25519. Существующий ключ не перезаписывается.
После создания появляются два файла:
| Файл | Назначение |
|---|---|
~/.ssh/id_ed25519
|
Приватный ключ. Остаётся на Mac и не передаётся другим пользователям. |
~/.ssh/id_ed25519.pub
|
Публичный ключ. Добавляется на сервер, к которому требуется доступ. |
Важно: параметр -N "" создаёт новый ключ без парольной фразы. Получивший этот приватный ключ сможет использовать его для доступа к серверам, на которых разрешён соответствующий публичный ключ.
Если нужна защита ключа парольной фразой, при отсутствии ключа вместо команды выше используйте:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
2. Получение публичного ключа
На Mac выполнить:
cat ~/.ssh/id_ed25519.pub
Скопировать всю строку, начинающуюся с ssh-ed25519.
Ключ нужно копировать целиком, одной строкой.
Не следует копировать:
- Приватный ключ из файла без расширения
.pub. - Отпечаток вида
SHA256:.... - Графический рисунок, показанный при создании ключа.
Если приватный ключ существует, а соответствующий файл .pub отсутствует, публичный ключ можно восстановить на Mac:
ssh-keygen -y -f ~/.ssh/id_ed25519 > ~/.ssh/id_ed25519.pub
3. Вход в контейнер через Proxmox
В веб-интерфейсе Proxmox выбрать узел, на котором запущен контейнер, и открыть его Shell.
Выполнить, заменив 123 фактическим ID контейнера:
pct enter 123
После выполнения команды откроется оболочка контейнера.
Все команды следующего раздела выполняются внутри контейнера от имени root.
4. Добавление публичного ключа
Подготовить каталог:
mkdir -p /root/.ssh
chmod 700 /root/.ssh
В следующей команде заменить ВСТАВЬ_ПУБЛИЧНЫЙ_КЛЮЧ полной строкой публичного ключа с Mac. Одинарные кавычки сохранить:
printf '%s\n' 'ВСТАВЬ_ПУБЛИЧНЫЙ_КЛЮЧ' >> /root/.ssh/authorized_keys
Установить владельца и права:
chown root:root /root/.ssh /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
Оператор >> добавляет ключ в конец файла, сохраняя существующие записи.
Каждый публичный ключ должен занимать отдельную строку. Если файл редактировался вручную, убедитесь, что новый ключ не склеился с предыдущим.
Перезапуск SSH-сервера после добавления ключа не требуется.
5. Проверка ключа сервера
При первом подключении Mac может запросить подтверждение подлинности сервера.
Чтобы проверить отпечаток ключа ED25519, выполнить внутри контейнера через консоль Proxmox:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
Сравнить полученный отпечаток SHA256:... с отпечатком, который покажет Mac при подключении.
Сравнивать нужно ключи одного типа: в данном случае ED25519.
6. Подключение с Mac
В Терминале на Mac выполнить, подставив адрес своего контейнера:
ssh root@192.168.2.2
Если при первом подключении появился запрос доверия к серверу и отпечаток совпадает с проверенным, ввести:
yes
При успешной настройке откроется оболочка контейнера без запроса пароля root.
Для завершения сеанса:
exit
Если ключ защищён парольной фразой
Запрос Enter passphrase for key означает, что macOS просит парольную фразу приватного ключа, а не пароль root контейнера.
Чтобы добавить ключ в SSH-агент и сохранить парольную фразу в связке ключей macOS, выполнить на Mac:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Ввести парольную фразу ключа.
Для её дальнейшего использования можно добавить параметры в файл ~/.ssh/config, как показано в следующем разделе.
Короткая команда подключения
Вместо IP-адреса можно использовать удобное имя, например my-container.
На Mac открыть файл настроек:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config
Добавить отдельный блок. Если блок с таким именем уже есть, изменить его вместо создания дубликата:
Host my-container
HostName 192.168.2.2
User root
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
AddKeysToAgent yes
UseKeychain yes
Сохранить файл в nano:
- Нажать
Control + O. - Нажать
Enter. - Нажать
Control + X.
Установить права:
chmod 600 ~/.ssh/config
Теперь подключаться можно командой:
ssh my-container
Диагностика
Сервер запрашивает пароль root
Это означает, что авторизация по ключу не завершилась успешно.
На Mac явно указать нужный ключ и включить подробный вывод:
ssh -v -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 root@192.168.2.2
Через консоль Proxmox проверить внутри контейнера:
ls -ld /root/.ssh
ls -l /root/.ssh/authorized_keys
Ожидаемые параметры:
| Объект | Права | Владелец |
|---|---|---|
/root/.ssh |
700 — drwx------ |
root |
/root/.ssh/authorized_keys |
600 — -rw------- |
root |
Также проверить:
- В файле записан публичный ключ именно с нужного Mac.
- Ключ не разбит на несколько строк.
- Подключение выполняется к правильному IP-адресу и пользователю.
- SSH-сервер разрешает авторизацию по ключу.
- Вход root по ключу не запрещён настройками SSH.
Соединение отклонено: Connection refused
Проверить правильность адреса, работу SSH-сервера и порт, на котором он принимает подключения.
Сервер не отвечает: Connection timed out
Проверить:
- Запущен ли контейнер.
- Доступна ли его подсеть с Mac.
- Подключён ли нужный VPN.
- Не блокируется ли SSH-порт межсетевым экраном.
Изменился ключ сервера
При предупреждении REMOTE HOST IDENTIFICATION HAS CHANGED сначала проверить причину изменения и новый отпечаток через доверенную консоль Proxmox.
Не удалять сохранённый ключ сервера без проверки: предупреждение может означать как переустановку контейнера, так и подключение к другому устройству.
Итог
После настройки Mac использует приватный ключ для подтверждения доступа, а контейнер проверяет его по публичному ключу из /root/.ssh/authorized_keys.
Настройка сохраняется после перезагрузки Mac и контейнера.
Добавление ключа само по себе не отключает парольную авторизацию SSH. Настройки разрешённых способов входа управляются отдельно.