Подключение к SynapseOS по SSH
Обновлено 14.10.2026
Вход по ключу, проверка отпечатка сервера и передача файлов через SFTP.
Подключим Cloud из терминала Linux-хоста, настроим вход по ключу и передадим файл через SFTP. При запуске в QEMU гостевой порт 22 доступен на хосте как 127.0.0.1:2224.
Это первый урок серии. Во втором передадим Lua-парсер и учебный лог, в третьем добавим расписание.
Запустите гостя с портом SSH
Подготовьте рабочий QCOW2 по инструкции первого запуска. Закройте предыдущую VM, использующую этот диск. На Linux-хосте, в папке disk.qcow2, выполните:
qemu-system-x86_64 \
-machine q35 -cpu max -m 512 -smp 2 \
-drive file=disk.qcow2,format=qcow2,if=virtio \
-netdev user,id=net0,hostfwd=tcp:127.0.0.1:2224-:22 \
-device virtio-net-pci,netdev=net0 \
-display none -serial mon:stdio
Порт открыт только на хосте. Если 2224 занят, выберите другой и замените его во всех командах урока. Для собственной команды QEMU замените строку -netdev, не добавляя второй интерфейс с тем же id.
Проверьте настройки и ключ сервера
В гостевой консоли выполните:
ip addr
cat /etc/settings.ini
dropbearkey -y -f /etc/dropbear/dropbear_ed25519_host_key
В разделе [SSH] проверьте Enabled = 1, имя из Login и Port = 22. Для входа по паролю используется значение Password вашего образа. Не копируйте в публичные материалы весь файл настроек: он может содержать пароль. Изменения, которые читает init, применяются при следующей загрузке.
На Linux-хосте:
ssh -F /dev/null -p 2224 root@127.0.0.1
При первом подключении сравните отпечаток с результатом dropbearkey в гостевой консоли. После совпадения подтвердите ключ и введите пароль. Команда -F /dev/null исключает влияние системного и пользовательского конфига SSH на этот пример.
В SSH-сеансе выполните uname -a. Для завершения сеанса используйте exit.
Добавьте свой публичный ключ
На Linux-хосте создайте отдельную пару ключей. Если файл с этим именем уже существует, используйте его или выберите другое имя; не перезаписывайте нужный ключ.
ssh-keygen -t ed25519 -f ~/.ssh/synapse_tutorial
В гостевой консоли:
mkdir -p /root/.ssh
chmod 700 /root /root/.ssh
На Linux-хосте передайте публичную часть ключа:
cat ~/.ssh/synapse_tutorial.pub | ssh -F /dev/null -p 2224 root@127.0.0.1 'cat >> /root/.ssh/authorized_keys'
Затем в госте:
chmod 600 /root/.ssh/authorized_keys
Перенаправление >> сохраняет прежние ключи. У последней существующей строки должен быть перевод строки. Приватный файл synapse_tutorial остаётся на хосте. Не переносите его в гостевую ОС.
Проверьте вход по ключу на хосте:
ssh -F /dev/null -i ~/.ssh/synapse_tutorial -o IdentitiesOnly=yes \
-o BatchMode=yes -n -p 2224 root@127.0.0.1 'echo KEY_OK'
Результат: KEY_OK. Если ключ защищён парольной фразой, сначала загрузите его в работающий ssh-agent командой ssh-add ~/.ssh/synapse_tutorial. BatchMode=yes не запрашивает ни пароль сервера, ни парольную фразу; -n закрывает stdin для удалённой команды.
Сохраните параметры подключения
В папке на Linux-хосте создайте ssh-synapse.conf:
Host synapse-tutorial
HostName 127.0.0.1
Port 2224
User root
IdentityFile ~/.ssh/synapse_tutorial
IdentitiesOnly yes
Теперь подключение и удалённая команда выглядят так:
ssh -F ./ssh-synapse.conf synapse-tutorial
ssh -F ./ssh-synapse.conf -n synapse-tutorial 'uname -a'
sftp -F ./ssh-synapse.conf synapse-tutorial
Файл конфигурации понадобится в следующем уроке. Для SFTP команда put имя-файла /путь/в/госте передаёт файл, get /путь/в/госте имя-файла скачивает его, bye завершает соединение.