diff --git a/handlers/borg.helper.in b/handlers/borg.helper.in index d042198fe569397a83eaae0d0264ed787e783071..c995310c57057c2bdf2023128abe2f954e1a653e 100644 --- a/handlers/borg.helper.in +++ b/handlers/borg.helper.in @@ -79,11 +79,12 @@ do_borg_dest() { set -o noglob REPLY= - while [ -z "$REPLY" -o -z "$borg_directory" -o -z "$borg_host" -o -z "$borg_user" -o -z "$borg_archive" -o -z "$borg_compression" ] + while [ -z "$REPLY" -o -z "$borg_directory" -o -z "$borg_host" -o -z "$borg_port" -o -z "$borg_user" -o -z "$borg_archive" -o -z "$borg_compression" ] do formBegin "$borg_title - destination" formItem "directory" "$borg_directory" formItem "host" "$borg_host" + formItem "port" "$borg_port" formItem "user" "$borg_user" formItem "archive_name" "$borg_archive" formItem "compression" "$borg_compression" @@ -93,9 +94,10 @@ do_borg_dest() { tmp_array=($REPLY) borg_directory=${tmp_array[0]} borg_host=${tmp_array[1]} - borg_user=${tmp_array[2]} - borg_archive=${tmp_array[3]} - borg_compression=${tmp_array[4]} + borg_port=${tmp_array[2]} + borg_user=${tmp_array[3]} + borg_archive=${tmp_array[4]} + borg_compression=${tmp_array[5]} done set +o noglob @@ -179,13 +181,13 @@ do_borg_ssh_con() { read fi - ssh -o PreferredAuthentications=publickey $borg_host -l $borg_user "exit" 2> /dev/null + ssh -o PreferredAuthentications=publickey $borg_host -p $borg_port -l $borg_user "exit" 2> /dev/null if [ $? -ne 0 ]; then echo "Copying root's public ssh key to authorized_keys of $borg_user@$borg_host. When prompted, specify the password for user $borg_user@$borg_host." pubkeys=( /root/.ssh/id_[rd]sa.pub ) - if ! ssh-copy-id -i ${pubkeys[0]} $borg_user@$borg_host; then + if ! ssh-copy-id -i ${pubkeys[0]} -p $borg_port $borg_user@$borg_host; then echo "FAILED: Couldn't copy root's public ssh key to authorized_keys of $borg_user@$borg_host." - ssh $borg_user@$borg_host 'test -w .ssh || test -w .' + ssh -p $borg_port $borg_user@$borg_host 'test -w .ssh || test -w .' result=$? echo "Hit return to continue." read @@ -208,9 +210,9 @@ do_borg_ssh_con() { # test to see if the remote borg backup directory exists and is writable echo "Testing to see if remote borg backup directory exists and is writable" - ssh $borg_user@$borg_host "test -d ${borg_directory}" + ssh -p $borg_port $borg_user@$borg_host "test -d ${borg_directory}" if [ $? = 0 ]; then - ssh $borg_user@$borg_host "test -w $borg_directory" + ssh -p $borg_port $borg_user@$borg_host "test -w $borg_directory" if [ $? != 0 ]; then msgBox "destination directory is not writable!" "The remote destination directory is not writable by the user you specified. Please fix the permissions on the directory and then try again." remote_status=failed @@ -218,7 +220,7 @@ do_borg_ssh_con() { else booleanBox "Remote directory does not exist" "The destination backup directory does not exist, do you want me to create it for you?" if [ $? = 0 ]; then - ssh $borg_user@$borg_host "mkdir -p ${borg_directory}" + ssh -p $borg_port $borg_user@$borg_host "mkdir -p ${borg_directory}" result=$? case $result in 0) msgBox "$borg_title: success" "Creation of the remote destination directory was a success!";; @@ -316,6 +318,7 @@ keep = "${borg_keep}d" [dest] directory = $borg_directory host = $borg_host +port = $borg_port user = $borg_user archive = $borg_archive compression = $borg_compression @@ -373,6 +376,7 @@ borg_wizard() { borg_directory=/backup/`hostname` borg_user=root borg_host=localhost + borg_port=22 borg_archive='{now:%Y-%m-%dT%H:%M:%S}' borg_compression=lz4 borg_encryption=none diff --git a/handlers/borg.in b/handlers/borg.in index df500a80bacb6daf26c61625d01eca6d558e27db..96490b0cc7a218e26ce52b8d6a0c768b17979b86 100644 --- a/handlers/borg.in +++ b/handlers/borg.in @@ -35,6 +35,7 @@ getconf prune_options setsection dest getconf user getconf host +getconf port 22 getconf directory # strip trailing / directory=${directory%/} @@ -50,7 +51,7 @@ export BORG_PASSPHRASE="$passphrase" # destination specific checks [ "$directory" != "" ] || fatal "Destination directory not set" if [ "$host" != "localhost" ]; then - execstr_repository="ssh://${user}@${host}${directory}" + execstr_repository="ssh://${user}@${host}:${port}${directory}" else execstr_repository="$directory" fi @@ -59,8 +60,8 @@ execstr_archive="$archive" # check the connection at the source and destination [ -n "$test" ] || test=0 if [ "$host" != "localhost" ] && ([ "$testconnect" = "yes" ] || [ "${test}" -eq 1 ]); then - debug "ssh -o PasswordAuthentication=no $host -l $user 'echo -n 1'" - local ret=`ssh -o PasswordAuthentication=no $host -l $user 'echo -n 1'` + debug "ssh -o PasswordAuthentication=no $host -p $port -l $user 'echo -n 1'" + local ret=`ssh -o PasswordAuthentication=no $host -p $port -l $user 'echo -n 1'` if [ "$ret" = 1 ]; then debug "Connected to $host as $user successfully" else