1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-17 02:57:33 -05:00

Add exec/subsystem versions of SSH proxying.

This is a simple tweak to the existing in-process SSH jump host
support, where instead of opening a direct-tcpip channel to the
destination host, we open a session channel and run a process in it to
make the connection to the destination.

So, where the existing jump host support replaced a local proxy
command along the lines of "plink %proxyhost -nc %host %port", this
one replaces "plink %proxyhost run-some-command".

Also added a corresponding option to use a subsystem to make the
connection. (Someone could configure an SSH server to support specific
subsystem names for particular destinations, or a general schema of
subsystem names that include the destination address in some standard
format.)

To avoid overflowing the already-full Proxy config panel with an extra
subtype selector, I've put these in as additional top-level proxy
types, so that instead of just PROXY_SSH we now have three
PROXY_SSH_foo.
This commit is contained in:
Simon Tatham
2022-04-22 14:12:15 +01:00
parent 2a26ebd0d5
commit 6f7c52dcce
4 changed files with 50 additions and 9 deletions

View File

@ -1738,7 +1738,9 @@ void proxy_type_handler(union control *ctrl, dlgparam *dlg,
ADD(PROXY_SOCKS4, "SOCKS 4");
ADD(PROXY_HTTP, "HTTP CONNECT");
if (ssh_proxy_supported) {
ADD(PROXY_SSH, "SSH to proxy and use port forwarding");
ADD(PROXY_SSH_TCPIP, "SSH to proxy and use port forwarding");
ADD(PROXY_SSH_EXEC, "SSH to proxy and execute a command");
ADD(PROXY_SSH_SUBSYSTEM, "SSH to proxy and invoke a subsystem");
}
if (ctrl->generic.context.i & PROXY_UI_FLAG_LOCAL) {
ADD(PROXY_CMD, "Local (run a subprogram to connect)");