Skip to content

soulteary/ssh-config

Repository files navigation

SSH Config Tool

codecov Go Report Card CodeQL Advanced Release

中文文档

SSH Config Tool is a command-line utility for managing SSH configuration files. It allows you to manage your SSH config files using more expressive YAML/JSON formats while still being able to round-trip them back to classic ssh_config syntax.

Features

  • Converts YAML/JSON representations into standard SSH config files
  • Converts classic SSH config files into YAML or JSON for easier editing and review
  • Scans a single file or an entire directory tree (such as ~/.ssh) while skipping key material and other non-config files
  • Supports reading configuration from files or standard input (stdin)
  • Supports output to files or standard output (stdout), creating parent folders when needed
  • Automatically detects the input format (YAML/JSON/SSH Config) and tidies trailing blank lines

Installation

Use Docker or download the binary file suitable for your system and CPU architecture from the GitHub release page.

Alternatively, you can install it via Homebrew.

brew tap soulteary/tap
brew install soulteary/tap/ssh-config

Usage

Basic Usage

ssh-config [options]

Run without arguments to export all SSH configuration under ~/.ssh to YAML on standard output:

ssh-config

Or, use Linux pipes to manipulate files:

cat input_file | ssh-config -to-yaml > output_file

Docker

Download docker image:

docker pull soulteary/ssh-config:latest
# or
docker pull ghcr.io/soulteary/ssh-config:latest

Convert file (test.yaml) in the current directory to YAML (abc.yaml):

docker run --rm -it -v `pwd`:/ssh soulteary/ssh-config:latest ssh-config -to-yaml -src /ssh/test.yaml -dest /ssh/abc.yaml

Just want to see the conversion results:

docker run --rm -it -v `pwd`:/ssh soulteary/ssh-config:latest ssh-config -to-yaml -src /ssh/test.yaml

If you want to use Linux pipelines, you can first enter the Docker interactive command line:

docker run --rm -it -v `pwd`:/ssh soulteary/ssh-config:latest bash
cat /ssh/test.yaml | ssh-config -to-yaml

Options

  • -to-yaml, -to-json, -to-ssh: Specify output format (yaml/json/config), only one output format can be specified at a time.
  • -src: Specify the original configuration file or directory to read from. When omitted, the tool scans ~/.ssh.
  • -dest: Specify the path to save the configuration file. When omitted, the converted result is written to standard output.
  • -help: View program command-line help

Examples

  1. Export the SSH configuration for your current user to YAML (default behaviour):
ssh-config
  1. Convert YAML format to SSH config format:
ssh-config -to-ssh -src input.yaml -dest output.conf
  1. Convert SSH config format to JSON format:
ssh-config -to-json -src ~/.ssh/config -dest output.json
  1. Read from standard input, output to standard output, and save in YAML format:
cat input.conf | ssh-config -to-yaml > output.yaml

Development

Dependencies

  • Go 1.26+

Build

go build

Test

go test -v ./... -covermode=atomic -coverprofile=coverage.out && go tool cover -html=coverage.out -o coverage.html

Contributing

Issues and pull requests are welcome.

License

This project is licensed under the Apache License. See the LICENSE file for details.

Guide

Credits

About

1 MB size, Manage your SSH config with YAML or JSON for easier maintenance. / 1 MB 大小,使用更易维护的 YAML or JSON 管理 SSH 配置文件。

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors