Browse Source

bugfixing

master
Mar Alegre 5 years ago
parent
commit
aa2e7c1df4
  1. 20
      bin/ssh-persist.sh
  2. 8
      bin/wg-addpeer

20
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

8
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"

Loading…
Cancel
Save