藉助 frp 隨時隨地訪問本身的樹莓派

前言

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

組裝

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

風扇

調試

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

雖然聽了不少,可是真的看到那個小盒子,加上那麼低價的顯示器,居然真的一塊兒合做,把系統桌面給顯示出來了,仍是有一點點觸動的. NB 啊~shell

桌面

PS: 這個小顯示器,也能夠當作 mac 的外接顯示器.第一使用 mac 顯示器,記住操做技巧是: 用力的把鼠標移到屏幕外,而後光標就會自動出如今另外一塊屏幕上.vim

修改默認 ssh 密碼

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

passwd

設置 ssh 自動登陸

樹莓派默認沒有目錄 .ssh ,須要先建立下.須要ssh登陸到樹莓派以後,在派中執行:服務器

mkdir ~/.ssh/

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

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

樹莓派內網ip 要換爲樹莓派的內網ip.固然,也須要你用來訪問樹莓派的電腦和樹莓派處於同一局域網.ssh

修改 root 密碼

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

# 設置 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

切換至超級用戶

  1. df -h

顯示出當前分區的狀態和使用率

  1. 輸入 fdisk /dev/mmcblk0 加載SD卡

  2. p 打印當前分區

你應該會看到三個分區(mmcblk0, mmcblk0p1, mmcblk0p2),如今把分區2的信息寫下來(/dev/mmcblk0p2)
我主要記錄了開始扇區(122880)和結束扇區(8447999)的數值
7.按 d 開始刪除分區

  1. 系統提示輸入刪除分區號,輸入 2

  2. n 新建分區,而後依次輸入 p, 2

  3. 接下來輸入原來記錄的2扇區開始號(122880),記得替換成你本身的數字

  4. w 保持配置

  5. 輸入 reboot 重啓樹莓派

  6. 輸入 sudo resize2fs /dev/mmcblk0p2 更新系統

  7. 輸入 df -h 看看,是否是已經徹底使用了剩餘空間

注意:在第 10 步以後,系統提示讓輸入結束扇區時,直接保持默認回車便可.

配置 frp

準備公網 ip 和公網服務器

公網ip和公網服務器,相似於一個橋樑.咱們經過它將能夠訪問咱們放置在內網的樹莓派.服務器,我是買的最低配置的雲服務器.固然,用本身已有的ip和服務器也能夠.

可選: 準備一個域名

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

配製 frp 服務器端 -- frps

frp 的服務器端,通常名字是 frps,配置文件是 frps.ini. 這兩個文件要放到你的公網服務器上.通常,你都應去發佈頁,去尋找 frp 的對應的操做系統的最新下載版本.此處以 frp_0.13.0_linux_amd64.tar.gz 爲例.

# 下載.下載地址能夠在github發佈頁右鍵點擊某個下載項 --> 複製連接地址.
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. 這兩個文件要放到你的內網服務器--樹莓派上.通常,你都應去發佈頁,去尋找 frp 的對應的操做系統的最新下載版本.此處以 frp_0.13.0_linux_arm.tar.gz 爲例.

# 下載.下載地址能夠在github發佈頁右鍵點擊某個下載項 --> 複製連接地址.
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

參考

相關文章
相關標籤/搜索