1. 程式人生 > >藉助SSH反向代理實現在家裡遠端登入公司電腦(一)

藉助SSH反向代理實現在家裡遠端登入公司電腦(一)

轉自:https://blog.csdn.net/mitant/article/details/10714699

針對這個問題首先要對現實場景做下簡要介紹,公司裡的電腦可以訪問外部網路,但是公司又沒開通VPN原則上未提供在家裡接入公司電腦的途徑,但偶爾會需要在家裡接入公司電腦。 本文就是針對這個問題,藉助SSH的強大功能來實現對公司電腦的遠端管理。有人說直接用teamviewer就可以,其實我也用過,但是對私人版的效能不滿意,尤其是在Ubuntu上很難用。

         下面就介紹下我的網路環境,

1. 家裡電腦安裝Ubuntu 12.04 LTS  32bit版本 (電腦名 homeU)

2.家用路由器 水星的,支援動態DNS,我申請的www.oray.com的免費域名

3.公司辦公電腦windows(Named:pcW),公司工作電腦Ubuntu(Named: pcU)

接下來就要開始網路的配置了,在此還想介紹下強大的SSH功能,

不熟悉SSH是什麼的請參考wiki

ssh 本文中要用到的關鍵引數

ssh -NfR 遠端主機listen port :遠端連回時導向的主機 :遠端連回本地主機時導向主機的port  帳號@遠端主機

ssh引數解釋: 
-N:不執行任何指令 
-f:背景執行 
-R:主要建立reverse tunnel的引數

作為SSH的反向隧道,關鍵是運用了ssh的-R引數,下面是man ssh時候給出的官方介紹:

 -R [bind_address:]port:host:hostport
             Specifies that the given port on the remote (server) host is to
             be forwarded to the given host and port on the local side.  This
             works by allocating a socket to listen to port on the remote
             side, and whenever a connection is made to this port, the connec‐
             tion is forwarded over the secure channel, and a connection is
             made to host port hostport from the local machine.

             Port forwardings can also be specified in the configuration file.
             Privileged ports can be forwarded only when logging in as root on
             the remote machine.  IPv6 addresses can be specified by enclosing
             the address in square braces.

             By default, the listening socket on the server will be bound to
             the loopback interface only.  This may be overridden by specify‐
             ing a bind_address.  An empty bind_address, or the address ‘*’,
             indicates that the remote socket should listen on all interfaces.
             Specifying a remote bind_address will only succeed if the
             server's GatewayPorts option is enabled (see sshd_config(5)).

             If the port argument is ‘0’, the listen port will be dynamically
             allocated on the server and reported to the client at run time.
             When used together with -O forward the allocated port will be
             printed to the standard output.

        接下來是準備工作介紹,

1.路由器準備工作: 首先為家裡的路由器申請域名,直接進入www.oray.com可以獲取免費域名,我申請的是(mypcname.vicp.cc)因為跟本文關係不大,就不詳細說了吧!

2. 路由器準備工作: 開啟DMZ功能,將家用電腦homeU的暴露給公網,這樣外部訪問mypcname.vicp.cc時候就是跟我區域網內的電腦homeU互動了

3. 家用電腦homeU準備: 安裝ssh server(sudo apt-get install openssh-server)應用,這樣外面的電腦才能ssh方式登入到我的homeU

在完成上面的準備工作後,終於可以動手配置了。

1. 首先在公司電腦上ping 自己申請到的域名mypcname.vicp.cc,能ping通後就準備開工了。

2. 在公司電腦pcU的shell裡開啟ssh 登入到家裡電腦 ssh -NfR 2284:localhost:22[email protected]

(注:myuser是我家裡電腦homeU的使用者名稱,接下來會要求輸入密碼,此時輸入homeU的myuser 賬戶密碼)

在成功登入後,就實現了ssh反向連結了,此時訪問homeU:2284就等效於訪問pcU的22 埠了

3. 在homeU應該可以成功登入 pcU,命令 [email protected]$ ssh [email protected] -p 2284

