在樹莓派上使用SSH

 

本文譯自樹莓派雜誌84期(MagPi issue 84),原文標題為Use SSH (Secure Shell) with Raspberry Pi(插圖來源取自雜誌內頁)。本篇與原文同樣使用CC 3.0 BY-NC-SA授權,歡迎標註原作者轉載,若有任何不妥與指教敬請告知。

 

SSH(Secure Shell,安全外殼協定)是一種加密的網路技術,使我們能夠透過網路連接的方式用命令列管理其他電腦。如果你想要從另一台電腦的終端機快速的連接到樹莓派上,SSH是個簡單方便的選擇,對於安裝無圖形界面的安裝檔或是不需要使用螢幕的專案(例如機器人)也相當適合,特別是在製作物聯網(IoT)專案時,因為它們可能已經事先嵌入在其他硬體中。

我們先前已經介紹了VNC (Virtual Network Computing,在MagPi 71期有詳細的介紹)SSH也提供了和VNC類似的服務,但是VNC需要分享整個畫面,SSH只要有命令列(Linux/macOS上稱作終端機(Terminal)就能操作。SSH還能夠在命令列使用SCP(Secure Copy,安全複製) SFTP (Secret File Transfer Protocol,安全檔案傳輸協議)在樹莓派上傳輸與接收檔案。

LinuxmacOSWindows 10預設都已經安裝了可以使用SSH的應用程式,所以不需要額外安裝其他的程式。基於安全考量,我們強烈的建議更改樹莓派預設的密碼 (參考:magpi.cc/tZdxha)

SSH使用加密網路技術,所以它不會將未加密的密碼傳送出去,更進階的使用者還能使用ssh序號產生器(ssh-keygen) 控制加密金鑰。現在,我們將介紹如何設定和使用SSH

你將會需要:
• 樹莓派
• 路由器
Raspbian 系統
• 第二台電腦 (WindowsmacOS Linux系統皆可)
 

RaspbianSSH預設是關閉的,我們必須啟用它。最簡單的方法是使用樹莓派的組態工具(Configuration Tool)

 

01 Raspbian中啟用SSH

基於安全因素, Secure Shell預設是關閉的狀態,在樹莓派中選擇 選單>偏好>樹莓派配置,點擊啟用,按下OK。不需要重新啟動樹莓派,設定完成後SSH就會被啟用(確保你已經更新了預設的密碼,即 'raspberry' )

 

02 Windows中啟用SSH用戶端

如果你是macOSLinux的使用者,請跳到步驟3

Windows 10支援SSH,但需要手動開啟,點擊搜尋圖示,尋找「管理選用功能」,點擊後會開啟設定視窗,選擇「新增功能」等待清單載入,找到Open SSH Client (Beta)並下載。

 

03 取得IP位址

將樹莓派連上區域網路,使用無線LAN,或是用網路線將樹莓派直接連接到路由器上。

開啟終端機視窗輸入以下命令:hostname,你將會看到:raspberrypi (回傳的內容就是主機名稱)

某些情況下你可以使用這個主機名稱,像在沒有IP位址的時候,但是直接使用IP位址會是更可靠的做法,輸入以下指令來獲取IP位址:hostname -I

系統會回傳四組用' . '分開的數值,舉例來說我們回傳的IP位址是192.168.0.41,記下這組數字,待會我們會用到它。

 

04 透過SSH連接

開啟Windows的命列列視窗或Linux/macOS的終端機,輸入以下指令:ssh pi@<IP>

用樹莓派的IP位址取代<IP>欄位,在我們的例子中就是輸入 ssh Email住址會使用灌水程式保護機制。你需要啟動Javascript才能觀看它

第一次連接時,你會收到「the authenticity can't be established 」這串訊息,後面則是連接由字母和數字組成的雜湊碼,它會問你:Are you sure you want to continue connecting?(你確定要繼續連接嗎?)

輸入yes並按下Enter鍵,系統會要求你輸入樹莓派的密碼。

 

05 在樹莓派上

當你看到命令列上的文字已經變成pi@raspberrypi: ~$

就代表你已經成功登入樹莓派了,輸入ls,就能看到桌面、下載、文件,以及其他樹莓派的特殊檔案和資料夾。你可以像在樹莓派上使用終端機一樣建立、編輯、移動或執行文件。

 

在終端機中使用hostname指令確認主機名稱是raspberrypi,並使用hostname -I查看被分配到的IP位址。

重要提示-boot建立ssh檔案(適用於沒有外接螢幕的情況)

你可以用另一台電腦讀取樹莓派的記憶卡設定SSH,在記憶卡的boot目錄下新增一個叫做ssh的檔案,不需要加任何副檔名。當樹莓派啟動時,系統會到boot磁區尋找ssh這個檔案,如果檔案存在,就會自行啟動SSH,並將空白檔案刪除,檔案的內容可以包括文字也可以是空白檔案。 

06 圖形化界面

SSH仍然存在其限制,一般的SSH連接無法直接開啟視窗程式,作為替代方案,你可以學習命令列的指令操作(例如用nanovim替代Leafpad進行文字編輯),參考如何在樹莓派上編輯文件:magpi.cc/BNFKeP

Linux電腦上,你可以透過SSH轉發X session,以便使用ssh -Y指令顯示圖形視窗:

ssh -Y pi@<IP>

我們還是能像以前一樣使用命令列,但是現在已經可以開啟圖形化界面的應用程式了,例如輸入 scratch & 就會在圖形視窗上開啟scratch

要注意的是MacOS系統已經沒有預載X11(參考magpi.cc/AqEvnA),所以你必須單獨下載並且安裝它(xquartz.org),才能透過SSH開啟圖形視窗。

重要提示-開啟與關閉SSH

你可以在樹莓派上用命令列啟動SSH:

sudo systemctl enable ssh

sudo systemctl start ssh

關閉SSH:

sudo systemctl stop ssh

sudo systemctl disable ssh

 

07 複製檔案

在命令列下使用SSH分享檔案並不容易,但這是可行的,而且易於學習。如果你仍連接著樹莓派,在命令列輸入exit返回本地端的shell。啟用SSH後,你可以從你的電腦用SCP複製檔案到樹莓派上。

我們已經下載第83期的MagPi PDF檔到「下載」資料夾內,現在要將它複製到樹莓派上的MagPi目錄中。

使用以下指令複製:scp <source> pi@<IP>:<destination>

<source><destination>的部份替換成檔案和目標資料夾的路徑,並在後方加上樹莓派的IP位址,從電腦上複製檔案到樹莓派的指令就會像這樣:

scp Downloads\MagPi83.pdf Email住址會使用灌水程式保護機制。你需要啟動Javascript才能觀看它:/ home/pi/MagPi

將第83期的MagPi issue PDF檔從Windows 10上的 Download資料夾複製到樹莓派的MagPi目錄下。

注意:Windows的路徑使用反斜線”\”LinuxMacOS的路徑則使用斜線 ”/”

08 複製大量的檔案

如果要在電腦和樹莓派之間複製大量的檔案,使用專門的FTP軟體架設SFTP是個不錯的方法,例如使用FileZilla 這個軟體(FileZilla-project.org)

FileZilla等程式中使用SFTP透過圖形界面與樹莓派傳輸檔案

在電腦上安裝FileZilla之後 (它支援LinuxWindowsmacOS的環境),開啟FileZilla,選擇檔案> 網站管理器(Site Manager),點擊新網站(New Site),你可以自己命名網站的名稱,例如Raspberry Pi,將協議更改為SFTP – SSH檔案傳輸協定。

主機欄位輸入Raspberry Pi,使用者名稱輸入pi,密碼欄位輸入你的樹莓派密碼,點擊連接,就能遠端連接到樹莓派上。

螢幕右側的「遠端(Remote)」可以看到樹莓派上所有的文件,左側的「本地端(Local Site)」則顯示目前電腦上的所有文件。

雙擊任意一側的目錄就能瀏覽其內容,點擊每列最上方的‘..’資料夾就會回到上一層目錄,在本地端對檔案點擊兩下以傳送到遠端,反之亦然。

如果你需要更多的指引,請參閱FileZilla的教學(magpi.cc/W0vBgn)