{"id":37028121,"url":"https://github.com/1and1/ssh-config","last_synced_at":"2026-01-14T03:21:19.999Z","repository":{"id":78031785,"uuid":"124910553","full_name":"1and1/ssh-config","owner":"1and1","description":"Helps maintaining the SSH config in the users home directory","archived":true,"fork":false,"pushed_at":"2024-06-19T09:50:56.000Z","size":196,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-04T23:18:12.129Z","etag":null,"topics":["autocomplete","bash","configuration","home-directory","java","linux","ssh","utilities"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/1and1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-12T15:29:00.000Z","updated_at":"2024-06-19T09:51:44.000Z","dependencies_parsed_at":"2023-06-15T05:30:31.030Z","dependency_job_id":"62933997-3535-4c40-b64c-8bd2ed1f4c95","html_url":"https://github.com/1and1/ssh-config","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/1and1/ssh-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1and1%2Fssh-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1and1%2Fssh-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1and1%2Fssh-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1and1%2Fssh-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1and1","download_url":"https://codeload.github.com/1and1/ssh-config/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1and1%2Fssh-config/sbom","scorecard":{"id":2018,"data":{"date":"2025-08-11","repo":{"name":"github.com/1and1/ssh-config","commit":"5f04a59645414c7578b32135800a135d160e356f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/1 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/maven-release.yml:1","Warn: no topLevel permission defined: .github/workflows/maven.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/1and1/ssh-config/maven-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/1and1/ssh-config/maven-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-release.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/1and1/ssh-config/maven-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-release.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/1and1/ssh-config/maven-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven-release.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/1and1/ssh-config/maven-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/1and1/ssh-config/maven.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/1and1/ssh-config/maven.yml/master?enable=pin","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact SSHConfig-1.1.11 not signed: https://api.github.com/repos/1and1/ssh-config/releases/85952626","Warn: release artifact v1.1.6 not signed: https://api.github.com/repos/1and1/ssh-config/releases/12053696","Warn: release artifact v1.1.5 not signed: https://api.github.com/repos/1and1/ssh-config/releases/12039716","Warn: release artifact SSHConfig-1.1.11 does not have provenance: https://api.github.com/repos/1and1/ssh-config/releases/85952626","Warn: release artifact v1.1.6 does not have provenance: https://api.github.com/repos/1and1/ssh-config/releases/12053696","Warn: release artifact v1.1.5 does not have provenance: https://api.github.com/repos/1and1/ssh-config/releases/12039716"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-7v6m-28jr-rg84","Warn: Project is vulnerable to: GHSA-x83m-pf6f-pf9g"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T12:46:56.262Z","repository_id":78031785,"created_at":"2025-08-14T12:46:56.262Z","updated_at":"2025-08-14T12:46:56.262Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autocomplete","bash","configuration","home-directory","java","linux","ssh","utilities"],"created_at":"2026-01-14T03:21:19.495Z","updated_at":"2026-01-14T03:21:19.991Z","avatar_url":"https://github.com/1and1.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"SSH-Config\n===================\n[![Java CI with Maven](https://github.com/1and1/ssh-config/actions/workflows/maven.yml/badge.svg)](https://github.com/1and1/ssh-config/actions/workflows/maven.yml)\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/1and1/ssh-config)](https://github.com/1and1/ssh-config/releases)\n[![ReleaseDate](https://img.shields.io/github/release-date/1and1/ssh-config)](https://github.com/1and1/ssh-config/releases)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n*This project has been set to read-only since there is no longer an active maintainer in the organization.*\n\nTool for helping automatically maintain SSH client configs.\nIt can be used to maintain a database of your logins to remote hosts.\n\nSSH-Config has the ability to probe for (new) hosts using the\nDNS service and add the hosts to your SSH config.\nOut of that it can connect to SSH servers and find out which servers are reachable and which aren't.\n\n## Purpose\n\nThe purpose of SSH-Config is to simplify the maintenance of SSH client configurations\ncontaining many hosts. There are Unix shell completion mechanisms that help to\nexpand host names while typing if you have a well-maintained SSH client configuration.\nThis is where the tool comes into place.\n\n## Usage\n\nUse it in your command line. There are multiple use-cases implemented:\n* **Discover (-d):** Discover new hosts given in the command line using DNS lookups.\n* **Update (-u):** Update the known hosts in the database using DNS and tested host reachability. \n* **Export (-e):** Export the database to a file / stdout. Supports filtering by user or group name.\n* **Import (-i):** Import the database from a file / stdin. \n\n\nFull command line parameters:\n```\n -database (-D) FILE : The database to use. (default: /home/$USER/.sshconfig.json\n                       )\n -discover (-d)      : Discover hosts given in the command line using DNS.\n                       (default: false)\n -export (-e)        : Export the database. Writes to stdout or file argument.\n                       User and group parameters can be used for filtering.\n                       (default: false)\n -group (-G) GROUP   : The group name to use for the entry for discovery or\n                       export filtering.\n -help (-h)          : Show this command line help. (default: true)\n -import (-i)        : Import a database. Reads either from argument or stdin.\n                       (default: false)\n -sshcfg (-s) FILE   : The ssh config to update. (default:\n                       /home/$USER/.ssh/config)\n -update (-u)        : Update all database hosts IP addresses. (default: false)\n -user (-U) USER     : The user name to use for the entry for discovery or\n                       export filtering.\n```\n\n### Use case 1: Add new hosts to your `$HOME/.ssh/config`\n\nTo add new hosts to your ssh config you typically issue a command like this:\n\n```\n$ ssh-config -d vm-alpha vm-beta vm-gamma\n$\n```\n\nAfter this there are entries in the database `$HOME/.sshconfig.json`\n\n```\n...\n   {\n      \"name\" : \"vm-alpha\",\n      \"createdAt\" : 1504778353193,\n      \"enabled\" : true,\n      \"fqdn\" : \"vm-alpha.foo.domain\",\n      \"sshServerVersion\" : \"SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u3\",\n      \"id\" : \"a7369847-e833-49bd-af95-e0d1292b3ed6\",\n      \"updatedAt\" : 1520958429041,\n      \"ips\" : [\n         \"10.123.123.123\"\n      ]\n   },\n...\n```\n\nand in your $HOME/.ssh/config:\n\n```\n...\n# \u003c\u003c\u003c BEGIN{a7369847-e833-49bd-af95-e0d1292b3ed6}\nHost vm-alpha\n\tHostname vm-alpha.foo.domain\n\tHostname 10.123.123.123\n# \u003e\u003e\u003e END{a7369847-e833-49bd-af95-e0d1292b3ed6}\n...\n```\n\n### Use case 2: Update hosts to your ~/.ssh/config\n\nTo update the existing hosts to your ssh config you typically issue a command like this:\n\n```\n$ ssh-config -u\n$\n```\n\nAfter this there are updated entries in the database $HOME/.sshconfig.json\n\n```\n...\n   {\n      \"name\" : \"vm-alpha\",\n      \"createdAt\" : 1504778353193,\n      \"enabled\" : false,\n      \"fqdn\" : \"vm-alpha.foo.domain\",\n      \"sshServerVersion\" : \"SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u3\",\n      \"id\" : \"a7369847-e833-49bd-af95-e0d1292b3ed6\",\n      \"updatedAt\" : 1520959605730,\n      \"ips\" : [\n         \"10.123.123.123\"\n      ]\n   },\n...\n```\n\nAnd the host is removed because of no longer reachability in your $HOME/.ssh/config.\n\n## Files\n\nThe files involved are:\n* `~/.ssh/config`: The SSH config being read to and written to. The SSH-Config specific parts are marked with special magic markers so the config does not get messed up completely.\n* `~/.sshconfig.json`: A JSON file that holds the data for all hosts. Is used to track which hosts are reachable or not, because only reachable hosts are takeninto the SSH client config above.\n\n## Installation\n\nThere's a Debian and a CentOS package provided for installation.\nPlease see the [Releases](https://github.com/1and1/ssh-config/releases) section on Github.\nBoth install a shell wrapper in `/usr/bin/ssh-config`.\n\n## Building\n\nThe system requirements for building are\n* Oracle JDK 8\n* Apache Maven for building\n\nBuilding can be triggered with the command\n```\nmvn clean package\n```\n\n## License\n\nCopyright 2018 1\u00261 Internet SE\nCopyright 2019 1\u00261 Ionos SE\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1and1%2Fssh-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1and1%2Fssh-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1and1%2Fssh-config/lists"}