You are here: home » blog » ssh-directly-into-remote-virtual-machines

What's he up to?

SSH directly into remote virtual machines

From Kees van den Broek. June 16, 2009, No Comments

Host 6pp_vm is a virtual machine that runs on host kvdb.net. The usual steps for connecting to 6pp_vm from my laptop:

kvdb@laptop:$ ssh kvdb.net
# Type password
kvdb@kvdb:$ ssh 6pp_vm
# Type password
kvdb@6pp:$

The goal is a login process reduced to:

kvdb@laptop:$ ssh 6pp_vm
kvdb@6pp:$

First, using OpenSSH’s ProxyCommand, an instant connection from laptop to 6pp_vm can be established.
Append these 2 lines to ~/.ssh/config on laptop:

Host 6pp_vm
  ProxyCommand ssh kvdb.net nc %h %p

Next, introduce password-less logins.
Generate a public and private DSA key pair on laptop (leave passprase empty):

kvdb@laptop: $ ssh-keygen -t dsa

Upload the public key to hosts kvdb.net and 6pp_vm.

kvdb@laptop: $ cat ~/.ssh/id_dsa.pub | ssh kvdb.net 'cat - >> ~/.ssh/authorized_keys'
kvdb@laptop: $ cat ~/.ssh/id_dsa.pub | ssh 6pp_vm 'cat - >> ~/.ssh/authorized_keys'

In case you got a ‘No such file or directory’ error. First create the .ssh directory at 6pp_vm:

kvdb@6pp: $ mkdir ~/.ssh
kvdb@6pp: $ chmod go-w ~/.ssh
kvdb@6pp: $ chmod 600 ~/.ssh/authorized_keys
kvdb@laptop: $ cat ~/.ssh/id_dsa.pub | ssh 6pp_vm 'cat - > ~/.ssh/authorized_keys'

Test the login from laptop to 6pp_vm (through kvdb.net):

kvdb@laptop:$ ssh 6pp_vm
kvdb@6pp:$

Third, I like the prompt on 6pp_vm to be colored red when I’m connected through SSH, to remind me of the fact I’m working remotely.
Perform these commands on laptop:

# Placing a '\' in front of the escaping word prevents shell (variables) substitution.
cat << \EOF | ssh 6pp_vm 'cat - >> ~/.bashrc'
# Color the prompt RED when using BASH on a SSH connection
if [ `echo $SSH_CLIENT | awk '{ print $1 }'` ] ; then
  RED="\[\033[0;31m\]"
  NORMAL="\[\033[0m\]"
  PS1="${RED}${PS1}${NORMAL}"
fi
EOF

Leave a Reply


last modified on 2010-02-23 @ 15:10