sshdbd

command module
v0.0.0-...-e3a0937 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2024 License: MIT Imports: 7 Imported by: 0

README

sshdbd

Shdibbidy allows for the creation and streaming of MySQL database dumps over SSH, without requiring full SSH access to the server that performs the dumping.

Usage

$ ./sshdbd

NAME:
   sshdbd - A SSH server for downloading database dumps

USAGE:
   sshdbd [global options] command [command options]

COMMANDS:
   install, i  Creates the configuration directory and the required files
   serve, s    Starts the SSH server
   help, h     Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h  show help
Setting up and running the server
Command Description
install Creates a ~/.sshdbd directory containing 3 files:
  • hostkey.pem is the private key that will be used by the SSH server
  • authorized_keys is the place for adding client public keys; similar to ~/.ssh/authorized_keys
  • connections.toml defines the database connections that are made available to clients
serve Starts a SSH server on port 2222. Use the --port option to specify a different port.
Connecting to the server

Once the server is running, clients can connect to it using a SSH command like the following:

ssh CONNID:DBNAME:SKIPPED_TABLES@IP -pPORT -T > dump.sql.gz

where:

  • CONNID is the connection ID, as specified in connections.toml
  • DBNAME is the name of the database to be dumped
  • SKIPPED_TABLES is a list of comma separated table names; these are the tables for which only the schema (not the records) will be dumped; this parameter is not required.
  • the -T ("disable pseudo-terminal allocation") option will ensure the output is raw and the resulting database dump is not corrupted.

stderr will show output/progress from the server (mainly the output that mysqldump itself produces on stderr), while stdout will output the actual gzipped database dump, which is redirected to a file in the example above.

Demo

In the following demo, the left pane is the server view, while the right pane is the client view:

https://github.com/user-attachments/assets/40b897d8-0391-431d-82cb-6e90689cb87d

In practice, fetching a dump like that will be integrated within bash scripts or one-liners like the following:

ssh CONNID:DBNAME:SKIPPED_TABLES@IP -pPORT -T | pv | gunzip | docker exec -i CONTAINER mysql -uUSR -pPASS DBNAME

License

sshdbd is MIT licensed.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL