Useful script for accessing an unexposed port when you only have access to ssh on a server for debug purposes.
########################################
### BEGIN USAGE EXAMPLE FOR COPYING ###
########################################
##########################################################################
### Usage Example, Copy the below into a separate script and uncomment ###
##########################################################################
#REMOTE_ADDRESS=8.8.8.8
#REMOTE_SSH_PORT=2020
#REMOTE_USERNAME=root
#REMOTE_PASSWORD=password
#declare -A DESTINATION_LIST
#DESTINATION_LIST+=(["5902"]="localhost:5902")
#sh tunnelOpen.sh "$REMOTE_ADDRESS" "$REMOTE_SSH_PORT" "$REMOTE_USERNAME" "$REMOTE_PASSWORD" "$(declare -p DESTINATION_LIST)"
########################################
### END USAGE EXAMPLE FOR COPYING #####
########################################
REMOTE_ADDRESS=$1; shift
REMOTE_SSH_PORT=$1; shift
REMOTE_USERNAME=$1; shift
REMOTE_PASSWORD=$1; shift
eval "declare -A DESTINATION_LIST="${1#*=}
function establishTunnels()
{
clear
for LOCAL_LISTEN_PORT in "${!DESTINATION_LIST[@]}"
do
#Pull Values from Array
DESTINATION_ADDRESS_DESTINATION_PORT=${DESTINATION_LIST[$LOCAL_LISTEN_PORT]}
echo "Establishing Tunnel to $DESTINATION_ADDRESS_DESTINATION_PORT using Local Port $LOCAL_LISTEN_PORT"
#ssh-keygen -R [$REMOTE_ADDRESS]:$REMOTE_SSH_PORT
#ssh -o StrictHostKeyChecking=no -fNL $LOCAL_LISTEN_PORT:$DESTINATION_ADDRESS_DESTINATION_PORT -l root $REMOTE_ADDRESS -p $REMOTE_SSH_PORT >/dev/null 2>&1
nohup echo y | "/c/Program Files/PuTTY/plink.exe" -N -L $LOCAL_LISTEN_PORT:$DESTINATION_ADDRESS_DESTINATION_PORT -ssh $REMOTE_USERNAME@$REMOTE_ADDRESS -P $REMOTE_SSH_PORT -pw $REMOTE_PASSWORD >/dev/null 2>&1 &
echo ""
echo "##################################################################"
echo "If there are no errors up to this point you can now connect"
echo "to the endpoint using localhost:$LOCAL_LISTEN_PORT using ssh/rdp"
echo "##################################################################"
echo ""
done
}
establishTunnels