使用SSH Key 登入遠端主機時不需要輸入密碼

使用SSH Key 登入遠端主機時不需要輸入密碼

隨著雲端主機或者是Container的普及,一個工程師可能會同時管理很多虛擬機或Container。常遇到忘記遠端主機密碼,或者是每次要登入就要一直輸入密碼的痛點,利用 ssh key 登入的方式,登入驗證是採用本機 ssh key進行驗證,少去了打密碼的行為,就可以大大減少忘記密碼的問題。接下來就一步一步的操作給各位看,如何能夠用 ssh key來登入遠端主機。 

想解決的問題與優點

  1. 避免忘記遠端帳號的密碼,而且使用 ssh key 不會輸入密碼比較安全
  2. 對於會撰寫 shell script 的人,由於不用處理與遠端主機輸入密碼的互動,有利於撰寫、執行腳本

本機建立 ssh key

使用 ssh-keygen 指令來產生 ssh key

				
					# 通常我們會把 ssh key 產生在本機的家目錄下
cd ~/.ssh

# 利用 ssh-keygen 指令產生 ssh key 並且用 -f 來指定檔案名稱
ssh-keygen -f sshkey-demo
				
			

 

產生的過程中,系統會問是否要輸入 passphrase,意思是使用這把ssh key時需不需要輸入密碼,通常我們會直接使用 empty 就是按下 enter鍵,連續按兩次。

建立 ssh key

 

透過 ls 發現,這個指令一定會產生兩個檔案,一個是 私鑰(private key) 這裡是 sshkey-demo這個檔案,另一個是公鑰(public key) 這裡是 sshkey-demo.pub

顯示目前產生的 ssh key

將本機的ssh key 複製到遠端主機

將剛剛產生的 sshkey-demo 的公鑰利用指令傳到遠端主機

				
					
# 指令是  ssh-copy-id -i {指定檔案} {登入的帳號}@{遠端的主機IP or domain}

ssh-copy-id -i ~/.ssh/sshkey-demo parallels@10.211.55.7
				
			

 

如果是第一次連到遠端主機,系統會要你確認是否要連到遠端主機,請輸入 yes。最後輸入該主機的登入密碼,這樣就完成了

複製 ssh key到遠端主機

利用 ssh key 登入遠端主機

往後要登入該遠端主機都帶著 sshkey-demo 這把公鑰就不用再輸入密碼了

登入遠端主機

查看遠端主機做了什麼事情

ssh-copy-id 到底對遠端主機做什麼事情呢?首先我們先登入遠端主機,並且利用 ls 指令 來看 ~/.ssh 這個目錄底下,我們發現多了一個 authorized_keys 的檔案

				
					ls ~/.ssh
cat ~/.ssh/authorized_keys
				
			
查看遠端主機的 ssh目錄

利用 cat 指令來看這個 authorized_keys 的內容,可以發現這個其實是我們在本機利用 ssh-keygen 產生的兩個檔案的公鑰。因此我們知道利用 ssh-copy-id就是把本機的公鑰複製到遠端主機存留。

顯示本機放到遠端的金鑰

結語

利用 ssh key的方式來登入遠端主機,安全性會比每一次登入都要輸入密碼還要來的高上許多喔!

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料