Restic - subprocess ssh: Host key verification failed. Fatal: create repository failed: Fatal: unable to open repository, error: error receiving version packet from server: server unexpectedly closed connection: unexpected EOF

What app is this about, and its version: restic, .18.1~ynh1
What YunoHost version are you running: 12.1.39 (stable)
What type of hardware are you using: VPS bought online

Describe your issue

Hello:

I recently installed the restic app as a means to backup my YunoHost VPS to another location securely. The backup fails due to a fatal error which I am unable to pinpoint exactly. My presumption is that there is either something wrong with the remote restic repo directory, or a permissions issue somewhere.

I have shared the Yuno paste as well as output from /var/log/restic/backup-error.log below.

I found the following issue that seems to be similar to mine posted on the forum. I attempted to make changes with permissions and paths as it relates to the following forum post, but I have still been unable to get the backup to succeed. This is the title of the forum post (I am not allowed to share a link), and I tried what was described in the ‘resolved’ post #13 to fix the issue:

Restic - backup fail (Could not run script: /etc/yunohost/hooks.d/backup_method/05-restic_app)

I have also removed and then recreated the remote restic repo multiple times, but doing that has not achieved anything either.

I do want to mention that the restic app on my YunoHost VPS is connecting to the remote repo over Tailscale via sFTP. From my YunoHost VPS, I can confirm that I can successfully sFTP and SSH into the remote server containing the restic repo from the command line over Tailscale without issue. I can also share files manually using the sFTP command in the command line to the remote server over Tailscale. I have also tried all of this directly with the external IP of the server (outside of my Tailnet)… command line functions fine, but the restic backup does not.

I understand there is some sensitive info in my paste/logs (RESTIC_PASSWORD) but I am not concerned about this due to the fact that the hostnames/IPs are all ‘internal’ to my Tailnet.

Does anyone have any ideas about how I may be able to go about resolving this so my restic backups function?

I am sorry that I pasted the output of YunoPaste below, but the forum was not allowing me to share any sort of link, even though that is what I was instructed to do.

Please let me know i f there is any additional information that would be helpful to have.

Thank you.

Share relevant logs or error messages

args:
apps:

  • yourls
    description: null
    dry_run: false
    methods:
  • restic_app
    name: auto_yourls
    output_directory: null
    system: null
    ended_at: 2026-01-16 02:21:14.720398
    error: Custom backup method could not get past the ‘backup’ step
    interface: cli
    operation: backup_create
    parent: null
    related_to:
    • app
    • yourls
      started_at: 2026-01-16 02:21:09.870713
      started_by: ******
      success: false
      yunohost_version: 12.1.39

============

