一般我們登入伺服器可以透過密碼進行登入,但是安全性的程度會比較沒有像SSH key那個安全,而且如果使用SSH key登入的話可以就不用每次手動輸入密碼,會方便許多,本篇教如何產生SSH key並且設定到伺服器上。
產生ssh key
首先輸入指令來產生 key
ssh-keygen
接著會詢問產生的ssh key要存放的位置
這時選擇要放的位置 預設為 /home/username/.ssh/id_rsa
如果不同伺服器會使用不同的key 則改變key的位置 (例如: /home/username/.ssh/id_rsa_ubuntu)
Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa):
接著會詢問要不要設定 passphrase,空白表示不設定
如果有設定passphrase,則每次用此key登入都需要輸入這個密碼 (安全性較高,可依個人需求設定)
Enter passphrase (empty for no passphrase): Enter same passphrase again:
接下來就會產生key到指定位置了
會有兩個key 一個有副檔名 .pub 為公鑰,而沒有副檔名的為私鑰
注意私鑰要保存好 絕對不能被竊取
Your identification has been saved in /home/username/.ssh/id_rsa_ubuntu. Your public key has been saved in /home/username/.ssh/id_rsa_ubuntu.pub. The key fingerprint is: SHA256:nNnQckFbuegUs4WD3y+7YqwCaDhfUlX2J17jxF7X3FU xenby@demo.com The key's randomart image is: +---[RSA 2048]----+ | .o++ .. E| | . *o+. ..| | . = *+ o ..| | . . Ooo+ * +| | . o Soo..B o.| |o + o . ..o | | + o . . . . | | . . + o | | ..o .o. | +----[SHA256]-----+
將公鑰設定放到伺服器上
有幾個方法可以把公鑰放到伺服器上,可以依據自己的使用狀況選擇
方法一、透過 ssh-copy-id
輸入指令以下指令
(將 username 與 server_host 換成自己的帳號與伺服器IP或host,而 your_key_path 換成自己的剛剛產生的key位置)
ssh-copy-id -i your_key_path username@server_host
成功後會顯示如下的訊息
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@server_host'" and check to make sure that only the key(s) you wanted were added.
方法二、直接將公鑰資料複製到 server 的 ~/.ssh/authorized_keys 中
先記下剛剛產生的公鑰資料
cat ~/.ssh/ubuntu_id_rsa.pub
會顯示公鑰資料,把它複製下來
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOZypQABxuCschD6jjRZFr1iPCqzrpo40Mzw6vXRfPlFwF9QJhLm3YYdtnpVekj9e1Y4kUduM924PAiLgfRw/6AJ1ueDR1BEDLeH8gAV1Cc90oPUvitYItPN8F1HrqiT37GZ3wKWKIFw70NL8Hs6BL61F+LgFmfXQDRyp7IIcyK9rmk24yqLSue/DiSbA0y85E4uvV7ekZD2NXeA9AnKHFe/cy614SQv2NNQCwi2ZRuP25du9xGVv0QvCwrZ4ANJky9V7xlO4dFFHqcNXUPQUm8EeRxySVCdTbenqiEQ3flLVBCCCxvnc7ApHlLNc/CZSpcft96xfGB3qOCrRvjb2/ xenby@demo.com
連線到伺服器上後
將公鑰資料複製到 ~/.ssh/authorized_keys 中 (下面指令的 public_key_string 要換成剛剛複製的公鑰資料)
如果該檔案已經存在就將資料新增到新的一行,如果不在就自己創建一個
echo "public_key_string" >> ~/.ssh/authorized_keys
假如剛剛自己是建立一個新的檔案,因為安全性的關係要改變 permission
輸入以下兩個指令 (username需要換成自己的帳號)
chmod -R go= ~/.ssh chown -R username:username ~/.ssh
測試是否成功
試試看是否能正常登入使用key登入
ssh username@server_host
如果能夠不需要輸入密碼 就表示已經成功了
前面步驟一直都設定正確,但每次SSH都還是得輸入密碼,直到找到這篇文章才發現原來是新建檔案authorized keys的權限問題,改了就好了!解決我困擾已久的問題!