π§ SSH server that can create new Docker containers and/or join existing ones, with session, and dynamic configuration support
SSH chroot with steroids
ββββββββββββββ βbobby@laptopβ ββββββββββββββ β βββssh container1@mycorp.bizβββ βΌ ββββββββββββ ββββββββββββββββββββββββββββββββ€ssh2dockerββββ β ββββββββββββ β β docker exec -it β β β container1 β β β βββββββ/bin/bashβββββββββββ β β ββββββββββΌββββββββββββββββββββββββββββββββ β β βdocker β β β β ββββββββββΌβββ ββββββββββββ ββββββββββββ β β β ββcontainer1β βcontainer2β βcontainer3β β β β βββββββββββββ ββββββββββββ ββββββββββββ β β β ββββββββββββββββββββββββββββββββββββββββββ β ββββββββββββββββββββββββββββββββββββββββββββββ
NAME:
ssh2docker - SSH portal to Docker containers
USAGE:
ssh2docker [global options] command [command options] [arguments...]
AUTHOR(S):
Manfred Touron <https://github.com/moul/ssh2docker>
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--verbose, -V Enable verbose mode
--syslog-server Configure a syslog server, i.e: udp://localhost:514
--bind, -b ":2222" Listen to address
--host-key, -k "built-in" Path or complete SSH host key to use, use 'system' for keys in /etc/ssh
--allowed-images List of allowed images, i.e: alpine,ubuntu:trusty,1cf3e6c
--shell "/bin/sh" DEFAULT shell
--docker-run-args "-it --rm" 'docker run' arguments
--no-join Do not join existing containers, always create new ones
--clean-on-startup Cleanup Docker containers created by ssh2docker on start
--password-auth-script Password auth hook file
--publickey-auth-script Public-key auth hook file
--local-user If setted, you can spawn a local shell (not withing docker) by SSHing to this user
--banner Display a banner on connection
--help, -h show help
--version, -v print the version
Server
$ ssh2docker INFO[0000] Listening on port 2222 INFO[0001] NewClient (0): User="alpine", ClientVersion="5353482d322e302d4f70656e5353485f362e362e317031205562756e74752d327562756e747532" INFO[0748] NewClient (1): User="ubuntu", ClientVersion="5353482d322e302d4f70656e5353485f362e362e317031205562756e74752d327562756e747532"
Client
$ ssh localhost -p 2222 -l alpine Host key fingerprint is 59:46:d7:cf:ca:33:be:1f:58:fd:46:c8:ca:5d:56:03 +--[ RSA 2048]----+ | . .E | | . . o | | o +.| | + . .*| | S .oo=| | . oB+.| | oo.+o| | ...| | .o.| +-----------------+ alpine@localhost's password: / # cat /etc/alpine-release 3.2.0 / # ^D
$ ssh localhost -p 2222 -l ubuntu Host key fingerprint is 59:46:d7:cf:ca:33:be:1f:58:fd:46:c8:ca:5d:56:03 +--[ RSA 2048]----+ | . .E | | . . o | | o +.| | + . .*| | S .oo=| | . oB+.| | oo.+o| | ...| | .o.| +-----------------+ ubuntu@localhost's password: # lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.3 LTS Release: 14.04 Codename: trusty # ^D
Install latest version using Golang (recommended)
$ go get github.com/moul/ssh2docker/cmd/ssh2dockerInstall latest version using Homebrew (Mac OS X)
$ brew install https://raw.githubusercontent.com/moul/ssh2docker/master/contrib/homebrew/assh.rb --HEAD
or the latest released version
$ brew install https://raw.githubusercontent.com/moul/ssh2docker/master/contrib/homebrew/assh.rb
You can test ssh2docker within Docker, but you will have some limitations, i.e: cannot run with boot2docker.
Here is an example about how to use ssh2docker inside Docker
$ docker run --privileged -v /var/lib/docker:/var/lib/docker -it --rm -p 2222:2222 moul/ssh2docker- Support of
docker-exec-argsin hook scripts and in CLI args - Sending environment variables to auth scripts
- TTY is now dynamic (@quentinperez)
- Support of exec commands without tty, i.e: git-server, rsync, tftp, ...
- Support of API hooks for password and public key authentication (#80)
- Support of exec requests (#51)
- Support of
docker-run-argsin hook scripts (#30) - Support of
--syslog-server+ refactored logs (#71) - Do not ask for a password if only
--publickey-auth-scriptis present (#72) - Code refactor (split in modules), update examples, bump dependencies
- Support of
--syslog-server=unix:///dev/log(#74)
v1.2.0 (2015εΉ΄11ζ22ζ₯)
- Support of
--host-key=systemto use OpenSSH keys (#45) - Support of custom entrypoint (#63)
- Support of public-key authentication (#2)
- Handling custom environment variables, user and command in password script (#57)
- Replacing "_" by "/" on default image name to handle ControlMaster on clients
- Support of
--banneroption (#26) - Add a not-yet-implemented warning for exec (#51)
- Support of
--local-useroption, to allow a specific user to be a local shell (#44) - Kill connection when exiting shell (ctrl+D) (#43)
v1.1.0 (2015εΉ΄10ζ07ζ₯)
- Fix runtime error on Linux (#38)
- Initial version of the native Scaleway support (#36)
- Support of 'ssh2docker --password-auth-script' options (#28)
- Add docker support (#17)
- Add GOXC support to build binaries for multiple architectures (#18)
- Support of 'ssh2docker --clean-on-startup' (#23)
- Add homebrew support (#16)
- Add Changelog (#19)
v1.0.1 (2015εΉ΄09ζ27ζ₯)
- Using party to manage dependencies
v1.0.0 (2015εΉ΄09ζ27ζ₯)
Initial release
- Basic logging
- Handling environment-variable requests
- Support of
--allowed-imagesoption (#4) - Ability to configure
docker runarguments (#13) - Reconnecting to existing containers (#14)
- Support of
--no-joinoption (#6)
MIT