Skip to content

Latest commit

 

History

History
128 lines (82 loc) · 3.69 KB

README.md

File metadata and controls

128 lines (82 loc) · 3.69 KB

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.

Features

  • Supports conversion from YAML/JSON format to standard SSH config format
  • Supports conversion from standard SSH config format to YAML/JSON format
  • Supports reading configuration from files or standard input (stdin)
  • Supports output to files or standard output (stdout)
  • Automatically detects input format (YAML/JSON/SSH Config)

Installation

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

Usage

Basic Usage

ssh-config [options] <input_file> <output_file>

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:v1.1.1
# or
docker pull ghcr.io/soulteary/ssh-config:v1.1.1

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

docker run --rm -it -v `pwd`:/ssh soulteary/ssh-config:v1.1.1 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:v1.1.1 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:v1.1.1 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
  • -dest: Specify the path to save the configuration file
  • -help: View program command-line help

Examples

  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.23+

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