$ ssh -NR 9601:localhost:22 [email protected]
在公网机器的状态是
$ ss -ant | grep 9601
LISTEN 0 128 127.0.0.1:9601 :
LISTEN 0 128 ::1:9601 :::*
登陆到公网机器后,可以在公网机器上连接到内网机器,
$ ssh [email protected] -p 9601
但是我想不登陆公网机器,直接连接到内网机器该怎么做?
$ ssh [email protected] -p 9601
ssh: connect to host lichun.me port 9601: Connection refused
因为 lichun.me 只监听了本地端口,没有暴露给公网, 这样没法连接
问题解决了,从公网机器上再弄一个正向代理到本地端口
ssh -NL *:1234:localhost:9601 localhost
这样一来就得换另外一个端口去连接
ssh [email protected] -p 1234
刚试了一下,在 /etc/ssh/sshd_config
中修改 GatewayPorts yes
配置也是可以的
$ ss -ant | grep 9601
LISTEN 0 128 :9601 *:
LISTEN 0 128 :::9601 :::*
1
missdeer 2015-11-21 16:20:51 +08:00
再在公网机器上做一个本地转发
|
2
skydiver 2015-11-21 16:23:06 +08:00 via iPad
|
3
ylnbyttu 2015-11-21 16:38:41 +08:00 via Android
公网的主机 sshd_config 里面增加 GatewayPorts yes ,重启 sshd 再试应该就可以了
|
4
salmon5 2015-11-21 16:44:44 +08:00
sshd_config 里面默认 GatewayPorts yes 是注释的,注释掉重启 sshd 。
加上几个优化参数: AllowAgentForwarding yes AllowTcpForwarding yes GatewayPorts yes TCPKeepAlive yes ClientAliveInterval 60 ClientAliveCountMax 1440 |
8
skydiver 2015-11-21 17:01:46 +08:00
@lichun 按照 manpage 里所写,你第一条命令就已经绑定在所有的 interface 了,需要服务端开 GatewayPorts yes 就可以从外部访问了,同意楼上说的
|
9
lxf1992521 2015-11-21 17:14:23 +08:00
ssh -NR 9601:localhost:22 [email protected]
改成 ssh -NR :9601:localhost:22 [email protected] 这样就会监听在 0.0.0.0 上了,不然的话,只会监听在 127.0.0.1 |
10
lichun OP @lxf1992521 这个真的没关系,
|
12
jimzhong 2015-11-21 18:27:57 +08:00
原来也遇到过这个问题,一直没有搞定。
|