1. 程式人生 > >SSH反向連線及Autossh 實現外網訪問內網樹莓派

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

需要一臺vps伺服器,樹莓派連上vps,再通過vps來訪問樹莓派


1.在樹莓派上設定
sudo screen -S sshtest
ssh -R 19999:localhost:22 你的vps使用者名稱@你vps的ip      意思:將vps上的19999埠與樹莓派的22埠繫結
輸入你的vps密碼,然後ctrl+a  ctrl+d把sshtest命令板後臺執行
screen -S yourname -> 新建一個叫yourname的session
screen -ls -> 列出當前所有的session
screen -r yourname -> 回到yourname這個session


2.在VPS上設定
ssh 你的樹莓派使用者名稱@localhost -p 19999
輸入你的樹莓派密碼,這時,就可以在vps訪問內網樹的莓派了。




自動登入,斷線重連:
這種方式不穩定,可能隨時斷開,斷開後,需要樹莓派再次連線vps,可以用autossh解決。
樹莓派在使用autossh連線外網時,每次都需要輸入密碼,不能完全自動化,所以需要通過金鑰驗證使用者身份,實現自動登入。
$ ssh-keygen
...(一直按Enter,最後在~/.ssh/下生成金鑰)
$ ls ~/.ssh/
id_rsa id_rsa.pub known_hosts


將生成的id_rsa.pub公鑰複製到vps主機上,並將內容加入到~/.ssh/authorized_keys中
$ cat id_rsa.pub >> ~/.ssh/authorized_keys


你可以直接執行下名命令,就不需要手動複製公鑰檔案了:
$ ssh-copy-id vps使用者名稱@你vps的ip
這時,在樹莓派上直接ssh vps使用者名稱@vps的ip,直接會進入vps,不需要再輸入密碼了。


autossh -M 5678 -NfR 19999:localhost:22 vps使用者名稱@vps的ip
-M 5678引數,負責通過5678埠監視連線狀態,連線有問題時就會自動重連,-f引數使用程式後臺執行

到這裡,每次想訪問家裡樹莓派時,直接登入vps上,再ssh 樹莓派使用者名稱[email protected] -p 19999 輸入樹莓派密碼即可訪問家裡PI了。






重啟、開機自動啟動autossh

/bin/su -c '/usr/bin/autossh -M 5678 -NfR 19999:localhost:22 vps使用者名稱@vps的ip' - vps使用者名稱
將上面命令放入下面各啟動方式中,根據自己系統自己配置:
SysV:/etc/inid.d/autossh
Upstart: /etc/init/autossh.conf

systemd: /usr/lib/systemd/system/autossh.service

(我用上面的一直不好使,用了下面的好使了。

sudo vi /etc/rc.local 在exit 0前面輸入:

autossh -M 5678 -NfR 19999:localhost:22 使用者名稱@203.195.xxx.xxx -o BatchMode=yes -i /home/pi/.ssh/id_rsa

-o BatchMode不用輸入yes,-i金鑰的絕對路徑

)

原因:

在/var/log/message裡找到下面錯誤資訊:

Apr 11 23:50:04 raspberrypi autossh[645]: ssh child pid is 662
Apr 11 23:50:04 raspberrypi autossh[645]: ssh exited with error status 255; restarting ssh

手動輸入命令時,不帶 -o -i,可以正常使用,但設定成開機啟動時無法使用,輸出上面的錯誤。命令可以去掉-f,用-v 檢視debug資訊,google查了一下,發現應該是沒有帶金鑰資訊的原因,因為開機時autossh使用的不是當前路徑,所以必須得帶上金鑰的絕對路徑。

類似問題:http://serverfault.com/questions/534229/autossh-in-background-does-not-work

相關推薦

SSH反向連線Autossh 實現訪問樹莓

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

SSH反向連線Autossh

0.接觸Linux恐怕對SSH再熟悉不過了,還有scp,sftp各種方便的功能,一般的使用都需要ip:port(如果不是預設22的話),但有些情況比較特殊,就是想連線一臺內網主機(比如公司內網,當然你肯定做不了Port Forwarding,除非你想在公司防火牆上拆個洞)。稍懂一點網路的童鞋會明白,Inte

利用ssh反向代理以及autossh實現連線伺服器

前言 最近遇到這樣一個問題,我在實驗室架設了一臺伺服器,給師弟或者小夥伴練習Linux用,然後平時在實驗室這邊直接連線是沒有問題的,都是內網嘛。但是回到宿舍問題出來了,使用校園網的童鞋還是能連線上,使用外網的小土豪就沒有辦法進入內網。這時能不能有一個辦法可以使得通過外

利用ssh反向代理以及autossh實現連接服務器

作用 鏈接 沒有 AI tail oca 麻煩 版本 正向代理   1. 描述一下目前的機器狀況,梳理梳理:    機器 IP 用戶名 備註    A 10.21.32.106 gdut728 目標服務器,處於內網    B 123.123.123.123 root 外網服

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

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

利用反向SSH訪問伺服器

學院的伺服器在學院的內網,出了學院就不能訪問,在宿舍、家裡學習很不方便沒有伺服器的話。之前一直用TeamViewer,但是用著不舒服。最近新找到一個辦法,就是利用外網伺服器以及反向SSH搭一條通道,使

ssh 反向代理 訪問

[[email protected] ~]$ssh -C  -f -N -D 3345 -p 3345 [email protected] The authenticity of host '[localhost]:3345 ([127.0.0.1]:3345)' can't be es

訪問的解決方案--反向SSH

問題:    當你在不在公司或者不在學校的時候,如果想要用secureCRT訪問內網的伺服器,但是內網IP對外網是不可見的,這時怎麼辦?又或者內網的網站只對有內網的IP可以訪問,但是你連線的是外網,想要

Ngrok反向代理實現訪問

該篇部落格分享ngrok,這裡使用國內作者的ngrok,國外有ngrok,但是訪問國內訪問比較慢 ngrok 是一個反向代理,通過在公共的端點和本地執行的 Web 伺服器之間建立一個安全的通道。ngrok 可捕獲和分析所有通道上的流量,便於後期分析和重

Holer實現訪問Oracle資料庫

外網訪問內網Oracle資料庫 內網主機上安裝了Oracle資料庫,只能在區域網內訪問,怎樣從公網也能訪問本地Oracle資料庫? 本文將介紹使用holer實現的具體步驟。 1. 準備工作 1.1 安裝Java 1.7及以上版本 執行命令java -version檢查Java安裝和配置是否正確。

使用SecureCRT轉發功能,實現訪問服務

A: 內網Linux系統,不能上外網 ip:192.168.6.10 有如下服務     22埠   ssh2 B: (windows系統) 內網主機,可以訪問A主機,可以通過閘道器訪問C主機. C: 外網Linux系統,公網ip:202.108.16.5 有如

使用電信光貓加路由器實現穿透,訪問

準備工作:1. 需註冊一個花生殼賬號和購買一個殼域名(可以免費獲取殼域名)2. 電腦下載安裝花生殼客戶端3. 使用電信光貓超級管理員密碼獲取器獲取光貓超級密碼4. 寬頻賬號與寬頻密碼(光貓配置後,需登入路由器上網,路由器需使用寬頻賬號與密碼登入上網)一.電信光貓配置1.1 在

如何通過SecureCRT轉發功能實現訪問服務

公司有臺開發伺服器有外網地址,開放了ssh服務,上面裝有mysql服務,MySQL服務埠3306是沒有對外網開放的。所以如果在家要連線這臺伺服器的mysql資料庫得另外想其他辦法。好在SecureCRT提供了埠轉發的功能,能夠通過SecureCRT將內網埠對映到本地埠。 方

簡單物聯網:訪問路由器下樹莓Flask服務器

分配 amp con 樹莓派 轉發規則 添加 局域網 輸入 pytho 最近做一個小東西,大概過程就是想在教室,宿舍控制實驗室的一些設備。 已經在樹莓上搭了一個輕量的flask服務器(在樹莓派下搭flask在其他隨筆有說明),在實驗室的路由器下,任何設備都是可以訪問的;但是

怎樣從訪問Nginx?

本地安裝了一個Nginx,只能在區域網內訪問,怎樣從外網也能訪問到本地的Nginx呢?本文將介紹具體的實現步驟。 1. 準備工作 1.1 安裝並啟動Nginx 預設安裝的Nginx埠是80。 實現步驟 下載並解壓holer軟體包 Holer軟體包:holer-xxx.tar.gz Holer支援各

怎樣從訪問php-fpm?

acc cal 選擇 dem org inter 127.0.0.1 code address 本地安裝了一個php-fpm,只能在局域網內訪問,怎樣從外網也能訪問到本地的php-fpm呢?本文將介紹具體的實現步驟。 準備工作 安裝並啟動php-fpm 默認安裝的php-f

怎樣從訪問數據庫?

平臺 主機 tree 數據庫 步驟 命令 fff 客戶端 映射 本地安裝了一個數據庫,只能在局域網內訪問到,怎樣從外網也能訪問到本地的數據庫呢?本文將介紹具體的實現步驟。 1. 準備工作 1.1 安裝並啟動數據庫 默認安裝的數據庫端口是1024。 2. 實現步驟 2.1 下

怎樣從訪問Jetty?

本地安裝了一個Jetty,只能在區域網內訪問,怎樣從外網也能訪問到本地的Jetty呢?本文將介紹具體的實現步驟。 準備工作 安裝並啟動Jetty 預設安裝的Jetty埠是8080。 實現步驟 下載並解壓holer軟體包 Holer軟體包:holer-xxx.tar.gz Holer支援各種OS系統

怎樣從訪問Django?

本地安裝了一個Django,只能在區域網內訪問,怎樣從外網也能訪問到本地的Django呢?本文將介紹具體的實現步驟。 準備工作 安裝並啟動Django 預設安裝的Django埠是8000。 實現步驟 下載並解壓holer軟體包 Holer軟體包:holer-xxx.tar.gz Holer支援各種

怎樣從訪問Jboss?

本地安裝了一個Jboss,只能在區域網內訪問,怎樣從外網也能訪問到本地的Jboss呢?本文將介紹具體的實現步驟。 準備工作 安裝並啟動Jboss 預設安裝的Jboss埠是8080。 實現步驟 下載並解壓holer軟體包 Holer軟體包:holer-xxx.tar.gz Holer支援各種OS系統