日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内网服务器外网连接SSH远程端口转发实战详解

發布時間:2024/1/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内网服务器外网连接SSH远程端口转发实战详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

前段時間在外地沒有在實驗室,隨身攜帶了一個筆記本電腦。但是筆記本性能不夠,想用SSH遠程連接實驗室的電腦。問如何連接?現有以下設備

設備IP備注系統
實驗室電腦C1192.168.0.24內網,可訪問外網。SSH登陸端口為321。Linux
筆記本電腦A1動態變化無公網IPLinux、win
云端服務器B1113.4.67.278有公網IPLinux

目標:

訪問實驗室電腦C1的321端口。

解決辦法:

  • 如果局域網共用一個公網IP(此公網IP可以在外網訪問),且可以操作實驗室的路由器,可以在路由器上添加端口映射。這樣可以通過直接訪問公網IP的虛擬端口,訪問到局域網內的電腦。

    但是很遺憾筆者實驗室的公網IP被學校的防火墻攔住了,無法在外網直接訪問。

  • 借助各種內網穿透的軟件,但是題主沒有找到一個魯棒可靠的軟件。實在要推薦一個那就?ngrok

  • SSH遠程端口轉發訪問局域網電腦,此方法需要一個中轉服務器(有公網IP)。

  • 前面兩種方法本文就不展開介紹了,主要介紹第三種方法。

    SSH遠程端口轉發

    所謂遠程端口轉發,就是將發送到遠程端口的請求,轉發到目標端口。這樣就可以通過訪問遠程端口,來訪問目標端口的服務。

    通常,本地主機是沒有獨立的公網IP的,它與同一網絡中的主機共享一個IP。沒有公網IP,云主機是無法訪問本地主機上的服務的。

    通過遠程轉發,我們就可以通過訪問云主機B1的XXX端口來訪問實驗室主機C1的321端口。

    使用-R屬性,就可以指定需要轉發的端口,語法是這樣的:

    -R 遠程網卡地址:遠程端口:目標地址:目標端口

    實現

    在實驗室主機C1上操作

    ssh -fCNR port:localhost:321 root@113.4.67.278 # 遠程網卡地址可省略,表示綁定了C1的所有網卡 # port : 自定義一個端口,如1321 # 321 : 實際想訪問的本地端口 # root和ip地址根據實際情況改寫# -f : 表示SSH連接在后臺運行 # -C : 表示壓縮數據傳輸 # -N : 用于端口轉發,表示建立的SSH只用于端口轉發,不能執行遠程命令 # -R : 指定遠程端口轉發

    通過遠程轉發,我們可以直接通過SSH在云端服務器B1上登錄C1。

    ssh -p 1321 name@localhost # name改寫成C1的用戶名

    但是我們還不能在A1上直接登錄C1,還要在B1電腦上操作:

    sudo echo 'GatewayPorts yes' >> /etc/ssh/sshd_config sudo service ssh restart # GatewayPorts yes確保外網也能訪問這個1321這個監聽端口,而不是只能被localhost訪問。

    這樣我們就可以直接在A電腦訪問C電腦了:

    ssh -p 1321 name@113.4.67.278 # name改寫成C1的用戶名

    存在問題

  • ssh會因為超時而關閉,因此不穩定
  • 開關機之后通道就不存在了,因此還要設置開機自啟
  • 為了解決兩個問題我采用了crontab。通過crontab?命令,我們可以在固定的間隔時間執行指定的系統指令或 shell script腳本。

    C1密鑰連接B1

    因為每次ssh遠程轉發,都需要輸入B1的用戶密碼,因此要設置密鑰連接,省去輸入密碼的過程。

    在C1上操作

    ssh-copy-id -i keyfile nameB1@113.4.67.278 # -i keyfile keyfile指定公鑰文件上傳到B1上,也可以不指定 # nameB1 B1用戶名

    cron

    在Linux系統中,計劃任務一般是由?cron?承擔,我們可以把?cron?設置為開機時自動啟動。

    /sbin/service cron start //啟動服務 /sbin/service cron stop //關閉服務 /sbin/service cron restart //重啟服務 /sbin/service cron reload //重新載入配置

    cron可以讓系統在指定的時間,去執行某個指定的工作,我們可以使用?crontab?指令來管理cron機制

    crontab 參數

    usage: crontab [-u user] filecrontab [ -u user ] [ -i ] { -e | -l | -r }(default operation is replace, per 1003.2)-u 指定用戶,不指定用戶就默認自身-e (edit user's crontab) (使用預設的編輯器,開啟crontab并編輯)-l (list user's crontab) (列出crontab中的內容)-r (delete user's crontab) (移除crontab)-i (prompt before deleting user's crontab) (移除crontab,不過會再確認一下)

    語法示例

    分(0-59) 時(0-23) 日期(1-31) 月(1-12) 星期(0-7)(0和7都是周天) */5 * * * * 每五分鐘執行 0-5 * * * * 每小時的前五分鐘執行 0,1 * * * * 每小時的前兩分鐘執行 0 * * * * 0分時執行,即每小時執行一次 0 0 * * * 0時0分時執行,即每天執行一次 0 0 1 * * 1號0時0分時執行,即每月執行一次 * : 代表取值范圍內的所有數字 / : 代表“每” - : 代表從某數字到某數字 , : 代表分開幾個離散的數字

    因此我們定時執行ssh遠程轉發,就可以確保連接的穩定性。

    # 編輯crontab crontab -e # 添加命令 */10 * * * * ssh -fCNR 1321:localhost:321 root@113.4.67.278 # 開機自啟 systemctl enable --now cron

    至此大功告成。

    最后

    SSH除了遠程轉發,還有逆向的本地轉發。還有動態轉發,動態轉發可以做簡易的VPN。

    總結

    以上是生活随笔為你收集整理的内网服务器外网连接SSH远程端口转发实战详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。