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

Ubuntu或是其分支和衍生的Linux發行版,可以直接使用以下指令來安裝SSH:
sudo apt-get install ssh

查看SSH有無被開啟

安裝完SSH套件後,一般來說會自動啟用,可以使用以下指令來檢查SSH的啟動狀況:
netstat -a | grep ssh
如果SSH有啟動,應該會看到底下這行訊息:
tcp 0 0 *:ssh *:* LISTEN

手動開啟與關閉SSH

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



關閉SSH:

sudo service ssh stop
重啟SSH:
sudo service ssh restart

用SSH連線到別台裝置

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

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

例如:

ssh magiclen@192.168.1.107

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

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

ssh hostname
例如:
ssh 192.168.1.107
連接後,輸入該帳號的密碼,即可登入。

成功使用SSH登入後,就可以開始使用命令列來操作遠端的電腦了!如果要從SSH中離開,可以使用以下指令:

logout

用SSH的SFTP進行檔案操作

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

命令列方式

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

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

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

FileZilla方式

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

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

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