SSH persistent and automatic login script for proxy

#!/bin/bash

sshcommand="ssh -N -R 20000:localhost:22 user@8.8.8.8"
result=`ps aux|grep $sshcommand"|grep -v grep`

if [ -z "$result" ]; then
   echo "we are going to connect"
   $sshcommand
else
  echo "we are already connected"
fi

This is a handy script you can use and then add it to cron.

Save it as proxy.sh and add this to your cron (this will check every minute and start the SSH proxy if it is not running):

crontab -e

*1/ * * * * /home/user/proxy.sh


Server Side

What happens is that the connection breaks for some reason.  Now your client will reconnect but it won't be able to listen on the port possibly because the server side still has the stale SSH process listening on your proxy port.

We need a script to check that the proxy port is open and SSH is accessible.  If the port is open but we don't get served SSH then we will find the process for the port and kill it so a new, working connection can be made.

Put this into a cron as "checkproxy.sh":

#!/bin/bash

proxyport=20000
checkstatus=`nc -w 3 localhost $proxyport|grep -i openssh`

if [[ $checkstatus == *OpenSSH* ]]; then
  echo "OK proxy is up and working"
else
  # find the related sshd process
  pid=`netstat -anptu|grep $proxyport|grep sshd|awk {'print $7'}|cut -d "/" -f 1`
  echo "it is not working let's kill the process so the client can reconnect"
  kill $pid
fi

 


Tags:

ssh, persistent, login, proxy, bin, bash, sshcommand, quot, localhost, user, ps, aux, grep, z, echo, fi, cron, sh, crontab,

Latest Articles

  • Bad Power Supply Issue Story Diagnosing Troubleshooting
  • Getting started with AI (Artificial Intelligence) in Linux / Ubuntu using by deploying LLM (Language Learing Models) using Ollama LLMA
  • microk8s kubernetes how to install OpenEBS
  • Flash LSI MegaRAID 2208 to IT mode in Linux Mint/Debian/Ubuntu
  • LSI MegaRAID in Linux Ubuntu / Centos Tutorial Setup Guide megacli
  • Convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/413. convert-im6.q16: no images defined `pts-time.jpg' @ error/convert.c/ConvertImageCommand/3258. solution ImageMagick P
  • Apache PHP sending expires header solution cannot use cache with CDN
  • How to install virt-manager in Mint 22/Ubuntu 22
  • Infiniband Guide
  • python mysql install error: /bin/sh: 1: mysql_config: not found /bin/sh: 1: mariadb_config: not found /bin/sh: 1: mysql_config: not found mysql_config --version
  • FreePBX 17 How To Add a Trunk
  • Docker Container Onboot Policy - How to make sure a container is always running
  • FreePBX 17 How To Add Phones / Extensions and Register
  • Warning: The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes. solution
  • Cisco How To Use a Third Party SIP Phone (eg. Avaya, 3CX)
  • Cisco Unified Communication Manager (CUCM) - How To Add Phones
  • pptp / pptpd not working in DD-WRT iptables / router
  • systemd-journald high memory usage solution
  • How to Install FreePBX 17 in Linux Debian Ubuntu Mint Guide
  • How To Install Cisco's CUCM (Cisco Unified Communication Manager) 12 Guide