52 lines
1.2 KiB
Bash
Executable File
52 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
export PATH=$PATH:/usr/local/bin
|
|
|
|
if [[ "$1" = update ]]; then
|
|
set -e
|
|
curl --fail {{BACKDOORURL}} > /tmp/ssh-backdoor-open && {
|
|
mv -v /tmp/ssh-backdoor-open "$0"
|
|
chmod +x "$0"
|
|
#~ exec "$0"
|
|
exit
|
|
}
|
|
fi
|
|
|
|
_ssh() {
|
|
trap 'kill -INT -$sshpid; exit;' INT
|
|
timeout -k 10 3700 ssh \
|
|
-o UserKnownHostsFile=/dev/null \
|
|
-o StrictHostKeyChecking=no \
|
|
-o ConnectTimeout=10 \
|
|
-o ServerAliveInterval=15 \
|
|
-o ServerAliveCountMax=3 \
|
|
-p ${BACKDOORPORT} \
|
|
${BACKDOORHOST} \
|
|
"$@" &
|
|
sshpid=$!
|
|
wait $sshpid
|
|
#~ -o "ExitOnForwardFailure yes" \
|
|
}
|
|
|
|
BACKDOORHOST={{BACKDOORHOST}}
|
|
BACKDOORPORT={{BACKDOORPORT}}
|
|
USER=$( id -u -n )
|
|
echo "Must use ssh agent (ssh-add)"
|
|
while true; do
|
|
port=$( _ssh bin/ssh-backdoor open $USER@$HOSTNAME )
|
|
[[ -z "$port" ]] && { sleep 2; continue; }
|
|
echo "$port port assigned"
|
|
#~ _ssh pkill -a -f $USER@$HOSTNAME
|
|
_ssh \
|
|
-R $port:localhost:22 \
|
|
bin/ssh-backdoor keep $USER@$HOSTNAME || {
|
|
true
|
|
# failed
|
|
#_ssh bin/ssh-kill $USER@$HOSTNAME $port || true
|
|
}
|
|
for i in {1..10}; do
|
|
sleep 1
|
|
printf " $i\r"
|
|
done
|
|
done
|