Skip to content

zachlatta/sshtron

Repository files navigation

SSHTron

SSHTron is a multiplayer lightcycle game that runs through SSH. Just run the command below and you'll be playing in seconds:

$ ssh sshtron.zachlatta.com

Controls: WASD or vim keybindings to move (do not use your arrow keys). Escape or Ctrl+C to exit.

Demo

Code quality disclaimer: SSHTron was built in ~20 hours at BrickHack 2. Here be dragons.

Want to choose color yourself?

There are total 7 colors to choose from: Red, Green, Yellow, Blue, Magenta, Cyan and White

If the color you picked is already taken in all open games, you'll randomly be assigned a color.

Running Your Own Copy

Clone the project and cd into its directory. These instructions assume that you have your GOPATH setup correctly.

# Create an RSA public/private keypair in the current directory for the server
# to use. Don't give it a passphrase.
$ ssh-keygen -t rsa -f id_rsa

# Download dependencies and compile the project
$ go get && go build

# Run it! You can set PORT to customize the HTTP port it serves on and SSH_PORT
# to customize the SSH port it serves on.
$ ./sshtron

Running under a Docker container

Clone the project and cd into its directory.

# Build the SSHTron Docker image
$ docker build -t sshtron .

# Spin up the container with always-restart policy
$ docker run -t -d -p 2022:2022 --restart always --name sshtron sshtron

For Raspberry Pi, use the following to build the Docker image:

$ docker build -t sshtron --build-arg BASE_IMAGE=resin/raspberry-pi-golang:latest .

CVE-2016-0777

CVE-2016-0777 revealed two SSH client vulnerabilities that can be exploited by a malicious SSH server. While SSHTron does not exploit these vulnerabilities, you should still patch your client before you play. SSHTron is open source, but the server could always be running a modified version of SSHTron that does exploit the vulnerabilities described in CVE-2016-0777.

If you haven't yet patched your SSH client, you can follow these instructions to do so now.

License

SSHTron is licensed under the MIT License. See the full license text in LICENSE.