活用金鑰:讓你無需密碼亦可直接存取 Linux SSH
最近筆者需要設計很多有關 Linux 系統自動化的工作,通過登入主機才可以執行,SSH 預設是需要驗證帳號和密碼才能使用。為了自動化與方便,因此想寫一個自動登入遠端主機執行命令的程式,最簡單也可以透過 Expect Shell 的方式來達成,但是以 Expect 腳本語言與密碼保護方式來進行登入的速度較為緩慢,還是透過正統的 SSH 登入方式比較恰當。
我們都知道 SSH 在連線的時候會進行 SSL 加密,其實也提供透過金鑰的方式來驗證身份,只要將產生出來的 Public Key 放置在伺服器上就可以不用輸入密碼直接連線,以下會介紹所使用的方法。
產生SSH登入金鑰
先切換至 Home Directory
cd ~
產生一組金鑰,畫面如下:
ssh-keygen -t dsa
產生的Key 會在 Home Directory 中的 .ssh 資料夾(id_dsa, id_dsa.pub),其中的 id_dsa.pub 就是我們要放置在遠端伺服器的 Key。
接著我們將id_dsa.pub傳送到我們想要自動登入的平台。
scp id_dsa.pub [email protected]:~
然後使用ssh方式連接至這個平台,透過以下命令建立authorized_keys檔案。
ssh [email protected]
cd ~
cat id_dsa.pub >> .ssh/authorized_keys
登出後重新登入,便可以跳過驗證程序,如下圖: