Linux SSH 不用密碼驗證直接登入主機


ssh_linux_ubuntu

最近要設計很多 Linux 系統的自動化工作,都需要登入主機才可以執行,SSH 預設是需要驗證帳號密碼才能使用。為了自動化與方便,因此想寫個自動登入遠端主機執行命令的程式,最簡單也可以透過 expect Shell 的方式來達成,但是 expect 腳本語言與密碼的保護方式實在太 low,還是透過比較正統的 SSH 登入方式比較恰當。

我們都知道 SSH 在連線的時候會進行 SSL 加密,其實也提供了透過金鑰的方式驗證身份,只要將產生 Public Key 放到 Server 上就可以不輸入密碼直接連線囉,先來介紹一下使用的方法。

產生 SSH 登入金鑰

先切換到自己的家目錄

cd ~

產生一組金鑰,畫面如下:

ssh-keygen -t dsa

ssh-dsa-key

產生的 Key 會在家目錄中的 .ssh 資料夾中 (id_dsa, id_dsa.pub),其中的 id_dsa.pub 就是我們要放到遠端 Server 的 Key,如下:

ssh-dsa-login

接著我們將 id_dsa.pub 傳到我們想要自動登入的站台,如下:

scp id_dsa.pub sj@your-server.com:~

然後先 ssh 到這個站台,透過以下命令建立 authorized_keys 檔案

ssh sj@your-server.com

cd ~

cat id_dsa.pub >> .ssh/authorized_keys

ssl-put-key

登出後重新登入,就可以跳過驗證程序囉,如下圖:

ssh-login

Facebook 留言

廣告

樂樂童鞋