как установить и запустить ssh-сервер в gnu/guix?

вот скачал я qemu-образ gnu/guix, распаковал, запустил с рекомендованным параметром (-nic user,model=virtio-net-pci,hostfwd=tcp::10022-:22), догадался, что можно использовать sudo для административных действий (по умолчанию запускается x-сессия пользователя guest).

а вот как теперь установить и, главное, запустить openssh-сервер, чтобы можно было по протоколу ssh подключиться с хост-машины? по рекомендованной ссылке, честно говоря, ничего не понятно, а система инициализации тут вообще своя собственная: gnu/shepherd.

вроде бы как вся конфигурации системы должна описываться в одном файле — /etc/system.scm, но даже этого файла почему-то нет.


Ответы (1 шт):

Автор решения: aleksandr barakin

да, действительно, вся конфигурация системы может описываться всего одним файлом (на языке scheme). и прямо в этом файле можно дать указание использовать openssh-сервер (он будет и установлен и запущен после применения новой конфигурации). в «образцовом» файле даже упоминание про openssh есть, но оно закомментировано.

узнать месторасположение актуального файла с конфигурацией можно такой командой (приведён пример вывода):

$ guix system describe
Generation 1    Nov 22 2020 22:16:35    (current)
  file name: /var/guix/profiles/system-1-link
  canonical file name: /gnu/store/kjrm9syxwrs5sfmipllv8ypfpx2pssij-system
  label: GNU Guix 1.2.0-1.bd96e6d
  bootloader: grub
  root device: UUID: bd40a448-f6b1-2062-c253-4991bd40a448
  kernel: /gnu/store/7a2db6x9rjmbrfl48j1cx9zxz7czq6sc-linux-libre-5.9.3/bzImage
  configuration file: /gnu/store/cdqxpviqg1vw4ky71i63j2qq8wr30iby-configuration.scm

вот под заголовком «configuration file» и упомянут путь к актуальному конфигурационному файлу.

скопируйте его куда-нибудь (да хоть и в /etc) под произвольным именем (например, system.scm, чтоб самому потом понятно было, что за файл), не забудьте разрешить запись в скопированный файл для владельца (исходный файл не доступен для записи никому, с такими же правами получится и скопированный программой cp файл).

теперь найдите в нём упоминание про сервис openssh:

;; Uncomment the line below to add an SSH server.
;;(service openssh-service-type)

и раскомментируйте строку, убрав символы ; в её начале (это одна из форм комментирования строки в языках lisp/scheme/и т.п.):

(service openssh-service-type)

а теперь примените новую конфигурацию:

$ sudo guix system reconfigure /путь/к/новому/файлу

после переконфигурации (надеюсь она, как и у меня, пройдёт успешно) можно подключаться из хост-системы (если использовали опцию -nic user,model=virtio-net-pci,hostfwd=tcp::10022-:22 при запуске qemu):

$ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022 guest@localhost

ах, да, пароль! по умолчанию у пользователя guest пароля нет. можно его установить программой passwd.

→ Ссылка