An open API service indexing awesome lists of open source software.

https://github.com/compulim/uncork

SSH-over-HTTPS proxy that works like Unix "corkscrew"
https://github.com/compulim/uncork

Last synced: about 1 month ago
JSON representation

SSH-over-HTTPS proxy that works like Unix "corkscrew"

Awesome Lists containing this project

README

        

# uncork

[![npm version](https://badge.fury.io/js/uncork.svg)](https://npmjs.com/package/uncork) [![npm downloads](https://img.shields.io/npm/dm/uncork.svg)](https://npmjs.com/package/uncork)

SSH-over-HTTPS proxy that works like Unix [`corkscrew`](http://agroman.net/corkscrew/).

# Install

Run `npm install uncork -g` to install `uncork` globally.

# Run

> Before running `uncork`, make sure your proxy is set in environment variable as either `HTTPS_PROXY` or `HTTP_PROXY`.

Run `uncork 22 ssh.github.com:443` to start `uncork` server on port 22 and forward to [ssh.github.com:443](ssh://ssh.github.com:443).

```
SSH-over-HTTPS proxy 1.0.0

- Listening on port 22
- Will connect to HTTPS proxy at 127.0.0.1:8888
- Will tunnel traffic to destination at ssh.github.com:443
```

If your proxy server requires authentication, you can run `uncork 22 ssh.github.com:443 johndoe P@ssw0rd` to start `uncork` server with BASIC authentication.

## Options via environment variables

You can also set options thru environment variables listed below.

| Environment variable | Description | Default |
| ----------------------- | --------------------------------------- | -------------------- |
| `uncork_destination` | Destination hostname and port | `ssh.github.com:443` |
| `uncork_port` | Port number to listen to | `22` |
| `uncork_proxy_username` | Username for proxy BASIC authentication | |
| `uncork_proxy_password` | Password for proxy BASIC authentication | |

# How we use `uncork`

At our customer site, their Windows boxes are shared and locked behind firewall with HTTPS proxy. We want to use Git client to read/write to GitHub via SSH. We prefer SSH because we can use deploy keys to limit access to our repositories.

Our requirements:

* Use GitHub deploy keys, which is SSH only
* Work thru their HTTPS proxy
* Only allow traffic to external servers on port 443
* Requires authentication, supports both BASIC and NTLM
* XCOPY deployment
* Do not require administrative privileges
* Minimal footprint

Fortunately, GitHub has a SSH server setup on port 443 instead of 22, described in this [article](https://help.github.com/articles/using-ssh-over-the-https-port/).

Assume our repository is setup with SSH deploy keys generated by `puttygen`.

On Windows box:

* Install [PuTTY suite](http://www.chiark.greenend.org.uk/~sgtatham/putty/), specifically `plink.exe` and `pageant.exe`
* Set environment variable `GIT_SSH` and point to `plink.exe`
* Run `SETX GIT_SSH `, this will set a per-user permanent environment variable
* Load the deploy key
* Run `pageant.exe`
* Install and run `uncork`
* Run `npm install uncork -g`
* Run `uncork 22 ssh.github.com:443`
* Clone the repository
* Run `git clone git@localhost/org/reponame.git`

> Although some steps mentioned above requires administrative privileges, we actually build a ZIP file to contain all the installed components mentioned.

# Contribution

Like us? [Star](https://github.com/compulim/uncork/stargazers) us.

Found a bug? [File](https://github.com/compulim/uncork/issues) us an issue.