1. 程式人生 > >linux通過ssh實現反向連線

linux通過ssh實現反向連線

1.問題描述:

有時,我們會想在區域網外訪問區域網內的機器。這時,我們可以使用SSH的反向連線來實現。

裝置A:位於區域網內,可以訪問代理伺服器B。 假設該裝置IP:A.A.A.A,使用者名稱userA

裝置B:位於區域網外,作為訪問裝置A的代理伺服器,不可訪問A。假設該裝置IP:B.B.B.B,使用者名稱userB

裝置C:想要訪問A的裝置,可以訪問B,無法直接訪問A。假設該裝置IP:C.C.C.C,使用者名稱userC

2.目標:裝置C可以通過SSH訪問區域網內裝置C

3.條件:

三臺裝置都需要包含SSH客戶端,A,B裝置需要包含SSH服務端。

4.實現步驟:

4.1.在A裝置上建立A裝置到B裝置的反向代理:

ssh -fCNR  <port_b1>:localhost:22 [email protected] 

例如:ssh -fCNR  10000:localhost:22 [email protected] (此時B裝置上已經可以通過ssh -p 10000 [email protected]連線到裝置A)

<port_b1>:建立在B機器上,用來代理裝置A機器22埠的埠。

 [email protected] :B機器的使用者名稱和IP地址。

4.2.在B裝置上建立B裝置到A裝置的正向代理:(這樣做的目的是為了實現和外網的通訊)

ssh -fCNL  *:<port_b2>:localhost:<port_b1> 

[email protected]

例如:ssh -fCNL  *:10001:localhost:10000 [email protected]

<port_b2>:用作本地轉發的埠,用來和外網通訊,並將資料轉發到<port_b1>,實現從其他機器可以訪問。

*代表可以接受來自任意機器的訪問。

4.3.現在C機器上可以通過B機器SSH到A機器

ssh -p<port_b2> [email protected]

5.注意事項

5.1.引數介紹

-f 後臺執行-C 允許壓縮資料-N 不執行任何命令-R 將埠繫結到遠端伺服器,反向代理-L 將埠繫結到本地客戶端,正向代理

5.2.自動連線和防斷線指令碼

如果你想讓連線長期保持,可以寫個指令碼來保證因為網路原因斷線的話可以自動重連。

先說Windows平臺,用plink -pw引數可以指定密碼,所以只要寫個批處理:

:1
plink -pw “password” -D 7070 [email protected]
goto 1

這樣應該就可以解決大多數問題造成的斷線。

Linux平臺ssh預設不支援把密碼作為引數,不過有sshpass可以搞定

下載,解壓,編譯,把可執行檔案拷貝到合適的目錄,執行命令格式如下:

sshpass -p "password" ssh -D <port> [email protected]

貌似ubuntu下可以直接apt-get install sshpass

編寫指令碼autossh.sh,內容如下:

#!/bin/bash
while [ '' == '' ]
do
ssh_d_process_num=`ps aux|grep -E 'ssh \-' |grep -v grep |wc -l`
if [ "$ssh_d_process_num" == "0" ]; then
  /home/user/sshpass -p "password" ssh -D 7070 [email protected] &
fi
sleep 300
done

執行這個指令碼就可以了。sleep 300代表300秒檢視一次,可以根據需要調整。

5.3.如果裝置A重新啟動了,則只需要重新配置裝置A即可。

相關推薦

linux通過ssh實現反向連線

1.問題描述: 有時,我們會想在區域網外訪問區域網內的機器。這時,我們可以使用SSH的反向連線來實現。 裝置A:位於區域網內,可以訪問代理伺服器B。 假設該裝置IP:A.A.A.A,使用者名稱user

Linux通過NFS實現檔案共享

在專案生產環境我們經常需要實現檔案共享,傳統的常見方案是通過NFS,實現伺服器之間共享某一塊磁碟,通過網路傳輸將分散的檔案集中儲存在一塊指定的共享磁碟,實現基本的檔案共享。實現這種方案,分服務端和客戶端,將服務端的磁碟mount到客戶端指定目錄下,在客戶端操作就像操作本地磁碟一樣,nfs基本的安裝如下: 模

MySQL通過Navicat實現遠端連線的過程 學習記錄

1.首先使用localhost登入到想要進行遠端連線的資料庫 2.開啟阿里雲伺服器上安裝的windows系統,以管理員許可權開啟命令提示視窗,輸入如下命令: mysql> grant all privileges on *.* to 'root'@'%' ident

MySQL通過Navicat實現遠端連線的過程

直接使用Navicat通過IP連線會報各種錯誤,例如:Error 1130: Host '192.168.1.80' is not allowed to connect to this MySQL server。 經過個人驗證,得到解決方法,如下: 授權法: 1.首先使用localhos

Linux通過ssh遠端安裝Python3.6.1安裝包

linux系統環境自帶python2.6,但有時我們專案使用的版本可能是3.x以上等等,此時我們需要在linux中再安裝專案所需的python版本,此時就涉及多版本共存問題了,很多同學在安裝多個版本Python時會遇到各種問題 這裡主要演示通過ssh遠端安裝安裝包 1

玩轉 docker 入門(4) docker 通過nginx實現反向代理 配置多域名以及多埠號

