[20201124]建立Socket proxy使用SSH.txt
[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
#
# 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 20201124_起始
- socket通訊的建立
- [20201120]cygwin與ssh.txt
- 5-3socket建立datastreamAST
- Nodejs教程19:WebSocket之一:使用Socket.io建立WebSocket應用NodeJSWeb
- socket 的使用
- Proxy使用詳解
- python中socket建立客戶連線Python
- wget使用proxy的配置wget
- 3proxy 使用指北
- SeaTunnel如何建立Socket資料同步作業?
- 如何使用 Terraform 在亞馬遜雲科技上建立 ShardingSphere Proxy 高可用叢集?ORM亞馬遜
- 20201124:力扣第216場周賽(上)力扣
- socket基本的API使用API
- Android Socket連線,使用Socket進行通訊(Android)Android
- ShardingSphere-Proxy5搭建使用
- IO建立Socket通訊中慎用BufferReader中的readLine()
- socket在python下的使用Python
- 使用 Proxy 突破網管的限制
- Socket程式設計,從TCP分析到建立web網站程式設計TCPWeb網站
- RSS-proxy可建立任何網站的RSS或ATOM提要網站
- 深入理解Proxy 及 使用Proxy實現vue資料雙向繫結Vue
- 關於socket.io的使用
- [iOS] Socket & CocoaAsyncSocket介紹與使用iOS
- 技術分享 | 使用 RPM 部署 Oceanbase Proxy
- 在nginx中使用proxy protocol協議NginxProtocol協議
- ShardingSphere-proxy-5.0.0建立mysql讀寫分離的連線(六)MySql
- Proxy
- netty系列之:在netty中使用proxy protocolNettyProtocol
- 使用 Nginx Proxy Manager反向代理開啟SSLNginx
- 使用 Proxy 構建響應式系統
- [譯]使用 Proxy 更好的封裝 Storage API封裝API
- 使用 Proxy 實現簡單的 MVVM 模型MVVM模型
- 使用shadowtunnel為proxy代理配置多級隧道
- docker – nginx – proxy_pass + proxy_redirectDockerNginx
- 使用 `open-uri.with_proxy` 方法開啟網頁網頁
- Sharding-Proxy的基本功能使用
- Nginx的proxy_pass簡單使用記錄Nginx