在這篇文章我將分享我這幾天和樹莓派折騰下來的一些發現和經驗
首先,我先將我的設備和環境列出來:
類別 | 名稱 |
---|---|
樹莓派開發板 | Raspberry Pi 4 Model B |
電腦 | Macbook Pro M1 8GB-ram |
網路 | Wifi Lan, iPhone hotspot |
PC OS | macOS Sonoma 14.0 |
Raspi OS | Debian GNU/Linux 12 (bookworm) |
Linux kernel | Linux 6.1.0-rpi4-rpi-v8 |
ssh 登入可以進到樹莓派的 CLI,你就可以用文字介面操作樹莓派了,當你可以操作它之後,就能夠進行基本的設定或安裝你想要的軟體,是完整這台小型電腦的第一步
關於IP位置的取得方式,分成下列幾個網路環境
但如果你用的是 Mac 電腦的話,可以直接使用
$ ping <hostname>
的shell指令
利用你電腦的 Terminal 就可以執行了
執行完會有這樣的畫面
就可以看到在同個區網裡面,叫做<hostname.local>裝置的IP位置叫做什麼了
接下來在各個網路環境我所介紹的方法是我覺得百分之百可以取得IP位置的方法,理應不會有特殊情況無法取得的場合存在
相信大家家裡或工作場所都有無線網路Wifi可以使用,假如你在灌系統時就有設定好你的所在之處的Wifi名稱和密碼的話,在樹莓派開機的同時就會自動連上去了,這時你就可以將你的電腦也連上同個區網,並利用這個方法檢查樹莓派它在這個區網的IP位置
我所使用的方法不需要下載第三方軟體,我覺得那樣很麻煩,所以就用了最暴力的方法:
直接利用瀏覽器登進這個區網的路由器的後台去查看連線裝置的IP位置
我們所使用的如果是市售的路由器,通常都有一個可以登入的後台,而只要利用瀏覽器在網址的地方輸入路由器本身的IP位置就可以進去了。或許有人會問說那要怎麼知道路由器的IP位置?我們可以打開裝置中設定Wifi頁面,通常會有一個選項可以查看Wifi的詳細資訊,裡面通常會有自己所連的路由器在區網中的IP位置,只要在瀏覽器中輸入那個IP位置就會自動導到後台的登入頁面囉
注意,後台也是有登入密碼的,如果當初路由器是自己設定的話應該不陌生,但如果不是的話可能就要向這個網路的設定者詢問才能登入後台
進到後台之後通常會有一個可以查看所有連線裝置的頁面,點進去之後就可以看到一個有裝置名稱和其IP位置的列表,你只要看到你樹莓派的裝置名稱,在它旁邊的IP位置就會是你可以用來登ssh的IP位置囉!
手機熱點會稍微麻煩一點,因為它不像路由器那樣可以登進後台查看裝置的IP位置,在不借助第三方程式的幫助下我只有想到一個辦法
我們電腦就算連接手機熱點也還是可以像看路由器那樣看到手機熱點在這個區網中的IP位置。通常,通常啦,它在IP位置的四段數字串中,第四個數字會是1,像這樣:
由上圖我們可以看到在這個區網中,我正在使用的裝置的IP位置是 172.20.10.2
而路由器的IP位置則是 172.20.10.1
我們可以發現只要是在同個區網當中,所有連線裝置的IP位置的前三個數字串都是一樣的,只有第四個數字串會不一樣,只要利用這個特性,我們就可以在 ssh 登入的時候先在IP位置的地方打上前面三個數字串,最後那個就一個個慢慢試,只要你試到的剛好是樹莓派的話,理論上等不超過五秒就會跳出要你輸入登入密碼的指示了,要是你沒試到的話,就會連特別久或是直接告訴你連線被拒絕,這時就往下個數字試就好了
這個方法算是最笨的方法,但也沒辦法,如果你可用 ping 就抓到的話也不用那麼麻煩了
這應該是最可靠的方法了,直接建立有線連線,甚至不需要無線網路,但我還沒親自嘗試過,所以細節我先留白,只講概念的部分
道理很簡單,在有線的連線建立之後,等於是你使用的裝置跟樹莓派之間形成了一個有線的區網,所以你就直接打開網路設定中找到有線連線的裝置就可以看到在有線的區網中,樹莓派的IP位置了
到這邊為止我們都是使用文字介面在操作樹莓派,但其實樹莓派的系統裡面是有內建 GUI 的,雖然說受限於樹莓派本身的效能,圖形化介面沒辦法提供很流暢的使用體驗,但對於文字介面苦手的人來說就算是一個福音吧~
這段將說明如何簡單架設遠端桌面環境去操作樹莓派裡面的 GUI
終究還是無法脫離第三方軟體的魔掌,到了這個地步,還是會需要下載第三方軟體
好啦反正就是下載 VNC Viewer,他是一個可以透過 IP 位置去遠端連接樹莓派桌面的工具,你可以把它當作 Linux 版的 AnyDesk 或 Chrome Desktop
下載它很簡單,直接到官網找到你的作業系統所適配的版本就好了,剩下就是安裝包的安裝方式,小學生都會
這邊要特別注意一個地方,當你在使用 IP 位置登入遠端桌面時,記得在 IP 位置的後面加上 ::5900
像這樣: 172.20.10.4::5900
才會登得進去
這邊沒有叫講什麼,只是要提醒你換了網路你樹莓派在區網的 IP 位置就會變,所以就要回到最上面的步驟去找到你樹莓派的 IP 位置
例如說:172.20.10.4 是樹莓派在我手機熱點上的區網 IP,當我換到我宿舍房間網路或其他任何網路後,這個 172.20.10.4 就不再適用,我必須要重新尋找樹莓派在這個區網的 IP
會有這個單元的原因是一個辛酸血淚史,我當時參照的一個網路教學它在教我 ssh 登入時使用的是 Hostname,就像這樣 $ ssh pi@raspberrypi.local
就豪不費吹灰之力地可以登進樹莓派了,但我當時一開始帶弄的時後就怎麼試都無法成功,永遠都會顯示 ssh: Could not resolve hostname raspberrypi: …
這個東西折騰了我可不少,因為一開始的教學所說明的主要方法就是透過 Hostname,所以在一開始我是預設這個方法是一定會成功的方法,誰知道這其實是要有條件的,我後來是在網路上爬了一陣子後才漸漸意識到好像用 Hostname 登 ssh 並不是預設就可以達成的,才改變上網搜索的關鍵字
今天先講結論就好了。
Mac 非常方便,不用管這些,直接用 $ ssh <user>@<hostname>
就可以連線了
但有一點要注意,當你有兩個裝置都使用同一個hostname的話,會有第二台裝置被拒絕連線的問題。
先簡單說明一 Mac 的 ssh 連線原理好了,Mac 在連上一台新的裝置時,會在使用者資料夾底下的隱藏資料夾 ~/.ssh 下一個叫做 known_hosts 的文件中記錄這個裝置的資料,包括 ssh 的使用者名稱和裝置的金鑰,所以當第二個同名的裝置要登入時,它會抓文件中第一台裝置的資料去做比對,而因為裝置的金鑰不一樣,所以會被拒絕登入。
要解決這個問題就要進到 known_hosts 的文件新增同一個使用者名稱所對應的裝置金鑰,這樣系統在抓的時後就可以從這個檔案裏面抓到這個使用者對應到這個裝置金鑰的資料,才會被允許登入。
Windows 也是差不多邏輯,差就差在 Windows 是一開始就不給你登入,一定要先在C:\Windows\System32\drivers\etc\hosts 的文件中新增使用者名稱和對應的 IP 位置,方能在命令提示字元中使用 hostname 登入
另外,Windows 一開始也是沒辦法直接 Ping 去找 IP 位置的,反正一開始就是不給你一條正規的道路直接 access 它,非得要你去後台看它的 IP 有第一次連線後才可以去設那些有的沒的才讓你可以直接連它(有夠麻煩)
如果上述 Windows 的登入方式讓你覺得很麻煩的話,你可以在樹莓派上面安裝 Avahi-daemon 這個套件(運作原理我也不知道,改天研究完再更新吧~),就可以讓你在不管什麼裝置上面都暢行無阻,不管是 Ping 指令還是 ssh 連線都可以直接使用 hostname,那我們緊接著開始吧~
$ sudo apt update
然後 $ sudo apt upgrade
更新目前所有套件$ sudo apt install avahi-daemon
安裝 avahi-daemon 套件$ sudo systemctl enable avahi-daemon.service
$ sudo systemctl start avahi-daemon.service