1

Я пытаюсь написать скрипт для rsync папки на моем ноутбуке на моем NAS. Скрипт работает нормально при вызове из командной строки. Я попытался настроить скрипт для автоматического запуска с systemd. Однако есть проблема с логином ssh. Хотя он работает нормально, когда скрипт запускается из командной строки, я получаю сообщение об ошибке «Отказано в доступе».

Вот что я пытался пока сузить проблему:

Скрипт /home/tikey/scripts/nas_sync_photos_to_nas.sh:

#!/bin/bash
set -x
ssh tikey@192.168.17.200 -v -i /home/tikey/.ssh/id_rsa ls -la rsync_laptop

Чтобы запустить скрипт с помощью systemd, я поместил файл sync-photos-to-nas.service в ~/.config/systemd/user/:

[Unit]
Description=sync Bilder to nas
[Service]
ExecStart=/home/tikey/scripts/nas_sync_photos_to_nas.sh

Запуск скрипта из командной строки работает нормально. К сожалению, запуск сценария с помощью systemd не работает. Я запустил сервис systemd с помощью systemctl --user start sync-photos-to-nas.service . Затем, используя journalctl --user-unit sync-photos-to-nas , я получаю:

...
debug1: Host '192.168.17.200' is known and matches the RSA host key.
debug1: Found key in /home/tikey/.ssh/known_hosts:2
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tikey/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: password
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Authentications that can continue: publickey,password,keyboard-interactive
Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Authentications that can continue: publickey,password,keyboard-interactive
Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: No more authentication methods to try.
sync-photos-to-nas.service: Main process exited, code=exited, status=255/n/a
sync-photos-to-nas.service: Unit entered failed state.
sync-photos-to-nas.service: Failed with result 'exit-code'.

Кто-нибудь знает, в чем может быть проблема?

3 ответа3

4

debug1: read_passphrase: невозможно открыть /dev /tty: такого устройства или адреса нет

В журнале говорится, что ваш закрытый ключ зашифрован, и клиент не может использовать его, пока вы не введете ключевую фразу. Либо используйте незашифрованный ключ, либо снова используйте грязный обходной путь, используя sshpass .

0

debug1: read_passphrase: невозможно открыть /dev /tty: такого устройства или адреса нет

В журнале говорится, что ваш закрытый ключ зашифрован, и клиент не может использовать его, пока вы не введете ключевую фразу. Как вы говорите в своем комментарии "Ключ автоматически разблокируется при входе в систему, но, видимо, не для systemd"

Чтобы убедиться, что это сделано, вам нужно выполнить скрипт, как если бы вы вошли под своим логином.

[Unit]
Description=sync Bilder to nas
[Service]

User=YOURUSERNAME
WorkingDirectory=/home/YOURUSERNAME
ExecStart=bash -l -c "/home/tikey/scripts/nas_sync_photos_to_nas.sh"

от man bash:

-c string        If  the  -c  option  is  present, then commands are read from
                 string.  If there are arguments after the  string,  they  are
                 assigned to the positional parameters, starting with $0.

-l               Make bash act as if it had been invoked as a login shell (see
                 INVOCATION below).

от man systemd.exec:

User=, Group=    Set the UNIX user or group that the processes are executed as,
                 respectively. Takes a single user or group name, or a numeric 
                 ID as argument. etc...
0

Согласно man ssh , порядок ваших аргументов неверен в вашем вызове SSH. У вас есть это:

ssh tikey@192.168.17.200 -v -i /home/tikey/.ssh/id_rsa ls -la rsync_laptop

Но в "Синопсисе" man ssh показано, что все параметры должны идти перед «user @ host», поэтому попробуйте это:

 ssh -v -i /home/tikey/.ssh/id_rsa tikey@192.168.17.200 ls -la rsync_laptop

Другие детали вашей конфигурации systemd выглядят разумно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .