Proxy SSH connections on a gateway
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd
config
doc
misc
pkg
vendor
.gitignore
.travis.yml
Gopkg.lock
Gopkg.toml
Licence_CeCILL-B_V1-en.txt
Licence_CeCILL-B_V1-fr.txt
Makefile
README.asciidoc

README.asciidoc

sshproxy

Build Status

What is sshproxy?

sshproxy is used on a gateway to transparently proxy a user SSH connection on the gateway to an internal host via SSH. scp, sftp, rsync, etc. are supported.

sshproxy defines routes which bind an SSH listening address to a pool of destination hosts. It can then choose the first available destination or load-balance the connections with a simple round-robin algorithm.

Because of its design sshproxy is stateless (it is launched as a ForceCommand by sshd). It can be made stateful by using the sshproxy-managerd daemon which:

  • remembers users connections and always connects a user to the same destination while a connection to this destination is alive,

  • periodically checks if destination hosts are alive.

sshproxy can be configured to monitor SSH sessions and either to save them in files or to send them to the very simple sshproxy-dumpd daemon. Sessions can be replayed with the sshproxy-replay command.

Compilation

Install the Go compiler suite: see http://golang.org/doc/install for details.

Define and export the $GOPATH directory where the source code will be unpacked (e.g. $HOME/go):

$ export GOPATH=$HOME/go
$ mkdir -p $GOPATH/src/github.com/cea-hpc
$ cd $GOPATH/src/github.com/cea-hpc
$ tar xvJf sshproxy-X.Y.Z.tar.xz

Compile everything:

$ make

Installation

Install binaries and manpages:

# make install

sshproxy, sshproxy-managerd and sshproxy-dumpd are installed in /usr/sbin and sshproxy-replay in /usr/bin.

Configuration

There are commented configuration files in the config directory.

If you want to use sshproxy-managerd you need its configuration file /etc/sshproxy/sshproxy-managerd.yaml. There are service files for Upstart and systemd in the misc directory to start sshproxy-managerd.

Configure /etc/sshproxy/sshproxy.yaml to suit your needs.

Modify the SSH daemon configuration /etc/ssh/sshd_config by adding:

ForceCommand /usr/sbin/sshproxy

Copying

Copyright © 2015-2019 CEA/DAM/DIF

sshproxy is distributed under the CeCILL-B, a French transposition of the BSD license. See the included files Licence_CeCILL-B_V1-en.txt (English version) and Licence_CeCILL-B_V1-fr.txt (French version) or visit http://www.cecill.info for details.

Author

Arnaud Guignard <arnaud.guignard@cea.fr>

Documentation

See files in the doc directory.