SSH(Secure Shell)是一個在應用層和傳輸層上的資料傳輸框架。正如其名,SSH提供安全的資料傳輸協定通道,在Shell層(命令列介面)上實現資料交換的功能。要在Linux上使用SSH互相進行連線十分簡單,但在Windows上就有點小麻煩,也不在本篇文章的討論範圍裡面。



SSH和SSL有什麼不同?

SSH和SSL名稱看起來相似,也都跟安全連線有關,那他們到底有什麼不同呢?SSH(Secure Shell)主要運作在第22號連接埠(Port 22),而且需要帳號密碼或是金鑰來進行驗證,能應用在任何的裝置上,使其他裝置連接上,並進行安全的命令列操作或是檔案的傳輸;SSL(Secure Sockets Layer)則是常與HTTP、SMTP、FTP等協定一同使用,不需要帳密或是金鑰來驗證,通常運作於第443號連接埠(Port 443),應用在網際網路(Internet)上的伺服器,使資料在傳送的過程中更加安全。

讓Linux系統可以透過SSH被遠端操作

安裝SSH

Debian或是其分支和衍生的Linux發行版,可以直接使用以下指令來安裝SSH:

sudo apt install openssh-server

紅帽系的Linux發行版,則可以直接使用以下指令來安裝SSH:

sudo dnf install openssh-server

查看SSH有無被開啟

安裝完SSH套件後,一般來說會自動啟用,可以使用以下指令來檢查SSH的啟動狀況:

sudo ss -tlnp | grep ssh

ss指令可以顯示出Socket相關的資訊。-l參數可以只顯示正在監聽中的連線。若使用ss指令時都沒給任何參數的話,會忽略掉監聽中的連線。-t參數可以只顯示TCP連線。-n參數可以讓連接埠數字直接被輸出,而不是用一個名稱代替。-p參數可以顯示佔用連線的行程。

ssh

如上圖,如果有看到TCP有在監聽連接埠22,就表示SSH伺服器安裝成功了!

手動開啟與關閉SSH

如果SSH沒有被開啟,可以使用以下指令來開啟SSH:

sudo systemctl start ssh

關閉SSH:

sudo systemctl stop ssh

重啟SSH:

sudo systemctl restart ssh

用SSH連線到別台裝置

在Linux下只要使用ssh指令即可透過SSH來連線到別台裝置。使用帳密登入,最簡單的方式如下:

ssh username@hostname

username是遠端裝置的登入帳號,hostname是遠端裝置的網路位址(網址或是IP)。

例如:

ssh magiclen@192.168.56.103

ssh

使用金鑰登入的方式可以參考這篇文章

若是本機的帳號名稱和遠端的帳號名稱一樣,可以省略不輸入帳號,指令可簡寫成:

ssh hostname

例如:

ssh 192.168.56.103

連接後,輸入該帳號的密碼,即可登入。

ssh

成功使用SSH登入後,就可以開始使用命令列來操作遠端的電腦了!如果要從SSH中離開,可以執行logout指令,或者按下快速鍵Ctrl + d

ssh

用SSH的SFTP進行檔案操作

SSH包含了SFTP(SSH File Transfer Protocol),可用來上傳本機的檔案或是下載遠端裝置上的檔案。

命令列方式

在命令列中使用SFTP的方式類似SSH,一開始也是要先與遠端裝置進行連線,指令如下:

sftp magiclen@192.168.56.103

ssh

連線到遠端裝置後,就可以使用SFTP提供的一些指令來做一些事了。常用的指令列表如下:

  • cd:切換遠端裝置目前的工作目錄。
  • ls:查看遠端裝置目前工作目錄下的檔案與目錄。
  • put:傳送本機的檔案至遠端裝置目前的工作目錄中。
  • get:下載遠端裝置上的檔案至本機目前的工作目錄中。
  • mkdir:在遠端裝置上建立新目錄。
  • rm:刪除遠端裝置上的檔案。
  • rmdir:刪除遠端裝置上的目錄。
  • chmod:修改遠端裝置上檔案或是目錄的權限。
  • rename:重新命名遠端裝置上的檔案或是目錄。
  • exit:離開sftp。

ssh

FileZilla方式

FileZilla是一款FTP和SFTP連線的軟體,可以參考這篇文章來安裝。

使用FileZilla來連SFTP,需要將站台設定為SFTP協定,連接埠如有需要可以填寫,留空的話預設使用22

ssh

登入成功後,使用方式和一般的FTP一樣。

ssh