{"id":16875777,"url":"https://github.com/atompi/culvert","last_synced_at":"2025-03-19T00:22:58.780Z","repository":{"id":257261024,"uuid":"836253451","full_name":"atompi/culvert","owner":"atompi","description":"A tool for create a SSH tunnel.","archived":false,"fork":false,"pushed_at":"2024-07-31T13:12:12.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T01:33:49.030Z","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":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atompi.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":"2024-07-31T13:11:35.000Z","updated_at":"2024-09-15T13:43:17.000Z","dependencies_parsed_at":"2024-09-15T15:58:43.842Z","dependency_job_id":"fa575b76-acc3-44c4-be01-68a96691fee8","html_url":"https://github.com/atompi/culvert","commit_stats":null,"previous_names":["atompi/culvert"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atompi%2Fculvert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atompi%2Fculvert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atompi%2Fculvert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atompi%2Fculvert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atompi","download_url":"https://codeload.github.com/atompi/culvert/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244327069,"owners_count":20435338,"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":[],"created_at":"2024-10-13T15:37:02.326Z","updated_at":"2025-03-19T00:22:58.753Z","avatar_url":"https://github.com/atompi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Culvert\n\nA tool to quickly open ssh forwarding tunnels.\n\n## Build\n\n```\ngit clone https://gitub.com/atompi/culvert.git\ngo build -o examples/culvert\n```\n\n## Start\n\n### modify config yaml\n\n```\ncd examples\ncp culvert.yaml.example culvert.yaml\n```\n\nContent of `culvert.yaml`:\n\n```\n---\ntunnels:\n  - name: devdocs_128    # tunnel name\n    mode: L    # tunnel mode L/R like ssh -L / ssh -R\n    host:\n      ip: 192.168.15.128    # tunnel host ip\n      port: 22    tunnel host ssh port\n      username: atompi    # tunnel host ssh login user\n      password: \"123456\"    # tunnel host ssh login password\n      keyFile: \"./id_rsa\"    # tunnel host ssh login private key\n      keyPassword: \"\"    # tunnel host ssh login private key password\n      knownHost: \"192.168.15.128 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOUDn8tF9i1XwSnYYKnoyR9z4g+pgdMR16vFFVH1UpskxgpAjgjBubdqTmIs1JQ8OJyWBomqandNM2WtIgQqAPc=\"    # known_hosts for tunnel host, generate by command: ssh-keyscan -t ecdsa -p 22 192.168.15.128\n    keepalive:\n      interval: 30    # send keepalive package interval\n      countMax: 2    # max send count\n    remote:\n      bind: 192.168.15.128    # remote bind ip\n      port: 9292    # remote bind port\n    local:\n      bind: 0.0.0.0    # local bind ip\n      port: 19292    # local bind port\n    retryInterval: 5    retry connection interval\n  - name: ssh_128\n    mode: R\n    host:\n      ip: 192.168.15.128\n      port: 22\n      username: atompi\n      password: \"123456\"\n      keyFile: \"./id_rsa\"\n      keyPassword: \"\"\n      knownHost: \"192.168.15.128 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOUDn8tF9i1XwSnYYKnoyR9z4g+pgdMR16vFFVH1UpskxgpAjgjBubdqTmIs1JQ8OJyWBomqandNM2WtIgQqAPc=\"\n    keepalive:\n      interval: 30\n      countMax: 2\n    remote:\n      bind: 0.0.0.0    # only support 0.0.0.0 when create tunnel via \"R\" mode\n      port: 2222\n    local:\n      bind: 192.168.15.128\n      port: 22\n    retryInterval: 5\n\nlog:\n  path: \"./culvert.log\"\n  level: \"INFO\"\n```\n\n### start\n\n+ Option 1: Start frontend\n\n```\n./culvert\n```\n\n+ Option 2: Start with Systemd\n\n```\nmkdir -p /app/culvert\ncp examples/culvert /app/culvert/\ncp examples/culvert.yaml /app/culvert/\ncp examples/culvert.service /lib/systemd/system/\nsystemctl daemon-reload\nsystemctl start culvert\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatompi%2Fculvert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatompi%2Fculvert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatompi%2Fculvert/lists"}