(注:此時是為在家裡藉助已經建立的ssh登入公司電腦,所以 命令中user是公司電腦 pcU的使用者,需要輸入user賬戶的密碼)

以上操作如果都能順利成功,說明這項工作已經成功一大半了,打字手都累了,

下篇再介紹家裡電腦遠端登入公司其他windows 電腦的方法吧

參考文章:

http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html 

blog.csdn.net/zokie/article/details/7190195

https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/


相關推薦

藉助SSH反向代理實現家裡遠端登入公司電腦

轉自:https://blog.csdn.net/mitant/article/details/10714699針對這個問題首先要對現實場景做下簡要介紹,公司裡的電腦可以訪問外部網路,但是公司又沒開通VPN原則上未提供在家裡接入公司電腦的途徑,但偶爾會需要在家裡接入公司電腦。

ssh反向代理實現NAT內網穿透[ssh版teamviewer]

由於實驗室伺服器沒有公網IP,如果在校外網的話只能通過teamviewer遠端桌面連線,然而teamviewer的資料傳輸是基於影象的,反應太慢了,所以一直在尋找ssh版的teamviewer,經過谷歌,發現只需要一臺公網伺服器作為中轉站,就可以實現在任何地方登

電腦Linux/Windows使用SSH遠端登入安卓Android手機實現無線傳輸和管理檔案圖文詳解

電腦(Linux/Windows系統)使用SSH遠端登入安卓(Android)手機實現無線傳輸和管理檔案(圖文詳解) 溫馨提示 本文只針對安卓(Android)手機!iPhone或者WP的手機使用者,請不要浪費時間在本文。 前言 在將And

SSH反向代理實現外網訪問內網伺服器

機器狀況 機器號 IP 使用者名稱 備註 A 192.168.1.130 usr_a 目標伺服器,在區域網中,可以訪問 A B B.B.B.B usr_b 代理伺服器,在外網中,無法訪問 A C - - 可以直接訪問 B,無法直接訪問 A

使用 FRP 反向代理實現 Windows 遠端連線

網際網路普及率的日漸攀升與 IPv4 資源的持續減少,現在大部分家庭寬頻都不會分配公網 IP ,這使一些網路應用的實現多了些困難,像個人的 NAS 和一些智慧家居裝置。對於分配公網 IP ,各地運營商的態度也不同,有的去找客服反應可以要一個公網 IP ,還有些則直接告訴你每年多少錢。這些情況在 IPv6 普及

scrapy框架中實現登入人人網最新登入方式

        最近在弄scrapy框架的問題,感覺裡面好玩的東西有很多,無意中在bilibili中看到關於在scrapy實現登入人人網的視訊,人人網可能使用者少,所以在現在的一些部落格和教程裡面看到最新的登入方法幾乎沒有,於是自己寫了這篇部落格。 &

Android客戶端實現註冊/登入詳解

前言 我們在開發安卓App時難免要與伺服器打交道,尤其是對於使用者賬號資訊的註冊與登入更是每個android開發人員必須掌握的技能,本文將對客戶端的註冊/登入功能的實現進行分析,不到之處還請指出。 在這裡我們僅討論客戶端如何請求伺服器進行註冊,而伺服器在

socket實現的簡單的ftp服務

socket 中文 add blog style log 實現簡單 port 數據 用 socket實現簡單的ftp服務ex:服務端 1 import socket,os 2 server=socket.socket() 3 server.bind(("localh

【Java】模擬Sping,實現其IOC和AOP核心

在這裡我要實現的是Spring的IOC和AOP的核心,而且有關IOC的實現,註解+XML能混合使用! 參考資料: IOC:控制反轉(Inversion of Control,縮寫為IoC),是面向物件程式設計中的一種設計原則,可以用來減低計算機程式碼之間的耦合度。其中最常見的方式叫做依賴注入(D

【C語言實現串列埠通訊知識點整理】執行緒、開啟串列埠、設定波特率、設定校驗位、互斥鎖等實現基本的通訊

  部分程式碼借鑑地址:https://blog.csdn.net/wangqingchuan92/article/details/73497354/ 謝謝! 1.建立執行緒線上程內進行串列埠之間的收發 void CREAT_pthread(void) { pthr

vue.js+element實現簡單的後臺管理系統

最近公司趕專案,要求做一個後臺管理系統,靜態半天,介面一天,測試一天。 看了一下需求,10個頁面,16+介面,雖說調取資料的比較多,實際寫起來感覺東西還是蠻多的,也在網上查閱了很多資料,感覺都是一些開箱即用的後臺管理系統,一開始我也是想拿來修改一下就好,結果看了好幾個github上面的,感覺並不是很貼合需求

python+openCV實現簡單的圖片搜尋功能

一、圖片搜尋引擎有三種不同的模式  1.Search by Meta-Data:元資料搜尋模式,這種和傳統的文字搜尋類似,給索引資料新增文字註釋,上傳待查詢的圖片的時候,需要附加圖片的文字描述,實際在後臺搜尋對應的文字描述,典型的有 https://www.flickr.com/ 

實現執行緒間的通訊

notify()和wait()實現: this.notify():隨機喚醒單個等待執行緒。 this.wait():當前執行緒等待,wait()若無人喚醒,則一直等待;而Thread.sleep是睡眠一定時間後再次啟動。   public class DemoNotif

Asp.net Core 使用Jenkins + Dockor 實現持續整合、自動化部署:Jenkins安裝

寫在前面 其實園子裡很多大佬都寫過,我也是一個搬運工很多東西不是原創的,不過還是想把自己安裝的過程,記錄下來如果能幫到大家的忙,也是一件功德無量的事; 執行環境 centos:7.2 cpu:1核 2G記憶體 1M頻寬 其實用的騰訊雲 安裝jenkins 這裡的jenkins就不從docker

JAVA帶你實現微信公眾號開發--接入微信公眾平臺

(一)接入流程解析 在我們的開發過程中無論如何最好的參考工具當然是我們的官方文件了:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html 通過上面我們可以看出其中接入微信公眾平臺開發,開發者需要按照如下

DeepFM演算法解析及Python實現 FFM演算法解析及Python實現 FM演算法解析及Python實現 詞嵌入的那些事兒

1. DeepFM演算法的提出 由於DeepFM演算法有效的結合了因子分解機與神經網路在特徵學習中的優點:同時提取到低階組合特徵與高階組合特徵,所以越來越被廣泛使用。 在DeepFM中,FM演算法負責對一階特徵以及由一階特徵兩兩組合而成的二階特徵進行特徵的提取;DNN演算法負責對由輸入的一階特徵進行全連線

使用akka實現一個簡單的RPC框架

一、概述 目前大多數的分散式架構底層通訊都是通過RPC實現的,RPC框架非常多,比如前我們學過的Hadoop專案的RPC通訊框架,但是Hadoop在設計之初就是為了執行長達數小時的批量而設計的,在某些極端的情況下,任務提交的延遲很高,所有Hadoop的RPC顯得有些笨重。

Spring Boot2.0.3 Mybatis Sharding-jdbc3.X整合實現資料庫的讀寫分離MySql的主從配置

Mysql的安裝 這個網上一大堆的教程,我這裡安裝的mysql5.7。這裡就不細說了,直接貼相應的命令 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm yum locali

C程式設計|用函式實現模組化程式設計詳解

目錄 一、為什麼要用函式 使用函式可使程式清晰、精煉、簡單、靈活。 函式就是功能。每一個函式用來實現一個特定的功能。函式名應反映其代表的功能。 在設計

如何自己實現一個scrapy框架——框架雛形

#一、瞭解框架 ##1、首先明確一下,什麼是框架: 框架是為了為解決一類問題而開發的程式,框架兩個字可以分開理解,框:表示指定解決問題的邊界,明確要解決的問題;架:表達的是能夠提供一定的支撐性和可擴充套件性;從而實現解決這類問題達到快速開發的目的。 ##2、實現