JulAlx
5 years ago
committed by
GitHub
1 changed files with 139 additions and 0 deletions
@ -0,0 +1,139 @@ |
|||
----------- |
|||
proxytunnel |
|||
----------- |
|||
|
|||
Author: Jos Visser <josv@osp.nl>, Mark Janssen <maniac@maniac.nl> |
|||
|
|||
Hi all, |
|||
|
|||
This is proxytunnel, a program that connects stdin and stdout |
|||
to an origin server somewhere in the Internet through an industry |
|||
standard HTTPS proxy. I originally wrote this program to be used |
|||
as an extension to SSH, to be able to SSH to my box at home. In |
|||
this file, I will describe the use with SSH. If you want to use it |
|||
with some other application, feel free, and let me know! |
|||
|
|||
|
|||
Usage: |
|||
|
|||
Proxytunnel is very easy to use, when running proxytunnel with the help |
|||
option it specifies it's command-line options. |
|||
|
|||
$ ./proxytunnel --help |
|||
proxytunnel 1.9.9 Copyright 2001-2018 Proxytunnel Project |
|||
Usage: proxytunnel [OPTIONS]... |
|||
Build generic tunnels through HTTPS proxies using HTTP authentication |
|||
|
|||
Standard options: |
|||
-i, --inetd Run from inetd (default: off) |
|||
-a, --standalone=INT Run as standalone daemon on specified port |
|||
-p, --proxy=STRING Local proxy host:port combination |
|||
-r, --remproxy=STRING Remote proxy host:port combination (using 2 proxies) |
|||
-d, --dest=STRING Destination host:port combination |
|||
-e, --encrypt SSL encrypt data between local proxy and destination |
|||
-E, --encrypt-proxy SSL encrypt data between client and local proxy |
|||
-X, --encrypt-remproxy SSL encrypt data between local and remote proxy |
|||
-L (legacy) enforce TLSv1 connection |
|||
-T, --no-ssl3 Do not connect using SSLv3 |
|||
|
|||
Additional options for specific features: |
|||
-z, --no-check-certficate Don't verify server SSL certificate |
|||
-C, --cacert=STRING Path to trusted CA certificate or directory |
|||
-F, --passfile=STRING File with credentials for proxy authentication |
|||
-P, --proxyauth=STRING Proxy auth credentials user:pass combination |
|||
-R, --remproxyauth=STRING Remote proxy auth credentials user:pass combination |
|||
-N, --ntlm Use NTLM based authentication |
|||
-t, --domain=STRING NTLM domain (default: autodetect) |
|||
-H, --header=STRING Add additional HTTP headers to send to proxy |
|||
-o STRING send custom Host Header |
|||
-x, --proctitle=STRING Use a different process title |
|||
|
|||
Miscellaneous options: |
|||
-v, --verbose Turn on verbosity |
|||
-q, --quiet Suppress messages |
|||
-h, --help Print help and exit |
|||
-V, --version Print version and exit |
|||
|
|||
To use this program with OpenSSH to connect to a host somewhere, create |
|||
a $HOME/.ssh/config file with the following content: |
|||
|
|||
Host foobar |
|||
ProtocolKeepAlives 30 |
|||
ProxyCommand /path/to/proxytunnel -p proxy:8080 -P username |
|||
-d mybox.athome.nl:443 |
|||
|
|||
With: |
|||
|
|||
- foobar The symbolic name of the host you want to connect to |
|||
- proxy The host name of the proxy you want to connect through |
|||
- 8080 The port number where the proxy software listens to |
|||
- username Your proxy userid (password will be prompted) |
|||
- mybox.athome.nl The hostname of the box you want to connect to (ultimately) |
|||
- 443 The port number of the SSH daemon on mybox.athome.nl |
|||
|
|||
If your proxy doesn't require the username and password for using it, |
|||
you can skip these options. If you don't provide the password on the |
|||
command-line (which is recommended) you will be prompted for it by |
|||
proxytunnel. If you are on a trusted system you can also put the |
|||
password in an environment variable, and tell proxytunnel where to |
|||
find it with '-S'. |
|||
|
|||
If you want to run proxytunnel from inetd add the '--inetd' option. |
|||
|
|||
Most HTTPS proxies do not allow access to ports other than 443 (HTTPS) |
|||
and 563 (SNEWS), so some hacking is necessary to start the SSH daemon on |
|||
the required port. (On the server side add an extra Port statement in |
|||
the sshd_config file, or use a redirect rule in your firewall.) |
|||
|
|||
When your proxy uses NTLM authentication (like Microsoft IIS proxy) |
|||
you need to specify -N to enable NTLM, and then specify your username |
|||
and password (and optionally domain, if autodetection fails). |
|||
The NT domain can be specified on the commandline if the |
|||
auto-detection doesn't work for you (which is usually doesn't) |
|||
|
|||
If you want to have the first proxy connect to another http proxy (like |
|||
one you can control, specify -r proxy2:port. The first proxy will then |
|||
connect to this remote proxy, which will be asked to connect to the |
|||
requested destination. Note that authentication doesn't (yet) work on |
|||
this remote proxy. For more information regarding this feature, check |
|||
out http://dag.wieers.com/howto/ssh-http-tunneling/ |
|||
|
|||
If your proxy is more advanced, and does protocol inspection it will |
|||
detect that your connection is not a real HTTPS/SSL connection. You |
|||
can enable SSL encryption (using -e), which will work around this |
|||
problem, however, you need to setup stunnel4 on the other side, or |
|||
connect to a process that understands SSL itself. |
|||
|
|||
When all this is in place, execute an "ssh foobar" and you're in business! |
|||
|
|||
Environment Variables |
|||
===================== |
|||
|
|||
Proxytunnel can make use of the following environment variables: |
|||
PROXYUSER Username for the proxy-authentication |
|||
PROXYPASS Password for the proxy-authentication |
|||
REMPROXYUSER Username for remote proxy-authentication |
|||
REMPROXYPASS Password for remote proxy-authentication |
|||
HTTP_PROXY Primary proxy host and port information |
|||
Format: HTTP_PROXY=http://<host>:<port>/ |
|||
|
|||
Authentication File |
|||
=================== |
|||
|
|||
Proxytunnel can read authentication data from a file (-F/--passfile) |
|||
The format for this file is: |
|||
<field> = <value> |
|||
<field> = <value> |
|||
etc |
|||
|
|||
One entry per line, 1 space before and after the equal sign. |
|||
The accepted fields are: |
|||
* proxy_user |
|||
* proxy_passwd |
|||
* remproxy_user |
|||
* remproxy_passwd |
|||
|
|||
Share and Enjoy! |
|||
|
|||
Jos Visser <josv@osp.nl> |
|||
Mark Janssen <maniac@maniac.nl> |
Loading…
Reference in new issue