星期日, 一月 14, 2007

ssh forwarding

本地转发:
client$ ssh -L $local_port:server:$server_port forwarder sleep 60
client$ telnet localhost $local_port
例如托管的网络有一台主机拥有外网地址,假设是 123.45.67.89,而另外一台是内网的数据库 192.168.0.3,没有外网地址,并且也没有做防火墙的映射,那么可以通过如下方式来登录内网数据库以进行维护:
$ ssh -L 2022:192.168.0.3:22 123.45.67.89 sleep 60
$ ssh $user@localhost 2022
注意第一个也必须登录,如果第一个登录退出,则第二个也会中断链接。

远程转发:
forwarder$ ssh -R $client_port:server:$server_port client
client$ telnet localhost $client_port
限制和禁止转发:
forwarder:/etc/hosts.deny
ALL:ALL

forwarder:/etc/hosts.allow
sshdfwd-$port: client
/etc/ssh/sshd_config:
AllowTcpForwarding yes/no

这将禁止通过该服务器的所有端口转发,不禁止端口转发尝试的调用。比如,如果禁止 client 上的端口转发,仍然能从 client 上使用 ssh 的 -R 标记建立 forwarder 上的转发端口。

--disable-client-port-forwardings, --disable-client-server-forwarding 编译参数。

没有评论: