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:
紅帽系的Linux發行版,則可以直接使用以下指令來安裝SSH:
查看SSH有無被開啟
安裝完SSH套件後,一般來說會自動啟用,可以使用以下指令來檢查SSH的啟動狀況:
ss
指令可以顯示出Socket相關的資訊。-l
參數可以只顯示正在監聽中的連線。若使用ss
指令時都沒給任何參數的話,會忽略掉監聽中的連線。-t
參數可以只顯示TCP連線。-n
參數可以讓連接埠數字直接被輸出,而不是用一個名稱代替。-p
參數可以顯示佔用連線的行程。
如上圖,如果有看到TCP有在監聽連接埠22,就表示SSH伺服器安裝成功了!
手動開啟與關閉SSH
如果SSH沒有被開啟,可以使用以下指令來開啟SSH:
關閉SSH:
重啟SSH:
用SSH連線到別台裝置
在Linux下只要使用ssh
指令即可透過SSH來連線到別台裝置。使用帳密登入,最簡單的方式如下:
username
是遠端裝置的登入帳號,hostname
是遠端裝置的網路位址(網址或是IP)。
例如:
使用金鑰登入的方式可以參考這篇文章。
若是本機的帳號名稱和遠端的帳號名稱一樣,可以省略不輸入帳號,指令可簡寫成:
例如:
連接後,輸入該帳號的密碼,即可登入。
成功使用SSH登入後,就可以開始使用命令列來操作遠端的電腦了!如果要從SSH中離開,可以執行logout
指令,或者按下快速鍵Ctrl + d。
用SSH的SFTP進行檔案操作
SSH包含了SFTP(SSH File Transfer Protocol),可用來上傳本機的檔案或是下載遠端裝置上的檔案。
命令列方式
在命令列中使用SFTP的方式類似SSH,一開始也是要先與遠端裝置進行連線,指令如下:
連線到遠端裝置後,就可以使用SFTP提供的一些指令來做一些事了。常用的指令列表如下:
cd
:切換遠端裝置目前的工作目錄。ls
:查看遠端裝置目前工作目錄下的檔案與目錄。put
:傳送本機的檔案至遠端裝置目前的工作目錄中。get
:下載遠端裝置上的檔案至本機目前的工作目錄中。mkdir
:在遠端裝置上建立新目錄。rm
:刪除遠端裝置上的檔案。rmdir
:刪除遠端裝置上的目錄。chmod
:修改遠端裝置上檔案或是目錄的權限。rename
:重新命名遠端裝置上的檔案或是目錄。exit
:離開sftp。
FileZilla方式
FileZilla是一款FTP和SFTP連線的軟體,可以參考這篇文章來安裝。
使用FileZilla來連SFTP,需要將站台設定為SFTP協定,連接埠如有需要可以填寫,留空的話預設使用22
。
登入成功後,使用方式和一般的FTP一樣。