{"id":20961361,"url":"https://github.com/perbu/sshproxy","last_synced_at":"2026-04-27T19:02:06.365Z","repository":{"id":143067739,"uuid":"473196409","full_name":"perbu/sshproxy","owner":"perbu","description":null,"archived":false,"fork":false,"pushed_at":"2023-03-20T06:34:04.000Z","size":29,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-13T06:44:10.753Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/perbu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2022-03-23T13:17:51.000Z","updated_at":"2022-03-23T13:23:07.000Z","dependencies_parsed_at":"2023-04-27T16:45:56.891Z","dependency_job_id":null,"html_url":"https://github.com/perbu/sshproxy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/perbu/sshproxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fsshproxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fsshproxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fsshproxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fsshproxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/perbu","download_url":"https://codeload.github.com/perbu/sshproxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perbu%2Fsshproxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28006955,"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","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"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":[],"created_at":"2024-11-19T02:03:31.398Z","updated_at":"2025-12-24T19:36:43.515Z","avatar_url":"https://github.com/perbu.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sshproxy\n\nThis is a PoC ssh proxy written in Go. It is meant as a toy\nproxy to play around with and help me figure out how exactly \nthe ssh protocol works.\n\nIt is meant to be as simple as possible and the only significant dependency \nis the x/crypto/ssh package. I've seen some other implementations, but these \nhave been rather complex with a heavy reliance on complex closures. \n\nExcept for the obvious lack of security (it accepts any public key)\nthe code should be reasonably ready to be plopped into production.\n\n## How it works\n\nIt binds to port 4222. On a successful authentication it will \nssh into the destination (localhost:3222) and then proxy the connection.\n\n## docker image.\n\n## Alternative approach to proxying\n\nThis approach includes rather protocol-intensive proxying. I'm not familiar enough \nwith SSH to know whether this could be done simpler, perhaps by copying the decrypted bytes\ncoming from the one connection to the next.\n\n## Notable ssh proxies in Go\n\nOther proxies and ssh implementations to look at:\n * https://github.com/appleboy/easyssh-proxy\n * https://github.com/blacknon/go-sshlib \n * https://github.com/tsurubee/sshr\n * https://github.com/gliderlabs/ssh \n\n## How to build\n\nSee the Makefile. It should contain targets for all operations you'll need. \n\n## What is missing?\n\nAt the moment I've not tried sftp. I don't need it, I expect it would work but it does perhaps \nneed changed to sshd_config to allow the sftp subsystem to be enabled.\n\n## Hacks and uglyness.\n\nWhen the channel of requests is closed the proxyRequest function will sleep for 10ms. This is to make\nsure that stdout and stderr gets copied to the client. Suggestions for how to do this \ncleanly are welcome.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperbu%2Fsshproxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperbu%2Fsshproxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperbu%2Fsshproxy/lists"}