一、前言        這段時間一直在研究docker的部署及相關開發環境、生產環境的搭建。但最終技術的學習就是用來實際使用的,所以就想將單位中的機房逐步從單機安裝環境過渡到通過docker部署多個開發環境(生產環境)。二、需求        單位機房的IP有限,我們都是通過

linux shell ssh實現自動登入,並且執行一些操作並返回到當前主機

#!/usr/bin/expect -f #-------------------------------------------------- about us # product: monitorone # Author:matthew # Last Modified:

pgcli通過SSH本地轉發連線遠端伺服器上的PostgreSQL DB

遠端主機(10.64.1.129)需求: 1. 假設遠端主機打開了ssh埠 2. 啟動了PostgreSQL,且監聽埠為預設的5432 3. 遠端主機的postgreSQL DB只允許localhost訪問 本地主機(10.64.71.6)需求:

解決kali linux 開啟ssh服務後連線不上的問題

今天在手機端裝了NetHunter 想連線PC的kali ,可是怎麼都連不上 綜合網友的經驗: 1.修改sshd_config檔案,命令為:vi /etc/ssh/sshd_config    將#PasswordAuthentication no的註釋去掉,並且將no修改

Linux通過SSH訪問中文亂碼問題(以secureCRT為例)

一般國內的例如阿里雲等伺服器安裝的Linux系統都不用修改Linux伺服器檔案的,我們可以直接修改secureCRT設定支援 1.開啟secureCRT 2.點選Options-->Sessi

IntelliJ IDEA實現遠端連線linux,並上傳檔案到linux伺服器(SSH會話功能和SFTP功能)

注意: eclipse的SSH會話功能和SFTP功能這裡不會說 點選以下連結可檢視   eclipse的SSH會話功能和SFTP功能 而IntelliJ IDEA(以下簡稱為IDEA)這麼強大的開發工具自然也有該功能,這篇部落格就介紹一下IDEA的SSH會話功能

Linux】使用Xshell通過ssh連線linux出現Connection closed by foreign host.提示

一般我們都會使用crt或xshell通過ssh協議去連線Linux伺服器進行操作,最近遇到了一個問題,在通過xshell連線linux伺服器過程中出現Connection closed by foreign host.中文:外部主機關閉連線好吧,雖然知道中文意思,但是感覺毫無卵用。隨後使

通過ssh轉發實現穩定連線海外伺服器

1、架構 2、說明 連線海外伺服器網路非常的不穩定,這裡我們通過某廠雲私有網路的對等連線及iptables來實現穩定連線海外伺服器。 3、實踐 首先在上海區域購買一個私有網路(vpc),然後劃分好網段,再購買一臺伺服器加入私有網路。同樣的在香港區域再購買一個私有網路(vpc),然後劃分好網段,再購

用secureCRT通過SSH連線你的Linux(本文基於Ubuntu 10.04)

相信現在有很多學習或者工作需要使用或者是用VPS主機的Linux的人吧..單純的工作學習可以直接硬碟上安裝一個比較適合的Linux系統,但是我們大多時候可能還是需要工作在Windows的平臺下(很多情況也是無奈啊),所以虛擬機器就成了我們使用Linux的最佳選擇。 這是又出

埠轉發:通過ssh連線家中路由器下的linux,通過mstsc連線家中路由器下的windows(一種teamviewer的替代方案)

實現原理 本質就是轉發訊息:兩個tcp連線,將一個tcp連線中讀到的訊息不經過任何處理直接寫到另一個tcp連線。 家裡的電腦先和公網電腦建立tcp連線,然後將公網上(ip, port)收到的訊息轉發到家中電腦的某埠上 通過mstsc遠端桌面連線

Windows通過SSH遠端連線Linux

這裡的”遠端”操控的方法實際上也不是真正的遠端.,這此操作方法主要是在一個區域網內遠端操控電腦 (在一個路由器下)。可以把它做成在網際網路中的遠端操控, 不過技術難度上加了一個等級, 如果你想是想人在公司, 卻要操控家裡的 Linux, 可以參考免費的軟體 (TeamView

一臺Linux電腦連線另一臺Linux(SSH實現linux之間的免密碼登陸)

首先檢視是否安裝ssh服務:systemctl status sshd.service    啟動服務:systemctl start sshd.service    重啟服務:systemctl restart sshd.service    開機自啟:systemctl

SSH反向連線及Autossh 實現外網訪問內網樹莓派

需要一臺vps伺服器,樹莓派連上vps,再通過vps來訪問樹莓派 1.在樹莓派上設定 sudo screen -S sshtest ssh -R 19999:localhost:22 你的vps使用者名稱@你vps的ip      意思:將vps上的19999埠與樹莓派的

mac/linux/centos通過 ssh [email protected]方式連線如何上傳檔案都阿里雲

目錄1、mac上傳檔案到Linux伺服器scp 檔名 使用者名稱@伺服器ip:目標路徑如:scp /Users/test/testFile [email protected]:/test/2、mac上傳資料夾到Linux伺服器,與上傳檔案相比多加了-rscp -r

通過ssh反向隧道及nginx反向代理實現外網控制內網nodemcu晶片

基本思路:通過ssh反向隧道實現外網伺服器埠到內網中繼伺服器埠的轉發,通過配置內網中級伺服器nginx反向代理,將外網發過來的請求轉發到目標伺服器上。最後實現通過訪問外網ip轉到訪問內網的目標伺服器。 (一)ssh反向隧道將外網伺服器埠轉發到內網中繼伺服器指定埠 (1)首