SSH 的安裝與設定

SSH 的安裝與設定

前言

SSH(Secure Shell)是一個在應用層和傳輸層上的資料傳輸加密的協定。所以傳送出去的封包都是經過加密的,即使被擷取,也需要很大的功夫才能解開,比較安全。此外,SSH也是一個會壓縮的協定,因此可以節省頻寬、加速傳遞資料等。不只如此,SSH 不只可以達到 Telnet 的遠端連線功能,還可以提供類似FTP、但較安全的 sFTP 功能(FTP 也是明碼)....等,許多應用。

安裝SSH-Client

如果你只是想登入別的機器的 SSH 只需要安裝 openssh-client(ubuntu有默認安裝),如果要使本機開放SSH服務就需要安裝openssh-server。

查看當前的ubuntu是否安裝了ssh 服務。

  • $dpkg -l|grep ssh

更新系統套件

  • $sudo apt update -y

安裝 openssh-client

ubuntu 通常會默認安裝 openssh-client,若無則使用以下指令安裝:

  • $sudo apt install -y ssh  或是   $sudo apt install -y openssh-client

安裝 openssh-server 

若要讓其他電腦連線到你的 ubuntu 系統就必須安裝 openssh-server 服務,以下指令安裝:

  • $sudo apt install -y ssh  或是  $sudo apt install -y openssh-server

查看SSH有無被開啟

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

  • $dpkg -l | grep ssh   或是   
  • $netstat -a|grep ssh

手動開啟與關閉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
在Window 10,Command模式下,使用>ssh username@hostname ,一樣也能正常運作

如何產生SSH金鑰?

產生專屬於自己的SSH金鑰,讓SSH登入不必輸入帳號密碼,使用起來更方便!

在Linux系統下,每個使用者都可以擁有自己的SSH金鑰,金鑰將會以檔案的形式存放在家目錄 home/ 中的「.ssh」目錄下,常使用RSA加密演算法來生成金鑰,檔名預設為「id_rsa」。在產生自己的RSA SSH金鑰前,可以先到這個目錄下查看是否已經有此檔案存在,再決定是否要產生。

產生SSH金鑰可以直接在終端機下輸入以下指令:

  • $ssh-keygen
    • 產生金鑰時,終端機上會顯示下列問題。如果直接按Enter跳過,就是使用預設值。
    • Enter file in which to save the key:輸入金鑰儲存的檔名,預設應該會在家目錄中的「.ssh」目錄下,檔名是「id_rsa」。
    • Enter passphrase:金鑰的密碼,預設是沒有密碼的,有必要的話再設定。
    • Enter same passphrase again:再重複一次Enter passphrase的設定,確保設定無誤。

將SSH金鑰加入SSH伺服器

公開金鑰交給SSH伺服器最簡單的作法就是使用「ssh-copy-id」指令,直接將公鑰複製給連線的SSH伺服器。指令用法和「ssh」指令差不多,如下:

  • $ssh-copy-id username@hostname
    • username是遠端裝置的登入帳號,hostname是遠端裝置的網路位址(網址或是IP)。
    • 例如:ssh-copy-id magiclen@192.168.1.103

接著再輸入遠端裝置的帳號登入密碼,完成登入後,便可以將公鑰傳送給遠端的SSH伺服器來儲存。

之後再使用「ssh」指令登入該裝置的帳號的話,就不必再帳號登入輸入密碼了!

登出SSH

  • $exit

手機板SSH

SSH-Server

停用SSH伺服器的密碼驗證,只允許金鑰認證:

在 Linux 伺服器的部份,如果要提高安全性,可以在伺服器上的 /etc/ssh/sshd_config 中修改以下的設定,停用密碼認證的登入方式,只允許金鑰認證:

  • PasswordAuthentication no
  • PubkeyAuthentication yes
這樣可以避免網路上一些亂猜密碼的攻擊。不過使用這樣的方式要先留意自己的金鑰是否設定正確,確認可以不需要密碼登入之後才進行這樣的設定,否則停用密碼登入之後,如果沒有金鑰或是沒有將公開金鑰放在伺服器上,就會完全無法登入該 Linux 伺服器。最後記得重新啟動 sshd:
  • $/etc/init.d/sshd restart

SSH-Server for Windows

如果是要Windows安裝 SSH-Server,請參考 : SSH 遠端連線回家中的 Windows 電腦


參考資料

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

  • Linux,Remote-Control,Ubuntu,

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

網路設定必要參數IP、netmask(遮罩)、Gateway(閘道)、DNS

iptables的觀念與使用

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

查詢指令或設定 -Linux 線上手冊 - man

網路相關之指令