50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
+++
|
|
date = "2009-12-28T17:12:00-07:00"
|
|
title = "Making life easy over flaky links"
|
|
categories = ["software"]
|
|
tags = ["cli","ssh","telecommute"]
|
|
+++
|
|
|
|
Making life easy over flaky links
|
|
=================================
|
|
|
|
I tend to work over VPN, which we know can be flaky at times, Since I
|
|
work on server, I spend a lot of time ssh'ed into hosts. I was getting
|
|
tired of the lost time having to restart what I was working on every
|
|
time the VPN dropped (which could be as much as every 15 minutes on a
|
|
bad day). While I already used screen to handle the lack of terminals
|
|
(Alas, I am forced to use a Windows laptop to VPN in with), I thought
|
|
there could be an easier way to do this.
|
|
|
|
The way I tend to work is that I ssh into a jump server, fire up screen,
|
|
then ssh into the hosts I need to work on, and fire up screen on those
|
|
hosts.
|
|
|
|
Now, this is nice, but it can get a bit tiring to do it all over again.
|
|
So, I found a tool called [autossh](https://www.harding.motd.ca/autossh/)
|
|
which will automatically restart your ssh session if it drops for any
|
|
reason but a graceful disconnect. (Well, there are others, but this is
|
|
basically it). Combine this with your ssh-agent, and you can re-attach
|
|
with easy. I also use [keychain](https://www.funtoo.org/Keychain) to help
|
|
manage my ssh-agent when I log in.
|
|
|
|
Now that the connection will come back, I need a way to re-attach to my
|
|
screen session, or if there is not one, to start one for me. To do\
|
|
that, I have this is my .bashrc file:
|
|
|
|
test -x $STY && screen -xR
|
|
|
|
This will check to make sure that we are not already inside a screen
|
|
session on the local host (*test -x \$STY*), and if we are not, then
|
|
either attach to an existing screen session or start a new one (*screen
|
|
-xR*)
|
|
|
|
I have define this function in my .bashrc to spawn a new ssh connection
|
|
in a separate screen window:
|
|
|
|
function ss ()
|
|
{
|
|
screen -t $1 ssh $*
|
|
}
|
|
|
|
Easy stuff
|