2026-01-16 02:21:10,954: INFO - Collecting files to be backed up for yourls…
2026-01-16 02:21:10,972: DEBUG - Executing command ‘[‘sh’, ‘-c’, ‘/bin/bash -x “/var/cache/yunohost/app_tmp_work_dirs/app_pew6gult/scripts/backup” 7>&1’]’
2026-01-16 02:21:10,984: DEBUG - + source /usr/share/yunohost/helpers
2026-01-16 02:21:10,987: DEBUG - ++++ dirname – /usr/share/yunohost/helpers
2026-01-16 02:21:10,989: DEBUG - +++ cd – /usr/share/yunohost
2026-01-16 02:21:10,990: DEBUG - +++ pwd
2026-01-16 02:21:10,990: DEBUG - ++ SCRIPT_DIR=/usr/share/yunohost
2026-01-16 02:21:10,990: DEBUG - ++ YNH_HELPERS_VERSION=2.1
2026-01-16 02:21:10,994: DEBUG - ++ readonly ‘XTRACE_ENABLE=set -o xtrace’
2026-01-16 02:21:10,994: DEBUG - ++ XTRACE_ENABLE=‘set -o xtrace’
2026-01-16 02:21:11,014: DEBUG - + ynh_print_info ‘Declaring files to be backed up…’
2026-01-16 02:21:11,014: DEBUG - + ynh_backup /var/www/yourls
2026-01-16 02:21:11,014: INFO - Declaring files to be backed up…
2026-01-16 02:21:11,014: DEBUG - + local target=/var/www/yourls
2026-01-16 02:21:11,015: DEBUG - + local is_data=false
2026-01-16 02:21:11,016: DEBUG - + [[ -n yourls ]]
2026-01-16 02:21:11,016: DEBUG - + [[ /var/www/yourls =~ ^/var/log/yourls/?*?$ ]]
2026-01-16 02:21:11,016: DEBUG - + [[ -n yourls ]]
2026-01-16 02:21:11,016: DEBUG - ++ ynh_app_setting_get --key=do_not_backup_data
2026-01-16 02:21:11,134: DEBUG - + local do_not_backup_data=
2026-01-16 02:21:11,134: DEBUG - + [[ false == true ]]
2026-01-16 02:21:11,134: DEBUG - + ‘[’ ‘!’ -e /var/www/yourls ‘]’
2026-01-16 02:21:11,134: DEBUG - ++ realpath /var/www/yourls
2026-01-16 02:21:11,136: DEBUG - + src_path=/var/www/yourls
2026-01-16 02:21:11,137: DEBUG - + dest_path=var/www/yourls
2026-01-16 02:21:11,137: DEBUG - + [[ -e var/www/yourls ]]
2026-01-16 02:21:11,137: DEBUG - + local rel_dir=/apps/yourls/backup
2026-01-16 02:21:11,137: DEBUG - + rel_dir=/apps/yourls/backup/
2026-01-16 02:21:11,137: DEBUG - + dest_path=/apps/yourls/backup/var/www/yourls
2026-01-16 02:21:11,137: DEBUG - + dest_path=apps/yourls/backup/var/www/yourls
2026-01-16 02:21:11,138: DEBUG - ++ echo /var/www/yourls
2026-01-16 02:21:11,138: DEBUG - ++ sed --regexp-extended ‘s/"/""/g’
2026-01-16 02:21:11,142: DEBUG - + local src=/var/www/yourls
2026-01-16 02:21:11,144: DEBUG - ++ echo apps/yourls/backup/var/www/yourls
2026-01-16 02:21:11,144: DEBUG - ++ sed --regexp-extended ‘s/"/""/g’
2026-01-16 02:21:11,148: DEBUG - + local dest=apps/yourls/backup/var/www/yourls
2026-01-16 02:21:11,149: DEBUG - ++ dirname /home/yunohost.backup/tmp/auto_yourls/apps/yourls/backup/var/www/yourls
2026-01-16 02:21:11,151: DEBUG - + mkdir --parents /home/yunohost.backup/tmp/auto_yourls/apps/yourls/backup/var/www
2026-01-16 02:21:11,154: DEBUG - + ynh_backup /etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,154: DEBUG - + local target=/etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,154: DEBUG - + local is_data=false
2026-01-16 02:21:11,154: DEBUG - + [[ -n yourls ]]
2026-01-16 02:21:11,154: DEBUG - + [[ /etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf =~ ^/var/log/yourls/?*?$ ]]
2026-01-16 02:21:11,154: DEBUG - + [[ -n yourls ]]
2026-01-16 02:21:11,155: DEBUG - ++ ynh_app_setting_get --key=do_not_backup_data
2026-01-16 02:21:11,273: DEBUG - + local do_not_backup_data=
2026-01-16 02:21:11,273: DEBUG - + [[ false == true ]]
2026-01-16 02:21:11,273: DEBUG - + ‘[’ ‘!’ -e /etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf ‘]’
2026-01-16 02:21:11,273: DEBUG - ++ realpath /etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,275: DEBUG - + src_path=/etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,275: DEBUG - + dest_path=etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,276: DEBUG - + [[ -e etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf ]]
2026-01-16 02:21:11,276: DEBUG - + local rel_dir=/apps/yourls/backup
2026-01-16 02:21:11,276: DEBUG - + rel_dir=/apps/yourls/backup/
2026-01-16 02:21:11,276: DEBUG - + dest_path=/apps/yourls/backup/etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,276: DEBUG - + dest_path=apps/yourls/backup/etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,277: DEBUG - ++ echo /etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,277: DEBUG - ++ sed --regexp-extended ‘s/"/""/g’
2026-01-16 02:21:11,281: DEBUG - + local src=/etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,282: DEBUG - ++ echo apps/yourls/backup/etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,283: DEBUG - ++ sed --regexp-extended ‘s/"/""/g’
2026-01-16 02:21:11,285: DEBUG - + local dest=apps/yourls/backup/etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,286: DEBUG - ++ dirname /home/yunohost.backup/tmp/auto_yourls/apps/yourls/backup/etc/nginx/conf.d/yourls.maindomain.tld.d/yourls.conf
2026-01-16 02:21:11,288: DEBUG - + mkdir --parents /home/yunohost.backup/tmp/auto_yourls/apps/yourls/backup/etc/nginx/conf.d/yourls.maindomain.tld.d
2026-01-16 02:21:11,291: DEBUG - + ynh_backup /etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,291: DEBUG - + local target=/etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,291: DEBUG - + local is_data=false
2026-01-16 02:21:11,291: DEBUG - + [[ -n yourls ]]
2026-01-16 02:21:11,291: DEBUG - + [[ /etc/php/8.4/fpm/pool.d/yourls.conf =~ ^/var/log/yourls/?*?$ ]]
2026-01-16 02:21:11,291: DEBUG - + [[ -n yourls ]]
2026-01-16 02:21:11,291: DEBUG - ++ ynh_app_setting_get --key=do_not_backup_data
2026-01-16 02:21:11,397: DEBUG - + local do_not_backup_data=
2026-01-16 02:21:11,397: DEBUG - + [[ false == true ]]
2026-01-16 02:21:11,397: DEBUG - + ‘[’ ‘!’ -e /etc/php/8.4/fpm/pool.d/yourls.conf ‘]’
2026-01-16 02:21:11,397: DEBUG - ++ realpath /etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,399: DEBUG - + src_path=/etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,400: DEBUG - + dest_path=etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,400: DEBUG - + [[ -e etc/php/8.4/fpm/pool.d/yourls.conf ]]
2026-01-16 02:21:11,400: DEBUG - + local rel_dir=/apps/yourls/backup
2026-01-16 02:21:11,400: DEBUG - + rel_dir=/apps/yourls/backup/
2026-01-16 02:21:11,400: DEBUG - + dest_path=/apps/yourls/backup/etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,400: DEBUG - + dest_path=apps/yourls/backup/etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,400: DEBUG - ++ echo /etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,401: DEBUG - ++ sed --regexp-extended ‘s/"/""/g’
2026-01-16 02:21:11,404: DEBUG - + local src=/etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,405: DEBUG - ++ echo apps/yourls/backup/etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,406: DEBUG - ++ sed --regexp-extended ‘s/"/""/g’
2026-01-16 02:21:11,408: DEBUG - + local dest=apps/yourls/backup/etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,409: DEBUG - ++ dirname /home/yunohost.backup/tmp/auto_yourls/apps/yourls/backup/etc/php/8.4/fpm/pool.d/yourls.conf
2026-01-16 02:21:11,410: DEBUG - + mkdir --parents /home/yunohost.backup/tmp/auto_yourls/apps/yourls/backup/etc/php/8.4/fpm/pool.d
2026-01-16 02:21:11,413: DEBUG - + ynh_print_info ‘Backing up the MySQL database…’
2026-01-16 02:21:11,414: DEBUG - + ynh_mysql_dump_db
2026-01-16 02:21:11,414: INFO - Backing up the MySQL database…
2026-01-16 02:21:11,416: DEBUG - + local database=yourls
2026-01-16 02:21:11,416: DEBUG - + default_character_set=()
2026-01-16 02:21:11,417: DEBUG - + [[ -n yourls ]]
2026-01-16 02:21:11,417: DEBUG - + default_character_set=(–default-character-set “$(mysql -B “$database” <<< ‘show variables like “character_set_database”;’ | tail -n1 | cut -f2)”)
2026-01-16 02:21:11,417: DEBUG - ++ cut -f2
2026-01-16 02:21:11,418: DEBUG - ++ tail -n1
2026-01-16 02:21:11,418: DEBUG - ++ mysql -B yourls
2026-01-16 02:21:11,435: DEBUG - + mysqldump --default-character-set utf8mb4 --single-transaction --skip-dump-date --routines yourls
2026-01-16 02:21:11,461: DEBUG - + ynh_print_info ‘Backup script completed for yourls. (YunoHost will then actually copy those files to the archive).’
2026-01-16 02:21:11,461: DEBUG - + ynh_exit_properly
2026-01-16 02:21:11,461: INFO - Backup script completed for yourls. (YunoHost will then actually copy those files to the archive).
2026-01-16 02:21:11,462: DEBUG - + [[ backup =~ ^install$|^upgrade$|^restore$ ]]
2026-01-16 02:21:11,590: INFO - Creating a backup archive from the collected files…
2026-01-16 02:21:11,590: INFO - The archive will contain about 13MB of data.
2026-01-16 02:21:11,591: DEBUG - Calling the custom backup method ‘restic_app’…
2026-01-16 02:21:11,592: DEBUG - Executing command ‘[‘sh’, ‘-c’, ‘/bin/bash -x “./05-restic_app” need_mount /home/yunohost.backup/tmp/auto_yourls auto_yourls /home/yunohost.backup/archives 13445056 '' 7>&1’]’
2026-01-16 02:21:11,596: DEBUG - + set -euo pipefail
2026-01-16 02:21:11,597: DEBUG - ++ yunohost app setting restic repository
2026-01-16 02:21:11,916: DEBUG - + RESTIC_REPOSITORY_BASE=sftp://sponge@100.99.71.97:22/home/sponge/yuno-host
2026-01-16 02:21:11,916: DEBUG - ++ yunohost app setting restic passphrase
2026-01-16 02:21:12,227: DEBUG - + RESTIC_PASSWORD=‘OvarySlangNeurosis72TricksterFiltrateX^’
2026-01-16 02:21:12,228: DEBUG - + RESTIC_COMMAND=/var/www/restic/restic
2026-01-16 02:21:12,228: DEBUG - + LOGFILE=/var/log/restic/backup.log
2026-01-16 02:21:12,228: DEBUG - + ERRFILE=/var/log/restic/backup-error.log
2026-01-16 02:21:12,228: DEBUG - + work_dir=/home/yunohost.backup/tmp/auto_yourls
2026-01-16 02:21:12,228: DEBUG - + name=auto_yourls
2026-01-16 02:21:12,229: DEBUG - + size=13445056
2026-01-16 02:21:12,229: DEBUG - + description=
2026-01-16 02:21:12,229: DEBUG - + case “$1” in
2026-01-16 02:21:12,229: DEBUG - + do_need_mount /home/yunohost.backup/tmp/auto_yourls auto_yourls 13445056 ‘’
2026-01-16 02:21:12,229: DEBUG - + local work_dir=/home/yunohost.backup/tmp/auto_yourls
2026-01-16 02:21:12,229: DEBUG - + local name=auto_yourls
2026-01-16 02:21:12,229: DEBUG - + local size=13445056
2026-01-16 02:21:12,229: DEBUG - + local description=
2026-01-16 02:21:12,229: DEBUG - + export RESTIC_PASSWORD
2026-01-16 02:21:12,230: DEBUG - + export RESTIC_REPOSITORY=sftp://sponge@100.99.71.97:22/home/sponge/yuno-host/auto_yourls
2026-01-16 02:21:12,230: DEBUG - + RESTIC_REPOSITORY=sftp://sponge@100.99.71.97:22/home/sponge/yuno-host/auto_yourls
2026-01-16 02:21:12,230: DEBUG - + load_env_file
2026-01-16 02:21:12,230: DEBUG - + local env_file=/var/www/restic/.env
2026-01-16 02:21:12,230: DEBUG - + ‘[’ -f /var/www/restic/.env ‘]’
2026-01-16 02:21:12,230: DEBUG - + set -o allexport
2026-01-16 02:21:12,230: DEBUG - + source /var/www/restic/.env
2026-01-16 02:21:12,230: DEBUG - + set +o allexport
2026-01-16 02:21:12,230: DEBUG - + load_ssh_agent
2026-01-16 02:21:12,230: DEBUG - + local ssh_key=**********
2026-01-16 02:21:12,230: DEBUG - + ‘[’ -z ‘’ ‘]’
2026-01-16 02:21:12,231: DEBUG - ++ ssh-agent -s
2026-01-16 02:21:12,237: DEBUG - + eval ‘SSH_AUTH_SOCK=/tmp/ssh-4ZZKJWhu1ZmH/agent.291713; export SSH_AUTH_SOCK;
2026-01-16 02:21:12,237: DEBUG - SSH_AGENT_PID=291714; export SSH_AGENT_PID;
2026-01-16 02:21:12,237: DEBUG - echo Agent pid 291714;’
2026-01-16 02:21:12,237: DEBUG - ++ SSH_AUTH_SOCK=/tmp/ssh-4ZZKJWhu1ZmH/agent.291713
2026-01-16 02:21:12,237: DEBUG - ++ export SSH_AUTH_SOCK
2026-01-16 02:21:12,237: DEBUG - ++ SSH_AGENT_PID=291714
2026-01-16 02:21:12,237: DEBUG - ++ export SSH_AGENT_PID
2026-01-16 02:21:12,237: DEBUG - ++ echo Agent pid 291714
2026-01-16 02:21:12,237: DEBUG - Agent pid 291714
2026-01-16 02:21:12,238: DEBUG - + ssh-add -l
2026-01-16 02:21:12,238: DEBUG - ++ basename **********
2026-01-16 02:21:12,239: DEBUG - + grep -q id_restic_ed25519
2026-01-16 02:21:12,244: DEBUG - + ‘[’ -f ********** ‘]’
2026-01-16 02:21:12,245: DEBUG - + ssh-add **********
2026-01-16 02:21:12,253: DEBUG - + trap ‘ssh-agent -k > /dev/null’ EXIT
2026-01-16 02:21:12,253: DEBUG - + /var/www/restic/restic cat config
2026-01-16 02:21:12,749: DEBUG - + /var/www/restic/restic init
2026-01-16 02:21:13,247: DEBUG - + ssh-agent -k
2026-01-16 02:21:13,349: ERROR - Could not run script: /etc/yunohost/hooks.d/backup_method/05-restic_app
Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/yunohost/hook.py”, line 302, in hook_callback
hook_return = hook_exec(
^^^^^^^^^^
File “/usr/lib/python3/dist-packages/yunohost/hook.py”, line 428, in hook_exec
raise YunohostError(“hook_exec_failed”, path=path)
yunohost.utils.error.YunohostError: Could not run script: /etc/yunohost/hooks.d/backup_method/05-restic_app
2026-01-16 02:21:13,351: DEBUG - Executing command ‘[‘sh’, ‘-c’, ‘/bin/bash -x “./05-restic_app” backup /home/yunohost.backup/tmp/auto_yourls auto_yourls /home/yunohost.backup/archives 13445056 '' 7>&1’]’
2026-01-16 02:21:13,356: DEBUG - + set -euo pipefail
2026-01-16 02:21:13,356: DEBUG - ++ yunohost app setting restic repository
2026-01-16 02:21:13,734: DEBUG - + RESTIC_REPOSITORY_BASE=sftp://sponge@100.99.71.97:22/home/sponge/yuno-host
2026-01-16 02:21:13,736: DEBUG - ++ yunohost app setting restic passphrase
2026-01-16 02:21:14,085: DEBUG - + RESTIC_PASSWORD=‘OvarySlangNeurosis72TricksterFiltrateX^’
2026-01-16 02:21:14,085: DEBUG - + RESTIC_COMMAND=/var/www/restic/restic
2026-01-16 02:21:14,085: DEBUG - + LOGFILE=/var/log/restic/backup.log
2026-01-16 02:21:14,085: DEBUG - + ERRFILE=/var/log/restic/backup-error.log
2026-01-16 02:21:14,085: DEBUG - + work_dir=/home/yunohost.backup/tmp/auto_yourls
2026-01-16 02:21:14,085: DEBUG - + name=auto_yourls
2026-01-16 02:21:14,085: DEBUG - + size=13445056
2026-01-16 02:21:14,085: DEBUG - + description=
2026-01-16 02:21:14,086: DEBUG - + case “$1” in
2026-01-16 02:21:14,086: DEBUG - + do_backup /home/yunohost.backup/tmp/auto_yourls auto_yourls 13445056 ‘’
2026-01-16 02:21:14,086: DEBUG - + local work_dir=/home/yunohost.backup/tmp/auto_yourls
2026-01-16 02:21:14,086: DEBUG - + local name=auto_yourls
2026-01-16 02:21:14,086: DEBUG - + local size=13445056
2026-01-16 02:21:14,086: DEBUG - + local description=
2026-01-16 02:21:14,087: DEBUG - + export RESTIC_PASSWORD
2026-01-16 02:21:14,087: DEBUG - + export RESTIC_REPOSITORY=sftp://sponge@100.99.71.97:22/home/sponge/yuno-host/auto_yourls
2026-01-16 02:21:14,087: DEBUG - + RESTIC_REPOSITORY=sftp://sponge@100.99.71.97:22/home/sponge/yuno-host/auto_yourls
2026-01-16 02:21:14,087: DEBUG - ++ date +%d_%m_%y_%H:%M
2026-01-16 02:21:14,089: DEBUG - + current_date=16_01_26_02:21
2026-01-16 02:21:14,090: DEBUG - + load_env_file
2026-01-16 02:21:14,090: DEBUG - + local env_file=/var/www/restic/.env
2026-01-16 02:21:14,090: DEBUG - + ‘[’ -f /var/www/restic/.env ‘]’
2026-01-16 02:21:14,090: DEBUG - + set -o allexport
2026-01-16 02:21:14,090: DEBUG - + source /var/www/restic/.env
2026-01-16 02:21:14,090: DEBUG - + set +o allexport
2026-01-16 02:21:14,090: DEBUG - + load_ssh_agent
2026-01-16 02:21:14,090: DEBUG - + local ssh_key=**********
2026-01-16 02:21:14,091: DEBUG - + ‘[’ -z ‘’ ‘]’
2026-01-16 02:21:14,091: DEBUG - ++ ssh-agent -s
2026-01-16 02:21:14,100: DEBUG - + eval ‘SSH_AUTH_SOCK=/tmp/ssh-mI5leTclM5jx/agent.291748; export SSH_AUTH_SOCK;
2026-01-16 02:21:14,101: DEBUG - SSH_AGENT_PID=291749; export SSH_AGENT_PID;
2026-01-16 02:21:14,101: DEBUG - echo Agent pid 291749;’
2026-01-16 02:21:14,101: DEBUG - ++ SSH_AUTH_SOCK=/tmp/ssh-mI5leTclM5jx/agent.291748
2026-01-16 02:21:14,101: DEBUG - ++ export SSH_AUTH_SOCK
2026-01-16 02:21:14,101: DEBUG - ++ SSH_AGENT_PID=291749
2026-01-16 02:21:14,101: DEBUG - ++ export SSH_AGENT_PID
2026-01-16 02:21:14,102: DEBUG - ++ echo Agent pid 291749
2026-01-16 02:21:14,102: DEBUG - Agent pid 291749
2026-01-16 02:21:14,102: DEBUG - + ssh-add -l
2026-01-16 02:21:14,102: DEBUG - ++ basename **********
2026-01-16 02:21:14,106: DEBUG - + grep -q id_restic_ed25519
2026-01-16 02:21:14,111: DEBUG - + ‘[’ -f ********** ‘]’
2026-01-16 02:21:14,111: DEBUG - + ssh-add **********
2026-01-16 02:21:14,119: DEBUG - + trap ‘ssh-agent -k > /dev/null’ EXIT
2026-01-16 02:21:14,119: DEBUG - + pushd /home/yunohost.backup/tmp/auto_yourls
2026-01-16 02:21:14,119: DEBUG - + /var/www/restic/restic backup ./
2026-01-16 02:21:14,615: DEBUG - + ssh-agent -k
2026-01-16 02:21:14,716: ERROR - Could not run script: /etc/yunohost/hooks.d/backup_method/05-restic_app
Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/yunohost/hook.py”, line 302, in hook_callback
hook_return = hook_exec(
^^^^^^^^^^
File “/usr/lib/python3/dist-packages/yunohost/hook.py”, line 428, in hook_exec
raise YunohostError(“hook_exec_failed”, path=path)
yunohost.utils.error.YunohostError: Could not run script: /etc/yunohost/hooks.d/backup_method/05-restic_app

Hello @elbowranch,

Your issue is common with automated SSH-based backups. The key clue is in your error message: “Host key verification failed”

What’s happening:

When you manually test SSH/SFTP from the command line, you do so as a normal user. The remote server’s host key is stored in ~/.ssh/known_hosts for that user.

However, Restic is run by YunoHost as root (I assume). The root user has never connected to your remote server before, so it has no record of the host key in /root/.ssh/known_hosts, hence the verification failure.

Solution:

Log in once as root (the account used by Restic) to accept the host key:

sudo ssh sponge@100.99.71.97

When the message “Are you sure you want to continue connecting (yes/no)?” appears, type yes.

Alternatively, you can add the key directly without an interactive prompt:

sudo ssh-keyscan -H 100.99.71.97 >> /root/.ssh/known_hosts

Then try running your Restic backup again — it should work :crossed_fingers:.

1 Like

Thanks, @djez ! This solved the problem. Restic is running like charm now. After reading your solution, it is logical and reasonable to me that this was the issue… I cannot believe I did not think of this. Thanks again, I sincerely appreciate your time and help.

1 Like

If you believe that the admin documentation can be improved, don’t hesitate to propose a PR.

(it’s the file ADMIN.md in docs folder of the repo, a markdown text)

1 Like

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.