sshd_config меняется через systemd - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь автоматизировать некоторые задачи при первой загрузке под управлением Ubuntu на Raspberry Pi. У меня есть сервис Systemd, который запускается один раз и убивает себя. Как часть этого, я пытаюсь обновить конфигурацию на sshd_config и перепробовал все возможные вещи, о которых я мог думать и искать в Google, но тщетно. Надеемся, что кто-то может внести свой вклад здесь с большим опытом работы с этим материалом.

# disable password login
echo "First Boot - disabling ssh password login"
sed -i 's/PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config

Systemctl и Syslog не показывают ошибок в выполнении. Если я запускаю приведенную выше команду в командной строке, она ведет себя как ожидалось.

Другие вещи, которые я пробовал

Attempt 1: Assuming permission errors due to in-place sed file creation. I have routed the output to a temp file on printing the contents it looks right but the actual location i.e. /etc/ssh/sshd_config has no changes

TFILE=`mktemp --tmpdir tfile.XXXXX`
trap `rm -f $TFILE` 0 1 2 3 15
sed 's/PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config > $TFILE
cat $TFILE > /etc/ssh/sshd_config

Attempt 2: Read somewhere that /etc/ssh/sshd_config is a symlink to file in /usr and get copied over and hence executing first line copies it to /etc and changes on top 

sed -i '' /etc/ssh/sshd_config
sed -i 's/PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config

Обновлено 23/02:

Сервисный файл

[Unit]
Description=First boot script
ConditionPathExists=/first_boot.sh

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/first_boot.sh
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Спасибо, ребята, за указатель, и я наконец заработал. Несколько лет без связи делают огромный скачок в технологии. У меня была проблема с Ubuntu cloud-init, когда часть SystemD обновляла файл sshd_config, и порядок выполнения в основном переписывал мои изменения.

Вот мой последний сервисный файл, который работает.

[Unit]
Description=Post first boot script
ConditionPathExists=!/first_boot.sh
ConditionPathExists=/post_first_boot.sh

# run customisation and package installations after networking & ssh are up
After=cloud-config.service
Before=cloud-final.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/post_first_boot.sh
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target
0 голосов
/ 23 февраля 2020

Отметьте «Нологин» - http://man7.org/linux/man-pages/man8/nologin.8.html Легко, как: коснитесь / etc / nologin; и rm -f / etc / nologin впоследствии.

...