mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-02-03 21:52:24 +00:00
Add the remote counterpart for the `local port forwardings accept
connections from outside localhost' switch. Interestingly OpenSSH 3.0 appears to ignore this (though I know it works because ssh.com 3.0 gets it right, and the SSH packet dump agrees that I'm doing the right thing). [originally from svn r1496]
This commit is contained in:
parent
f10f7c966a
commit
88a3baa065
@ -1,4 +1,4 @@
|
|||||||
\versionid $Id: config.but,v 1.21 2001/12/14 14:57:50 simon Exp $
|
\versionid $Id: config.but,v 1.22 2001/12/15 12:15:24 simon Exp $
|
||||||
|
|
||||||
\C{config} Configuring PuTTY
|
\C{config} Configuring PuTTY
|
||||||
|
|
||||||
@ -1576,6 +1576,27 @@ in the list box.
|
|||||||
To remove a port forwarding, simply select its details in the list
|
To remove a port forwarding, simply select its details in the list
|
||||||
box, and click the \q{Remove} button.
|
box, and click the \q{Remove} button.
|
||||||
|
|
||||||
|
\S{config-ssh-portfwd-localhost} Controlling the visibility of
|
||||||
|
forwarded ports
|
||||||
|
|
||||||
|
\cfg{winhelp-topic}{ssh.tunnels.portfwd.localhost}
|
||||||
|
|
||||||
|
The source port for a forwarded connection usually does not accept
|
||||||
|
connections from any machine except the SSH client or server machine
|
||||||
|
itself (for local and remote forwardings respectively). There are
|
||||||
|
controls in the Tunnels panel to change this:
|
||||||
|
|
||||||
|
\b The \q{Local ports accept connections from other hosts} option
|
||||||
|
allows you to set up local-to-remote port forwardings in such a way
|
||||||
|
that machines other than your client PC can connect to the forwarded
|
||||||
|
port.
|
||||||
|
|
||||||
|
\b The \q{Remote ports do the same} option does the same thing for
|
||||||
|
remote-to-local port forwardings (so that machines other than the
|
||||||
|
SSH server machine can connect to the forwarded port.) Note that
|
||||||
|
this feature is only available in the SSH 2 protocol, and not all
|
||||||
|
SSH 2 servers support it (OpenSSH 3.0 does not, for example).
|
||||||
|
|
||||||
\H{config-file} Storing configuration in a file
|
\H{config-file} Storing configuration in a file
|
||||||
|
|
||||||
PuTTY does not currently support storing its configuration in a file
|
PuTTY does not currently support storing its configuration in a file
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
\versionid $Id: using.but,v 1.4 2001/12/13 17:38:59 simon Exp $
|
\versionid $Id: using.but,v 1.5 2001/12/15 12:15:24 simon Exp $
|
||||||
|
|
||||||
\C{using} Using PuTTY
|
\C{using} Using PuTTY
|
||||||
|
|
||||||
@ -291,6 +291,22 @@ To do this, just select the \q{Remote} radio button instead of the
|
|||||||
number on the \e{server} (note that most servers will not allow you
|
number on the \e{server} (note that most servers will not allow you
|
||||||
to use port numbers under 1024 for this purpose).
|
to use port numbers under 1024 for this purpose).
|
||||||
|
|
||||||
|
The source port for a forwarded connection usually does not accept
|
||||||
|
connections from any machine except the SSH client or server machine
|
||||||
|
itself (for local and remote forwardings respectively). There are
|
||||||
|
controls in the Tunnels panel to change this:
|
||||||
|
|
||||||
|
\b The \q{Local ports accept connections from other hosts} option
|
||||||
|
allows you to set up local-to-remote port forwardings in such a way
|
||||||
|
that machines other than your client PC can connect to the forwarded
|
||||||
|
port.
|
||||||
|
|
||||||
|
\b The \q{Remote ports do the same} option does the same thing for
|
||||||
|
remote-to-local port forwardings (so that machines other than the
|
||||||
|
SSH server machine can connect to the forwarded port.) Note that
|
||||||
|
this feature is only available in the SSH 2 protocol, and not all
|
||||||
|
SSH 2 servers support it (OpenSSH 3.0 does not, for example).
|
||||||
|
|
||||||
\H{using-rawprot} Making raw TCP connections
|
\H{using-rawprot} Making raw TCP connections
|
||||||
|
|
||||||
A lot of Internet protocols are composed of commands and responses
|
A lot of Internet protocols are composed of commands and responses
|
||||||
|
3
putty.h
3
putty.h
@ -347,7 +347,8 @@ typedef struct {
|
|||||||
int x11_forward;
|
int x11_forward;
|
||||||
char x11_display[128];
|
char x11_display[128];
|
||||||
/* port forwarding */
|
/* port forwarding */
|
||||||
int lport_acceptall; /* accepts connection from hosts other than localhost */
|
int lport_acceptall; /* accept conns from hosts other than localhost */
|
||||||
|
int rport_acceptall; /* same for remote forwarded ports (SSH2 only) */
|
||||||
char portfwd[1024]; /* [LR]localport\thost:port\000[LR]localport\thost:port\000\000 */
|
char portfwd[1024]; /* [LR]localport\thost:port\000[LR]localport\thost:port\000\000 */
|
||||||
} Config;
|
} Config;
|
||||||
|
|
||||||
|
@ -265,6 +265,7 @@ void save_settings(char *section, int do_host, Config * cfg)
|
|||||||
write_setting_i(sesskey, "X11Forward", cfg->x11_forward);
|
write_setting_i(sesskey, "X11Forward", cfg->x11_forward);
|
||||||
write_setting_s(sesskey, "X11Display", cfg->x11_display);
|
write_setting_s(sesskey, "X11Display", cfg->x11_display);
|
||||||
write_setting_i(sesskey, "LocalPortAcceptAll", cfg->lport_acceptall);
|
write_setting_i(sesskey, "LocalPortAcceptAll", cfg->lport_acceptall);
|
||||||
|
write_setting_i(sesskey, "RemotePortAcceptAll", cfg->rport_acceptall);
|
||||||
{
|
{
|
||||||
char buf[2 * sizeof(cfg->portfwd)], *p, *q;
|
char buf[2 * sizeof(cfg->portfwd)], *p, *q;
|
||||||
p = buf;
|
p = buf;
|
||||||
@ -501,6 +502,7 @@ void load_settings(char *section, int do_host, Config * cfg)
|
|||||||
sizeof(cfg->x11_display));
|
sizeof(cfg->x11_display));
|
||||||
|
|
||||||
gppi(sesskey, "LocalPortAcceptAll", 0, &cfg->lport_acceptall);
|
gppi(sesskey, "LocalPortAcceptAll", 0, &cfg->lport_acceptall);
|
||||||
|
gppi(sesskey, "RemotePortAcceptAll", 0, &cfg->rport_acceptall);
|
||||||
{
|
{
|
||||||
char buf[2 * sizeof(cfg->portfwd)], *p, *q;
|
char buf[2 * sizeof(cfg->portfwd)], *p, *q;
|
||||||
gpps(sesskey, "PortForwardings", "", buf, sizeof(buf));
|
gpps(sesskey, "PortForwardings", "", buf, sizeof(buf));
|
||||||
|
3
ssh.c
3
ssh.c
@ -4607,6 +4607,9 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt)
|
|||||||
ssh2_pkt_init(SSH2_MSG_GLOBAL_REQUEST);
|
ssh2_pkt_init(SSH2_MSG_GLOBAL_REQUEST);
|
||||||
ssh2_pkt_addstring("tcpip-forward");
|
ssh2_pkt_addstring("tcpip-forward");
|
||||||
ssh2_pkt_addbool(1);/* want reply */
|
ssh2_pkt_addbool(1);/* want reply */
|
||||||
|
if (cfg.rport_acceptall)
|
||||||
|
ssh2_pkt_addstring("0.0.0.0");
|
||||||
|
else
|
||||||
ssh2_pkt_addstring("127.0.0.1");
|
ssh2_pkt_addstring("127.0.0.1");
|
||||||
ssh2_pkt_adduint32(sport);
|
ssh2_pkt_adduint32(sport);
|
||||||
ssh2_pkt_send();
|
ssh2_pkt_send();
|
||||||
|
22
windlg.c
22
windlg.c
@ -545,6 +545,7 @@ enum { IDCX_ABOUT =
|
|||||||
IDC_X11_DISPSTATIC,
|
IDC_X11_DISPSTATIC,
|
||||||
IDC_X11_DISPLAY,
|
IDC_X11_DISPLAY,
|
||||||
IDC_LPORT_ALL,
|
IDC_LPORT_ALL,
|
||||||
|
IDC_RPORT_ALL,
|
||||||
IDC_PFWDSTATIC,
|
IDC_PFWDSTATIC,
|
||||||
IDC_PFWDSTATIC2,
|
IDC_PFWDSTATIC2,
|
||||||
IDC_PFWDREMOVE,
|
IDC_PFWDREMOVE,
|
||||||
@ -896,7 +897,6 @@ char *help_context_cmd(int id)
|
|||||||
case IDC_X11_DISPSTATIC:
|
case IDC_X11_DISPSTATIC:
|
||||||
case IDC_X11_DISPLAY:
|
case IDC_X11_DISPLAY:
|
||||||
return "JI(`',`ssh.tunnels.x11')";
|
return "JI(`',`ssh.tunnels.x11')";
|
||||||
case IDC_LPORT_ALL:
|
|
||||||
case IDC_PFWDSTATIC:
|
case IDC_PFWDSTATIC:
|
||||||
case IDC_PFWDSTATIC2:
|
case IDC_PFWDSTATIC2:
|
||||||
case IDC_PFWDREMOVE:
|
case IDC_PFWDREMOVE:
|
||||||
@ -909,6 +909,9 @@ char *help_context_cmd(int id)
|
|||||||
case IDC_PFWDLOCAL:
|
case IDC_PFWDLOCAL:
|
||||||
case IDC_PFWDREMOTE:
|
case IDC_PFWDREMOTE:
|
||||||
return "JI(`',`ssh.tunnels.portfwd')";
|
return "JI(`',`ssh.tunnels.portfwd')";
|
||||||
|
case IDC_LPORT_ALL:
|
||||||
|
case IDC_RPORT_ALL:
|
||||||
|
return "JI(`',`ssh.tunnels.portfwd.localhost')";
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -1171,6 +1174,7 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess)
|
|||||||
SetDlgItemText(hwnd, IDC_X11_DISPLAY, cfg.x11_display);
|
SetDlgItemText(hwnd, IDC_X11_DISPLAY, cfg.x11_display);
|
||||||
|
|
||||||
CheckDlgButton(hwnd, IDC_LPORT_ALL, cfg.lport_acceptall);
|
CheckDlgButton(hwnd, IDC_LPORT_ALL, cfg.lport_acceptall);
|
||||||
|
CheckDlgButton(hwnd, IDC_RPORT_ALL, cfg.rport_acceptall);
|
||||||
CheckRadioButton(hwnd, IDC_PFWDLOCAL, IDC_PFWDREMOTE, IDC_PFWDLOCAL);
|
CheckRadioButton(hwnd, IDC_PFWDLOCAL, IDC_PFWDREMOTE, IDC_PFWDLOCAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1694,7 +1698,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (panel == tunnelspanelstart) {
|
if (panel == tunnelspanelstart) {
|
||||||
/* The Tunnels panel. Accelerators used: [acgo] deilmrstx */
|
/* The Tunnels panel. Accelerators used: [acgo] deilmrsthx */
|
||||||
struct ctlpos cp;
|
struct ctlpos cp;
|
||||||
ctlposinit(&cp, hwnd, 80, 3, 13);
|
ctlposinit(&cp, hwnd, 80, 3, 13);
|
||||||
if (dlgtype == 0) {
|
if (dlgtype == 0) {
|
||||||
@ -1706,7 +1710,10 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
|
|||||||
IDC_X11_DISPLAY, 50, NULL);
|
IDC_X11_DISPLAY, 50, NULL);
|
||||||
endbox(&cp);
|
endbox(&cp);
|
||||||
beginbox(&cp, "Port forwarding", IDC_BOX_TUNNELS2);
|
beginbox(&cp, "Port forwarding", IDC_BOX_TUNNELS2);
|
||||||
checkbox(&cp, "Local ports accept connections from o&ther hosts", IDC_LPORT_ALL);
|
checkbox(&cp, "Local ports accept connections from o&ther hosts",
|
||||||
|
IDC_LPORT_ALL);
|
||||||
|
checkbox(&cp, "Remote ports do t&he same (SSH v2 only)",
|
||||||
|
IDC_RPORT_ALL);
|
||||||
staticbtn(&cp, "Forwarded ports:", IDC_PFWDSTATIC,
|
staticbtn(&cp, "Forwarded ports:", IDC_PFWDSTATIC,
|
||||||
"&Remove", IDC_PFWDREMOVE);
|
"&Remove", IDC_PFWDREMOVE);
|
||||||
fwdsetter(&cp, IDC_PFWDLIST,
|
fwdsetter(&cp, IDC_PFWDLIST,
|
||||||
@ -1715,7 +1722,8 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
|
|||||||
"Dest&ination", IDC_DPORTSTATIC, IDC_DPORTEDIT,
|
"Dest&ination", IDC_DPORTSTATIC, IDC_DPORTEDIT,
|
||||||
"A&dd", IDC_PFWDADD);
|
"A&dd", IDC_PFWDADD);
|
||||||
bareradioline(&cp, 2,
|
bareradioline(&cp, 2,
|
||||||
"&Local", IDC_PFWDLOCAL, "Re&mote", IDC_PFWDREMOTE, NULL);
|
"&Local", IDC_PFWDLOCAL,
|
||||||
|
"Re&mote", IDC_PFWDREMOTE, NULL);
|
||||||
endbox(&cp);
|
endbox(&cp);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -3016,6 +3024,12 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg,
|
|||||||
cfg.lport_acceptall =
|
cfg.lport_acceptall =
|
||||||
IsDlgButtonChecked(hwnd, IDC_LPORT_ALL);
|
IsDlgButtonChecked(hwnd, IDC_LPORT_ALL);
|
||||||
break;
|
break;
|
||||||
|
case IDC_RPORT_ALL:
|
||||||
|
if (HIWORD(wParam) == BN_CLICKED ||
|
||||||
|
HIWORD(wParam) == BN_DOUBLECLICKED)
|
||||||
|
cfg.rport_acceptall =
|
||||||
|
IsDlgButtonChecked(hwnd, IDC_RPORT_ALL);
|
||||||
|
break;
|
||||||
case IDC_X11_DISPLAY:
|
case IDC_X11_DISPLAY:
|
||||||
if (HIWORD(wParam) == EN_CHANGE)
|
if (HIWORD(wParam) == EN_CHANGE)
|
||||||
GetDlgItemText(hwnd, IDC_X11_DISPLAY, cfg.x11_display,
|
GetDlgItemText(hwnd, IDC_X11_DISPLAY, cfg.x11_display,
|
||||||
|
Loading…
Reference in New Issue
Block a user