diff --git a/bin/ssh-persist.sh b/bin/ssh-persist.sh index c18685e..d452bdf 100644 --- a/bin/ssh-persist.sh +++ b/bin/ssh-persist.sh @@ -21,23 +21,23 @@ sshp() { _sshp_dest=$1 # create temporary directory _sshp_tmpdir=$(mktemp -d) -mkfifo $tempdir/in $tempdir/out +mkfifo $_sshp_tmpdir/in $_sshp_tmpdir/out _sshp_out=$_sshp_tmpdir/out # assign input to a file descriptor so it doesn't get closed -exec {_sshp_in}<>$tempdir/in +exec {_sshp_in}<>$_sshp_tmpdir/in # trap exit to do cleanup -trap "{ exec {_sshp_in}>&-; ssh -O exit -S $_sshp_tmpdir/ssh $_sshp_dest &>/dev/null; rm -rf $tempdir; }" EXIT +trap "{ exec {_sshp_in}>&-; ssh -O exit -S $_sshp_tmpdir/ssh $_sshp_dest &>/dev/null; rm -rf $_sshp_tmpdir; }" EXIT # login with master so ssh can ask password if necessary -ssh -M -Nf -S $tempdir/ssh $_sshp_dest +ssh -M -Nf -S $_sshp_tmpdir/ssh $_sshp_dest # login with redirection for the persistent connection -ssh -S $tempdir/ssh medusa 0<&$_sshp_in 1>$_sshp_out 2>$_sshp_out & -# clear output +ssh -S $_sshp_tmpdir/ssh medusa 0<&$_sshp_in 1>$_sshp_out 2>$_sshp_out & +# clear output sshp true &> /dev/null # ask for password and run sudo so password can be cached -(printf "[sudo] password for $(remote echo \$USER)@$(remote hostname): " +(printf "[sudo] password for $(sshp echo \$USER)@$(sshp hostname): " read -s password printf '\n' - echo "sudo -S true" >&3 - echo $password >&3) -# clear output + echo "sudo -S true" >&$_sshp_in + echo $password >&$_sshp_in) +# clear output again sshp true &> /dev/null diff --git a/bin/wg-addpeer b/bin/wg-addpeer index 6abd652..cf689c2 100755 --- a/bin/wg-addpeer +++ b/bin/wg-addpeer @@ -14,7 +14,7 @@ dest="$1" # script expects ssh-persist to be either in the same directory, or in the path cd $(dirname $0) -. ssh-persist $dest +. ssh-persist.sh $dest # gather host info host_name=$(hostname) @@ -32,9 +32,13 @@ dest_port=$(sshp sudo wg show $wg_dev listen-port) dest_key=$(sshp sudo wg show $wg_dev public-key) # add peer on host +echo "Configuring peer on local host ..." sudo wg set $wg_dev peer "${dest_key}" endpoint $dest_fqdn:$dest_port allowed-ips $dest_wgip/32 +echo "Configuring peer hostname on local host ..." echo -e "$dest_wgip\t$dest_name.$wg_domain" | sudo tee -a /etc/hosts >/dev/null # add peer on dest +echo "Configuring peer on remote host ..." sshp sudo wg set $wg_dev peer "'${host_key}'" endpoint $host_fqdn:$host_port allowed-ips $host_wgip/32 -sshp echo -e "$host_wgip\t$host_name.$wg_domain" | sudo tee -a /etc/hosts >/dev/null +echo "Configuring peer hostname on remote host ..." +sshp "echo -e '$host_wgip\t$host_name.$wg_domain' | sudo tee -a /etc/hosts >/dev/null"