{"id":19523285,"url":"https://github.com/niklasb/vvz-ssh","last_synced_at":"2026-04-15T20:03:41.336Z","repository":{"id":4010646,"uuid":"5109217","full_name":"niklasb/vvz-ssh","owner":"niklasb","description":"An SSH tunnel for VVZ","archived":false,"fork":false,"pushed_at":"2012-07-19T11:59:34.000Z","size":87,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-08T14:39:10.613Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niklasb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-07-19T11:54:38.000Z","updated_at":"2013-02-24T17:12:49.000Z","dependencies_parsed_at":"2022-08-06T14:30:30.529Z","dependency_job_id":null,"html_url":"https://github.com/niklasb/vvz-ssh","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niklasb%2Fvvz-ssh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niklasb%2Fvvz-ssh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niklasb%2Fvvz-ssh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niklasb%2Fvvz-ssh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niklasb","download_url":"https://codeload.github.com/niklasb/vvz-ssh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240771897,"owners_count":19854982,"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-11-11T00:42:56.816Z","updated_at":"2026-04-15T20:03:36.284Z","avatar_url":"https://github.com/niklasb.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"## SSH port-forward only and Savon config\n\nThis is a quick hackup of a nice way to allow our Heroku application\nVorlesungsverzeichnis to access the web service it depends on. The idea:\n\n1. Heroku gets a unique SSH key\n2. One of our intranet accounts is configured to allow SSH connections via\n   this key via the `authorized_keys` file. This is not a security problem\n   because we can disallow the execution of commands and arbitrary port forwards.\n   We only allow exactly one thing: to access one single host:port combination.\n3. A standalone Ruby application based on `Net::SSH` runs on Heroku with the\n   sole purpose of tunneling our port via SSH\n4. Savon is configured to access the web service through that local forward.\n   This is a bit tricky because we need to set the correct `Host` header and\n   rewrite URLs from the WSDL that point to the original host name of the\n   service.\n\n### Files and directories\n\n* `ssh_tunnel_client.rb`: The SSH tunnel client\n* `savon.rb`: Example Ruby script to show how Savon has to be configured to\n  access the tunneled service\n* `example-dotssh`: An example `~/.ssh` directory showing off the SSH config\n\n### Installation\n\n1. On the tunnel server (probably an ATIS shell server), create a new SSH\n   client key: `ssh-keygen -b 4096`\n2. Use the provided `~/.ssh` example directory as a basis and add the new key\n   to the `authorized_keys` file with the config shown in the example\n3. Deploy the `ssh_tunnel_client.rb` app to Heroku, along with the private and\n   public key (remember, the key can *only* be used for ths specified port forwarding,\n   not for shell access).\n4. Enjoy\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniklasb%2Fvvz-ssh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniklasb%2Fvvz-ssh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniklasb%2Fvvz-ssh/lists"}