{"id":13413632,"url":"https://github.com/gliderlabs/ssh","last_synced_at":"2025-05-12T05:20:06.644Z","repository":{"id":37318403,"uuid":"69914159","full_name":"gliderlabs/ssh","owner":"gliderlabs","description":"Easy SSH servers in Golang","archived":false,"fork":false,"pushed_at":"2025-01-27T22:38:18.000Z","size":2083,"stargazers_count":3881,"open_issues_count":55,"forks_count":470,"subscribers_count":66,"default_branch":"master","last_synced_at":"2025-05-12T02:43:23.038Z","etag":null,"topics":["golang","golang-package","ssh","ssh-server"],"latest_commit_sha":null,"homepage":"https://godoc.org/github.com/gliderlabs/ssh","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gliderlabs.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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-03T21:53:44.000Z","updated_at":"2025-05-11T18:57:28.000Z","dependencies_parsed_at":"2023-09-27T22:53:08.185Z","dependency_job_id":"8a25a15b-4c9f-43b4-a6a1-cccf2c2e15f9","html_url":"https://github.com/gliderlabs/ssh","commit_stats":{"total_commits":104,"total_committers":44,"mean_commits":"2.3636363636363638","dds":0.75,"last_synced_commit":"adec695b0aa80b0a03f251e1f8c302f0ea192ef5"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gliderlabs%2Fssh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gliderlabs%2Fssh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gliderlabs%2Fssh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gliderlabs%2Fssh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gliderlabs","download_url":"https://codeload.github.com/gliderlabs/ssh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253672696,"owners_count":21945480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["golang","golang-package","ssh","ssh-server"],"created_at":"2024-07-30T20:01:44.986Z","updated_at":"2025-05-12T05:20:06.604Z","avatar_url":"https://github.com/gliderlabs.png","language":"Go","readme":"# gliderlabs/ssh\n\n[![GoDoc](https://godoc.org/github.com/gliderlabs/ssh?status.svg)](https://godoc.org/github.com/gliderlabs/ssh) \n[![CircleCI](https://img.shields.io/circleci/project/github/gliderlabs/ssh.svg)](https://circleci.com/gh/gliderlabs/ssh)\n[![Go Report Card](https://goreportcard.com/badge/github.com/gliderlabs/ssh)](https://goreportcard.com/report/github.com/gliderlabs/ssh) \n[![OpenCollective](https://opencollective.com/ssh/sponsors/badge.svg)](#sponsors)\n[![Slack](http://slack.gliderlabs.com/badge.svg)](http://slack.gliderlabs.com) \n[![Email Updates](https://img.shields.io/badge/updates-subscribe-yellow.svg)](https://app.convertkit.com/landing_pages/243312)\n\n\u003e The Glider Labs SSH server package is dope.  \u0026mdash;[@bradfitz](https://twitter.com/bradfitz), Go team member\n\nThis Go package wraps the [crypto/ssh\npackage](https://godoc.org/golang.org/x/crypto/ssh) with a higher-level API for\nbuilding SSH servers. The goal of the API was to make it as simple as using\n[net/http](https://golang.org/pkg/net/http/), so the API is very similar:\n\n```go\n package main\n\n import (\n     \"github.com/gliderlabs/ssh\"\n     \"io\"\n     \"log\"\n )\n\n func main() {\n     ssh.Handle(func(s ssh.Session) {\n         io.WriteString(s, \"Hello world\\n\")\n     })  \n\n     log.Fatal(ssh.ListenAndServe(\":2222\", nil))\n }\n\n```\nThis package was built by [@progrium](https://twitter.com/progrium) after working on nearly a dozen projects at Glider Labs using SSH and collaborating with [@shazow](https://twitter.com/shazow) (known for [ssh-chat](https://github.com/shazow/ssh-chat)).\n\n## Examples\n\nA bunch of great examples are in the `_examples` directory.\n\n## Usage\n\n[See GoDoc reference.](https://godoc.org/github.com/gliderlabs/ssh)\n\n## Contributing\n\nPull requests are welcome! However, since this project is very much about API\ndesign, please submit API changes as issues to discuss before submitting PRs.\n\nAlso, you can [join our Slack](http://slack.gliderlabs.com) to discuss as well.\n\n## Roadmap\n\n* Non-session channel handlers\n* Cleanup callback API\n* 1.0 release\n* High-level client?\n\n## Sponsors\n\nBecome a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/ssh#sponsor)]\n\n\u003ca href=\"https://opencollective.com/ssh/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/10/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/10/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/11/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/11/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/12/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/12/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/13/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/13/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/14/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/14/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/15/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/15/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/16/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/16/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/17/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/17/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/18/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/18/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/19/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/19/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/20/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/20/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/21/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/21/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/22/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/22/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/23/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/23/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/24/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/24/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/25/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/25/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/26/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/26/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/27/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/27/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/28/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/28/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ssh/sponsor/29/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ssh/sponsor/29/avatar.svg\"\u003e\u003c/a\u003e\n\n## License\n\n[BSD](LICENSE)\n","funding_links":["https://opencollective.com/ssh"],"categories":["Go","开源类库","Networking","Go (134)","Open source library","语言资源库","golang","网络相关库","Relational Databases","\u003cspan id=\"网络-networking\"\u003e网络 Networking\u003c/span\u003e","网络","網絡"],"sub_categories":["网络","Transliteration","The Internet","Uncategorized","go","暂未分类","\u003cspan id=\"高级控制台用户界面-advanced-console-uis\"\u003e高级控制台用户界面 Advanced Console UIs\u003c/span\u003e","Advanced Console UIs","音译","高级控制台界面","高級控制台界面","Strings","交流","暂未分类这些库被放在这里是因为其他类别似乎都不适合。"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgliderlabs%2Fssh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgliderlabs%2Fssh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgliderlabs%2Fssh/lists"}