On Tue, Aug 21, 2012 at 07:59:30PM -0600, Luis F Urrea wrote:
> I have a server hosting SSH tunnels and Openbsd 4.5 clients connecting to
> it.
>
> Things work just fine but I am in the need of automating the connection
> from the client to the server. So that if the client is accidentally
> rebooted, then the connection initiates unattended.
>
> So it should be as straight forward as to include the ssh connection in an
> init script. However I have miserably failed to do so by including it to
> /etc/rc.local, which is the file I usually do this sort of things in.
>
> Right now I am using autossh to also restart the connection if necessary
> and the script that I put on /etc/rc.local follows:
>
> #!/bin/sh
> #
> # Example script to start up tunnel with autossh.
> #
> # This script will tunnel 2200 from the remote host
> # to 22 on the local host. On remote host do:
> # ssh -p 2200 localhost
> #
> # $Id: autossh.host,v 1.6 2004/01/24 05:53:09 harding Exp $
> #
>
> ID=root
> HOST=example.com
>
> #AUTOSSH_POLL=600
> #AUTOSSH_PORT=20000
> #AUTOSSH_GATETIME=30
> #AUTOSSH_LOGFILE=$HOST.log
> #AUTOSSH_DEBUG=yes
> #AUTOSSH_PATH=/usr/local/bin/ssh
> export AUTOSSH_POLL AUTOSSH_LOGFILE AUTOSSH_DEBUG AUTOSSH_PATH
> AUTOSSH_GATETIME AUTOSSH_PORT
>
> autossh -2 -f -M 20000 ${ID}@${HOST}
>
> The script detaches just fine when run manually so I just include it on
> /etc/rc.local as
>
> echo -n 'starting local daemons:'
>
> if [ -x /usr/local/sbin/autossh.sh ]; then
> echo -n 'ssh tunnel'
> /usr/local/sbin/autossh.sh
> fi
>
> echo '.'
>
>
> I have also tried calling it from /etc/hostname.tun0 in case there may be
> issues with /etc/rc.local not being called at the right time when network
> connections are ready, so I would use:
>
> inet 10.254.254.2 255.255.255.252 10.254.254.1
> !/usr/local/sbin/autossh.sh
>
> Your input is highly appreciated.
>
> PS. Clients are remote to me so i dont see much from console and I cant
> seem to find a way to have logs from boot.
>
I tried testing your script but hit a more general problem early on.
I'm running 5.1 and haven't been able to get autossh to work
successfully when called from the command line (or your script) using
the -f flag. According to the logs (authlog) on the remote machine,
the client successfully connects, then disconnects, apparently of its
own accord:
Aug 21 20:06:03 sshd[4635]: Accepted publickey for paul from 192.168.44.8 port
59113 ssh2
Aug 21 20:06:03 sshd[1671]: Received disconnect from 192.168.44.8: disconnected
by user
And the log file on local host:
Aug 21 20:06:02 x200 autossh[4347]: starting ssh (count 1)
Aug 21 20:06:04 x200 autossh[4347]: ssh child pid is 26907
Aug 21 20:06:04 x200 autossh[4347]: ssh exited prematurely with status 1;
autossh exiting
Calling autossh from your script had the same results (I didn't try it
using rc.local). The return status of 1 on the very first attempt
apparently causes autossh to give up (as documented in the man page),
though I can't see a reason why ssh would disconnect.
You might check what is in /var/log/authlog on your server. (BTW, the
AUTOSSH_DEBUG flag didn't produce any output.)
What's the -2 arg for in your script? I don't see it in the
manpage.
But it *does* work without the -f flag.