ssh, putty 使用 public key 不用密碼登入,subversion + ssh

ssh 除了可以讓人像使用 telnet 一樣透過遠端登入電腦之外,還有一些特別的功能,像是不使用密碼登入,只靠 public private key 進行使用者認證:

* 首先在產linux 上用ssh-keygen -t rsa產生 public/private key,(使用 RSA 演算法)
* 把 private 傳到 windows 上,用 putty 作者網頁上的 puttygen 轉換 private key 為 putty 可讀的格式(用 save private key)。
* 在 TortoiseSVN 的 settings -> network -> SSH client 中填上:C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -i C:\your_private_rsa.ppk

因為 putty 使用的是自己的 private key 格式,所以要經過 puttygen 轉換才能使用。(TortoisePlink.exe 直接用滑鼠點二下,有說明視窗窗出現)

另外,還可以設定在自動登入 ssh 之後,直接執行一個指令,然後馬上登出。自動登入的機制一樣是使用 public/private key 的認證功能。

為什麼 產生出來的 private key 可以知道是和哪一個 public key 配對? 因為 private key 的檔案中,有包含配對的 public key ,所以在 ssh 進行登入程序的時候,client 會使用 private key 送一個使用者的 digital signature ,同時也送出一份 public key, server 的檢查的過程中,先檢查送過來的 public key 是否在可接受的 public key 中,(~/.ssh/authorized_keys 檔案中) 若否,則認證失敗,若是,則再檢查 signature 是否 valid ,若是,則通過認證 [3]。所以 server 可以在存有許多 public key 的 authorized_keys 檔案中知道是要找哪一組 public key 來使用。

使用 ssh-keygen 產生出來的 public/private keys 預設是放在 ~/.ssh/id_rsa.pub ~/.ssh/id_rsa (RSA 是演算法名,若用 DSA 則是 id_dsa 檔)

如果是在 linux 上,想要透過 ssh 不用輸入密碼,直接登入另一台電腦時,除了和上面所說的一樣,先產生出 public/private key,
並把 public key 放到想登入的機器家目錄中的 ~/.ssh/authorized_keys 中,client 端(自己目前所用的機器) ~/.ssh/id_rsa 則是放 private key
這樣就完成整個設定程序了

若是 client 端設定在 windows 而且使用 putty ,那只要直接使用 puttygen.exe 產生一組 public/private key pair, 把 private key 留在自己身邊(非對稱加密,private key 永遠是使用者自己帶在身上才安全), 在 server 自己的家目錄建一個 ~/.ssh/authorized_keys 檔案,把 public key 加入這個檔案中,並且為了安全,把這個檔的權限改為 600 , 再來就可以在 putty 設定讀取 private key 並且使用 password-less login

如果照上面的設定,而沒有如預期的運作,可能是 .ssh 目錄的權限沒有設定好造成的,要把權限修改為只有 owner 可以寫入的型態,另外,可以看一下系統中的 log ,也有助於找出哪裡設定錯誤。

參考資料:
[1].鳥哥的私房菜 Telnet and SSH server
[2].OpenSSH 網站
[3].SSH Authentication protocol
[4].How to Setup Password-less SSH Using Public – Private Keys
[5].[精华] Putty之public key ssh认证入门

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

你正使用 WordPress.com 帳號留言。 登出 / 變更 )

Twitter picture

你正使用 Twitter 帳號留言。 登出 / 變更 )

Facebook照片

你正使用 Facebook 帳號留言。 登出 / 變更 )

Google+ photo

你正使用 Google+ 帳號留言。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: