借助 frp 隨時隨地訪問自己的樹莓派

前言

看了知乎上的一個「樹莓派」是什么以及普通人怎么玩朵逝? 的高票回答,雙十一時間,果斷買了一個樹莓派 3.
周一(11.13) 到的貨.我目前只想實現一個簡單的功能 -- 想從任意位置訪問我的樹莓派. 就像一個潘多拉魔盒,第一步肯定是拿到鑰匙!

組裝

組裝,其實指的是把樹莓派放進紅白外殼里.基本思路就是,去賣家店鋪里看組裝說明.其中,小風扇的安裝有點特殊,需要接4/6腳.就是最外層的右起第2和第3個.接不對,小風扇,就不會轉.我專門截了個圖,以備忘:

風扇

調試

我前面說過了,我買的是套裝,自帶一個小顯示器的那種.主要是內網ip經常變,我不是很容易確定樹莓派的ip.還有就是第一次啟動時,我需要手動輸入下密碼.

雖然聽了很多,但是真的看到那個小盒子,加上那么低價的顯示器,竟然真的一起合作,把系統桌面給顯示出來了,還是有一點點觸動的. NB 啊~

桌面

PS: 這個小顯示器,也可以當做 mac 的外接顯示器.第一使用 mac 顯示器,記住操作技巧是: 用力的把鼠標移到屏幕外,然后光標就會自動出現在另一塊屏幕上.

修改默認 ssh 密碼

樹莓派的 ssh 登錄密碼, 默認用戶名是: pi , 默認密碼是: ** raspberry** 要第一時間修改下.

passwd

設置 ssh 自動登錄

樹莓派默認沒有目錄 .ssh ,需要先創(chuàng)建下.需要ssh登錄到樹莓派之后,在派中執(zhí)行:

mkdir ~/.ssh/

在任意一臺想要訪問樹莓派的電腦中,直接執(zhí)行(而不是登錄到樹莓派后執(zhí)行):

# 設置自動登錄.
cat ~/.ssh/id_rsa.pub | ssh pi@樹莓派內網ip  "cat >>  ~/.ssh/authorized_keys"

樹莓派內網ip 要換為樹莓派的內網ip.當然,也需要你用來訪問樹莓派的電腦和樹莓派處于同一局域網.

修改 root 密碼

樹莓派默認沒有 root 密碼,直接設置即可.

# 設置 root 密碼
sudo passwd root

# 解鎖 root 賬戶
sudo passwd --unlock root

# 切換到 root 賬戶
su root

解決樹莓派容量使用不完全問題

我是 64G 的內存卡,但是看容器總共只有 7.2G.第一反應是遇到了黑心商家,但是網上搜了下,簡單設置重啟即可.詳見: http://cedar-renjun.github.io/2015/10/11/resize-raspberry-sd-volume/

此處引用記錄下關鍵步驟,以供查閱:

操作步驟
1.重新樹莓派宛官,進入命令行頁面
2.登陸樹莓派,用戶名 pi增炭,密碼 raspberry

  1. sudo su
    切換至超級用戶
  2. df -h
    顯示出當前分區(qū)的狀態(tài)和使用率
  3. 輸入 fdisk /dev/mmcblk0 加載SD卡
  4. p 打印當前分區(qū)
    你應該會看到三個分區(qū)(mmcblk0, mmcblk0p1, mmcblk0p2)凰盔,現在把分區(qū)2的信息寫下來(/dev/mmcblk0p2)
    我主要記錄了開始扇區(qū)(122880)和結束扇區(qū)(8447999)的數值
    7.按 d 開始刪除分區(qū)
  5. 系統提示輸入刪除分區(qū)號辣卒,輸入 2
  6. n 新建分區(qū)掷贾,然后依次輸入 p, 2
  7. 接下來輸入原來記錄的2扇區(qū)開始號(122880),記得替換成你自己的數字
  8. w 保持配置
  9. 輸入 reboot 重啟樹莓派
  10. 輸入 sudo resize2fs /dev/mmcblk0p2 更新系統
  11. 輸入 df -h 看看荣茫,是不是已經完全使用了剩余空間

注意:在第 10 步之后,系統提示讓輸入結束扇區(qū)時,直接保持默認回車即可.

配置 frp

準備公網 ip 和公網服務器

公網ip和公網服務器,類似于一個橋梁.我們通過它將可以訪問我們放置在內網的樹莓派.服務器,我是買的最低配置的云服務器.當然,用自己已有的ip和服務器也可以.

可選: 準備一個域名

頂級域名或二級域名,只要能做 ip 類型的 DNS 解析都可以.這一步,就是簡單的把域名解析到前一步的公網 ip 上.這樣以后訪問會省事些,不用記ip了. 當然,直接用 ip 訪問也是可以的.

配制 frp 服務器端 -- frps

frp 的服務器端,一般名字是 frps,配置文件是 frps.ini. 這兩個文件要放到你的公網服務器上.一般,你都應去發(fā)布頁,去尋找 frp 的對應的操作系統的最新下載版本.此處以 frp_0.13.0_linux_amd64.tar.gz 為例.

# 下載.下載地址可以在github發(fā)布頁右鍵點擊某個下載項 --> 復制鏈接地址.
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz

# 解壓.
tar -zxvf frp_0.13.0_linux_amd64.tar.gz

# cd 到 frp 目錄.
cd frp_0.13.0_linux_amd64

# 編輯.debian上,打開vim的命令是 vi,不是 vim.
vi frps.ini

在 frps.ini 中輸入:

[common]
bind_port = 7000
vhost_http_port =80
dashboard_port = dashboard_port_number
dashboard_user = dashboard_user_name
dashboard_pwd = dashboard_pwd_value
privilege_token = privilege_token_value

然后,開啟 frps 即可:

./frps -c ./frps.ini

配置好服務器端后,你應該就可以在瀏覽中打開 frp 的控制臺頁面了:

dashboard

注意:

  • dashboard_port_number 改為一個特定的端口號,如8000,如此便可以通過 http://yourip:8000 來訪問 frps 的網頁控制臺頁面.
  • dashboard_user_name 和 dashboard_pwd_value,要改為一個自定義的用戶名和密碼,用于在訪問 frps 控制臺頁面時輸入.
  • privilege_token_value 改為一個自定義的值.只要客戶端與服務端 privilege_token 匹配時,客戶端才能連接到 frp 服務端.

配制 frp 客戶端 -- 樹莓派

frp 的客戶端,一般名字是 frpc,配置文件是 frpc.ini. 這兩個文件要放到你的內網服務器--樹莓派上.一般,你都應去發(fā)布頁,去尋找 frp 的對應的操作系統的最新下載版本.此處以 frp_0.13.0_linux_arm.tar.gz 為例.

# 下載.下載地址可以在github發(fā)布頁右鍵點擊某個下載項 --> 復制鏈接地址.
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_arm.tar.gz

# 解壓.
tar -zxvf frp_0.13.0_linux_arm.tar.gz

# cd 到 frp 目錄.
cd frp_0.13.0_linux_arm.tar.gz

# 編輯. debian上,打開vim的命令是 vi,不是 vim.
vi frpc.ini

在 frpc.ini 中輸入:

[common]
server_addr = your_server_ip
server_port = 7000
privilege_token = privilege_token_value
login_fail_exit = false

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22

remote_port = remote_port_number

然后,開啟 frpc 即可:

./frpc -c ./frpc.ini

配置好服務器端后,你應該在任意可以連接到互聯網的電腦上,使用 ssh 訪問自己的樹莓派了:

# 端口和ip要記得替換為自己的.
ssh -oPort=remote_port_number pi@your_server_ip

注意:

  • your_server_ip 要替換為公網服務器上綁定的公網 ip.
  • frps 服務器端與客戶端不必是同一操作系統, 但frp 版本最好對應
  • 樹莓派3 debian 系統,需要的是 arm 版本的程序安裝包.
  • privilege_token 要和服務器端的 frps.ini 中對應
  • login_fail_exit 很重要,否則后面無法實現系統重啟時自動啟動 frpc 功能.
  • remote_port_number,用來指定通過遠程服務器的哪個端口來 ssh 訪問樹莓派.

使用 Systemd 實現自動啟動 frp

Systemd,可以保證在樹莓派意外重啟時,能自動啟動 frp 相關服務.這樣,我們就不用整天提心吊膽,擔心各種意外了.

安裝 Systemd

大部分 Linux 系統中,都內置了 Systemd.如果沒有,可以手動安裝.

安裝systemd請運行:

apt-get update
apt-get install systemd
apt-get install systemd-sysv

在安裝完 systemd 之后想帅,為了使系統以 systemd 的方式使用,最好在 grub 配置文件中的 kernel 命令行指定下面的參數:

vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash init=/lib/systemd/systemd"

為了使用新安裝的systemd來引導系統,請重新啟動系統:

# reboot

在服務器端使用 Systemd 管理 frps

# 需要先 cd 到 frp 解壓目錄.

# 復制文件
cp frps /usr/local/bin/frps
mkdir /etc/frp
cp frps.ini /etc/frp/frps.ini

# 編寫 frp service 文件啡莉,以 centos7 為例,適用于 debian
vim /usr/lib/systemd/system/frps.service
# 內容如下
[Unit]
Description=frps
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

# 啟動 frp 并設置開機啟動
systemctl enable frps
systemctl start frps
systemctl status frps

# 部分服務器上,可能需要加 .service 后綴來操作,即:
systemctl enable frps.service
systemctl start frps.service
systemctl status frps.service

在樹莓派客戶端使用 Systemd 管理 frpc

# 需要先 cd frp 解壓目錄.

# 復制文件
cp frpc /usr/local/bin/frpc
mkdir /etc/frp
cp frpc.ini /etc/frp/frpc.ini

# 編寫 frp service 文件港准,以 centos7 為例,適用于 debian
vim /usr/lib/systemd/system/frpc.service
# 內容如下
[Unit]
Description=frpc
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

# 啟動 frp 并設置開機啟動
systemctl enable frpc
systemctl start frpc
systemctl status frpc

# 部分服務器上,可以需要加 .service 后綴來操作,即:
systemctl enable frpc.service
systemctl start frpc.service
systemctl status frpc.service

注意:

  • frps 或 frpc 啟動無效時,可以嘗試先停止服務,如:
systemctl stop frpc

參考

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咧欣,隨后出現的幾起案子浅缸,更是在濱河造成了極大的恐慌,老刑警劉巖魄咕,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衩椒,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機毛萌,發(fā)現死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門梢什,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人朝聋,你說我怎么就攤上這事囤躁〖胶郏” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵狸演,是天一觀的道長言蛇。 經常有香客問我,道長宵距,這世上最難降的妖魔是什么腊尚? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮满哪,結果婚禮上婿斥,老公的妹妹穿的比我還像新娘。我一直安慰自己哨鸭,他們只是感情好民宿,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著像鸡,像睡著了一般活鹰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上只估,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天志群,我揣著相機與錄音,去河邊找鬼蛔钙。 笑死锌云,一個胖子當著我的面吹牛,可吹牛的內容都是我干的夸楣。 我是一名探鬼主播宾抓,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼豫喧!你這毒婦竟也來了石洗?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤紧显,失蹤者是張志新(化名)和其女友劉穎讲衫,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡涉兽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年招驴,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枷畏。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡别厘,死狀恐怖,靈堂內的尸體忽然破棺而出拥诡,到底是詐尸還是另有隱情触趴,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布渴肉,位于F島的核電站冗懦,受9級特大地震影響,放射性物質發(fā)生泄漏仇祭。R本人自食惡果不足惜披蕉,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乌奇。 院中可真熱鬧没讲,春花似錦、人聲如沸礁苗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寂屏。三九已至贰谣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迁霎,已是汗流浹背吱抚。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留考廉,地道東北人秘豹。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像昌粤,于是被迫代替她去往敵國和親既绕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內容