使用公私鑰進行SSH連線 | Linux

Secure Shell(SSH) 是一種安全的協定,它通常用於在本地和遠程 Linux 系統之間建立安全的連接,並允許用戶在遠程主機上執行命令,傳輸檔案,或建立安全的通道。在本篇文章中,我們將深入探討 SSH 中的一個重要功能 - 利用公私鑰對的來連線遠端主機。

一般SSH帳號密碼連線方式

在Linux 系統上如果初次進行遠端連線的話,我們大多是使用帳號密碼來連線,指令為:

ssh user@remote_host

第一次可能會看到

The authenticity of host 'x.x.x.x (x.x.x.x)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

我們輸入 yes 後可以看到

Warning: Permanently added 'x.x.x.x' to the list of known hosts.
Connection closed by x.x.x.x port 22

接著我們輸入密碼,就可以連線成功了

使用公私鑰對的來連線遠端 Linux 主機

在實務上,我們可以會管理多台的Linux 的主機,而且一台Linux 主機又可以有多組帳號密碼
因此我們大多會使用公私鑰對來進行 SSH連線
注意:生成的公私鑰對請妥善保管,如果有外洩的疑慮,請更換新的公私鑰對,另外基於資安也請定期進行公私鑰對的更換

SSH 公私鑰對的生成

我們首先需要生成這對金鑰。這可以通過以下命令完成: 這個命令的含義是生成一對 RSA 類型的金鑰,並且該金鑰的位元數為 2048。這對金鑰的生成將生成一個私鑰(通常保存在 ~/.ssh/id_rsa 中)和一個相應的公鑰(保存在 ~/.ssh/id_rsa.pub 中)。

ssh-keygen -t rsa -b 2048

將公鑰複製到遠程主機

在我們可以使用公私鑰對進行 SSH 連接之前,我們需要將本地生成的公鑰複製到遠程主機上。這可以使用 ssh-copy-id 命令或手動將公鑰的內容添加到遠程主機的 ~/.ssh/authorized_keys 文件中。

ssh-copy-id user@remote_host

安全 SSH 連接

這個命令中的 -i 選項用於指定私鑰文件的路徑,user 是遠程主機上的使用者名稱,remote_host 是遠程主機的IP地址或主機名。 一旦完成了公私鑰對的生成和配置,我們就可以使用私鑰對遠程主機進行安全 SSH 連接。使用以下命令:

ssh -i ~/.ssh/id_rsa user@remote_host

使用公私鑰進行SSH連線的好處

SSH 公私鑰對提供了一種更安全和方便的連接方式,避免了密碼的使用。這是保障資料傳輸安全的一個重要步驟,同時提高了連接的方便性。希望這篇文章對你有所幫助!