ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20201124]建立Socket proxy使用SSH.txt

[20201124]建立Socket proxy使用SSH.txt

原创 Linux操作系统 作者:lfree 时间:2020-11-24 09:41:44 0 删除 编辑

[20201124]建立Socket proxy使用SSH.txt

--//以前对这方面的东西不是很了解,实际上也叫Dynamic Port Forwarding。

# man ssh

-D [bind_address:]port
Specifies a local "dynamic" application-level port forwarding.  This works by allocating a socket to listen to port on
the local side, optionally bound to the specified bind_address.  Whenever a connection is made to this port,the
connection is forwarded over the secure channel, and the application protocol is then used to determine where to connect
to from the remote machine.  Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh will act as a SOCKS
server.  Only root can forward privileged ports.  Dynamic port forwardings can also be specified in the configuration
file.

指定本地"动态"应用程序级端口转发。 这可以通过分配一个套接字来监听本地侧的端口,可以选择绑定到指定的bind_address。 每当
连接到此端口时,连接将通过安全通道转发,然后使用应用程序协议来确定从远程机器连接到哪里。 目前支持SOCKS4和SOCKS5协议,ssh
将充当SOCKS服务器。 只有root才能转发特权端口。 动态端口转发也可以在配置文件中指定。

IPv6 addresses can be specified with an alternative syntax: [bind_address/]port or by enclosing the address in square
brackets.  Only the superuser can forward privileged ports.  By default, the local port is bound in accordance with the
GatewayPorts setting.  However, an explicit bind_address may be used to bind the connection to a specific address.  The
bind_address of "localhost" indicates that the listening port be bound for local use only, while an  empty address or
'*' indicates that the port should be available from all interfaces.

可以用另一种语法指定IPv6地址:[bind_address/]端口或将地址括在方括号中。 只有超级用户才能转发特权端口。 默认情况下,本地
端口按照网关端口设置绑定。 但是,可以使用显式bind_address将连接绑定到特定地址。 "localhost"的bind_address表示侦听端口仅
限于本地使用,而空地址或"*"表示端口应可从所有接口获得。

--//我想通过简单的例子说明整个测试以及建立过程。

1.环境:
--//客户端      192.168.98.6 windows
--//服务器      192.168.100.78 linux
--//远端服务器  192.168.100.40 linux,开启httpd服务。在该服务器上拒绝192.168.98.6的访问。修改/etc/httpd/conf/httpd.conf
--//如下:
<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None

#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all
    Deny From 192.168.98.6
</Directory>
--//重启httpd服务略。这样如果我在浏览器执行http://192.168.100.40/sqllaji/报如下错误:
You don't have permission to access /sqllaji/ on this server.
Apache/2.0.52 (Red Hat) Server at 192.168.100.40 Port 80

--//测试的目的通过ssh登录192.168.100.78,实现192.168.98.6访问192.168.100.40/sqllaji的目的。

2.建立socker proxy或者Dynamic Port Forwarding。

--//通过putty,选择connection -> SSH -> tunnels 加入source port 8888,然后选择Dynamic按钮。选择add,在forwarded port出现
--//D8888. 然后回到session界面选择save。

--//然后登录服务器,注意不要在退出。

--//在192.168.98.6执行:
D:\notes>netstat -an | grep 8888
  TCP    127.0.0.1:8888         0.0.0.0:0              LISTENING
  TCP    [::1]:8888             [::]:0                 LISTENING
--//可以发现本地8888端口已经打开。

--//然后在浏览器选择代理设置:我使用firefox:
--//选择手工配置代理,在socks主机上输入127.0.0.1,端口8888.

--//这样在地址栏输入:http://192.168.100.40/sqllaji/ 就可以正常访问了。

3.也可以通过ssh登录,我的机器安装cygwin,顺便测试看看。
--//退出前面的登录。

$ ssh -D 8888 -f -C -q -N root@192.168.100.78
root@192.168.100.78's password:

Flag    Description
-D 8888 Bind connection to port 8888
-f      Fork process to background
-C      Compress data before sending
-q      Quiet mode
-n      Do not execute a remote command

--//这样执行后直接回到本机。优点以后一直保持监听该端口。缺点我不知道那个进程对于我刚才登录的进程,好在我ssh连接不多,很
--//容易确定。简单一点就是执行ssh -D 8888  root@192.168.100.78.

D:\notes>netstat -an | grep 8888
  TCP    127.0.0.1:8888         0.0.0.0:0              LISTENING
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  TCP    127.0.0.1:8888         127.0.0.1:54418        ESTABLISHED
  TCP    127.0.0.1:8888         127.0.0.1:54419        CLOSE_WAIT
  TCP    127.0.0.1:54418        127.0.0.1:8888         ESTABLISHED
  TCP    127.0.0.1:54419        127.0.0.1:8888         FIN_WAIT_2
  TCP    [::1]:8888             [::]:0                 LISTENING
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--//浏览器的配置略。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2736299/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2818
  • 访问量
    6617873