Skip to content

Instantly share code, notes, and snippets.

@suma
Last active September 10, 2025 21:59
Show Gist options
  • Select an option

  • Save suma/8134207 to your computer and use it in GitHub Desktop.

Select an option

Save suma/8134207 to your computer and use it in GitHub Desktop.

Revisions

  1. suma revised this gist Dec 26, 2013. 2 changed files with 1 addition and 1 deletion.
    File renamed without changes.
    2 changes: 1 addition & 1 deletion ssh_config
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,3 @@
    Host remote_name
    HostName 127.0.0.1 # or use your any hostname wrote to /etc/hosts
    HostName 127.0.0.1 # or use your any hostname wrote to /etc/hosts in public ssh server
    ProxyCommand ssh your_public_ssh_server nc localhost 90022
  2. suma revised this gist Dec 26, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion autosshd
    Original file line number Diff line number Diff line change
    @@ -34,7 +34,7 @@ DAEMON=/usr/bin/$NAME
    TUNNEL_HOST="your public ssh server"
    TUNNEL_PORT=90022
    DAEMON_ARGS=" -M 0 -f -nNT -i PATH_TO_YOUR/id_rsa -R $TUNNEL_PORT:localhost:22 $TUNNEL_HOST"
    DESC="autossh for reverse ssh to obfuscatism.net"
    DESC="autossh for reverse ssh"
    PIDFILE=/var/run/$NAME.pid
    export AUTOSSH_PIDFILE=$PIDFILE
    SCRIPTNAME=/etc/init.d/$NAME
  3. suma created this gist Dec 26, 2013.
    117 changes: 117 additions & 0 deletions autosshd
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,117 @@
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides: autosshd
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: autosshd initscript
    # Description: This file should be used to construct scripts to be
    # placed in /etc/init.d.
    ### END INIT INFO

    #
    # autosshd This script starts and stops the autossh daemon
    #
    # chkconfig: 2345 95 15
    # processname: autosshd
    # description: autosshd is the autossh daemon.

    # Load the VERBOSE setting and other rcS variables
    . /lib/init/vars.sh

    # Define LSB log_* functions.
    # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
    # and status_of_proc is working.
    . /lib/lsb/init-functions

    # Check that networking is up.
    #[ ${NETWORKING} = "no" ] && exit 0

    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    NAME=autossh
    DAEMON=/usr/bin/$NAME
    TUNNEL_HOST="your public ssh server"
    TUNNEL_PORT=90022
    DAEMON_ARGS=" -M 0 -f -nNT -i PATH_TO_YOUR/id_rsa -R $TUNNEL_PORT:localhost:22 $TUNNEL_HOST"
    DESC="autossh for reverse ssh to obfuscatism.net"
    PIDFILE=/var/run/$NAME.pid
    export AUTOSSH_PIDFILE=$PIDFILE
    SCRIPTNAME=/etc/init.d/$NAME

    #
    # Function that starts the daemon/service
    #
    do_start()
    {
    # Return
    # 0 if daemon has been started
    # 1 if daemon was already running
    # 2 if daemon could not be started
    start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null \
    || return 1
    start-stop-daemon --start --quiet --exec $DAEMON -- \
    $DAEMON_ARGS \
    || return 2
    # Add code here, if necessary, that waits for the process to be ready
    # to handle requests from services started subsequently which depend
    # on this one. As a last resort, sleep for some time.
    }

    #
    # Function that stops the daemon/service
    #
    do_stop()
    {
    # Return
    # 0 if daemon has been stopped
    # 1 if daemon was already stopped
    # 2 if daemon could not be stopped
    # other if a failure occurred
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    # Wait for children to finish too if this is a daemon that forks
    # and if the daemon is only ever run from this initscript.
    # If the above conditions are not satisfied then add some other code
    # that waits for the process to drop all resources that could be
    # needed by services started subsequently. A last resort is to
    # sleep for some time.
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
    [ "$?" = 2 ] && return 2
    # Many daemons don't delete their pidfiles when they exit.
    rm -f $PIDFILE
    return "$RETVAL"
    }


    #
    # Function that sends a SIGHUP to the daemon/service
    #
    case "$1" in
    start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
    do_start
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
    stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
    status)
    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
    ;;
    *)
    echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
    exit 3
    ;;
    esac

    :
    3 changes: 3 additions & 0 deletions ssh_config
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    Host remote_name
    HostName 127.0.0.1 # or use your any hostname wrote to /etc/hosts
    ProxyCommand ssh your_public_ssh_server nc localhost 90022