\cfg{man-identity}{psocks}{1}{2021-04-08}{PuTTY tool suite}{PuTTY tool suite}

\H{psocks-manpage} Man page for \cw{psocks}

\S{psocks-manpage-name} NAME

\cw{psocks} \- simple SOCKS proxy server

\S{psocks-manpage-synopsis} SYNOPSIS

\c psocks [ -d ] [ -f | -p pipe-cmd ] [ -g ] [ port-number ]
\e bbbbbb   bb     bb   bb iiiiiiii     bb     iiiiiiiiiii

\S{psocks-manpage-description} DESCRIPTION

\cw{psocks} is a simple SOCKS4/5 proxy server. It supports proxying
IPv4 and IPv6 connections. It does not support requiring
authentication of its clients.

\cw{psocks} can be used together with an SSH client such as
\cw{putty(1)} to implement a reverse dynamic SSH tunnel. It can also
be used for network protocol debugging, as it can record all the
traffic passing through it in various ways.

By default, \cw{psocks} listens to connections from localhost only,
on TCP port 1080. A different \e{port-number} can optionally be
supplied, and with \cw{-g} it will listen to connections from any
host.

\cw{psocks} will emit log messages about connections it receives on
standard error. With \cw{-d}, it will log the contents of those
connections too.

\S{psocks-manpage-options} OPTIONS

The command-line options supported by \cw{psocks} are:

\dt \cw{-g}

\dd Accept connections from anywhere. By default, \cw{psocks} only
accepts connections on the loopback interface.

\dt \cw{--exec} \e{command}

\dd \cw{psocks} will run the provided command as a subprocess. When
the subprocess terminates, \cw{psocks} will terminate as well.

\lcont{

All arguments on the \cw{psocks} command line after \cw{--exec} will be
treated as part of the command to run, even if they look like other
valid \cw{psocks} options.

}

\dt \cw{-d}

\dd Log all traffic to standard error, in a more or less human-readable
form (in addition to messages about connections being opened and
closed, which are always logged).

\dt \cw{-f}

\dd Record all traffic to files. For every incoming connection, two
files are created, \cw{sockout.NNNN} and \cw{sockin.NNNN}, where
\e{NNNN} is a decimal index starting at 0 identifying the proxied
connection. These record, respectively, traffic from the SOCKS client,
and from the server it connected to through the proxy.

\dt \cw{-p} \e{pipe-cmd}

\dd Pipe all traffic to a command. For every incoming connection,
\e{pipe-cmd} is invoked twice:

\lcont{
\c pipe-cmd out N
\e iiiiiiii bbb i
\c pipe-cmd in N
\e iiiiiiii bb i

Each command will run for the direction of a proxied connection, and
have the connection's traffic piped into it, similar to \cw{-f}.
}

\S{psocks-manpage-examples} EXAMPLES

In combination with the \e{plink(1)} SSH client, to set up a reverse
dynamic SSH tunnel, in which the remote listening port 1080 on
remote host \cw{myhost} acts as a SOCKS server giving access to your
local network:

\c psocks 12345 --exec plink -R 1080:localhost:12345 user@myhost
