2009年5月21日 星期四

PUTTY、 TortoiseSVN 不用輸入密碼

由於使用 TortoiseSVN 做文件版本的控管,但取出及寫入時,每次都要詢問密碼,而且常連問好幾次。它又無暫存的機制來簡化輸入密碼的功能,最後找到了它可以採用 ssh 的公、私鑰的方法來簡化登入的問題。

在伺服器中 ,會產生私鑰及公鑰兩個檔案

#ssh-keygen -t rsa

/home/user/.ssh/id_rsa
/home/user/.ssh/id_rsa.pub

把公鑰放入 authorized_keys
#cat id_rsa.pub >> authorized_keys

為了安全性,權限設為 600
#chmod 600 authorized_keys

在 windows client 端

取得 puttygen.exe 軟體,下載伺服器中的 id_rsa 。
這是 PUTTY 和 openssh 編碼方式不同,需要使用 puttygen.exe 做轉換成 putty 可以接受的格式。
Conversions → Import Key ,匯入 id_rsa 檔。
(在這兒可以輸入密碼來對私鑰做進一步的保護,但對 TortoiseSVN 還是會出現重複要求碼的情形,所以在這不再設密碼。)
按下 Save Private Key ,存成 C:\user.ppk

PUTTY 使用時,SSH --> AUTH 指定私鑰的檔案 (C:\user.ppk)
再使用 PUTTY 登入時就可以不使用密碼了。

TortoiseSVN -> 設定-->網路 --> ssh 用戶端
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -i C:\user.ppk
就無需再輸入密碼。

如果 SSH port 改變,那麼這部份需要做改變,例(1234 port):
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -P 1234 -i C:\user.ppk

注意:私鑰檔一定要保存好,不可被取得,不然就毁了!

參考資料:
http://forum.icst.org.tw/phpBB2/viewtopic.php?p=23185&sid=53abacb0f55408629b5170032370336c&PHPSESSID=56201bb80a7f4851d00eec9bc2d442c3

(繼續)

---
http://forum.icst.org.tw/phpBB2/viewtopic.php?p=31000

1.修改 /etc/ssh/sshd_config
#在 sshd_config 裡,找到與下列相符的選項,就將選項前的 # 號拿掉:
Protocol 2
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin yes
#找到 ChallengeResponseAuthentication yes 的選項,改成 no ,如下:
#(選項解釋:密碼登入選項,一定要改成 no,這樣子沒有擁有私鑰的人就會無法登入了)
# Change to no to disable s/key passwords
#修改成 no 來停用 s/key 密碼
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
還有把 PasswordAuthentication yes
改成 PasswordAuthentication no
#以下為非必要選項
SyslogFacility AUTHPRIV(或 SyslogFacility AUTH)
LogLevel INFO

接下來就存檔離開
重新啟動 sshd 服務.
#service sshd restart

2.在 Server 端,使用 ssh-keygen 來建立 DSA Private Key 和 Public Key.
先檢查 /root 下有沒有 .ssh 的資料夾,如果有就略過建立資料夾的步驟,
在 /root 下建立資料夾 .ssh,
#mkdir .ssh
#cd .ssh
#ssh-keygen -b 2048 -t dsa
然後,輸入 Private Key(私鑰)檔名:id_dsa,和 Public Key(公鑰)檔名:id_dsa.pub
這個時候會問你 key passphrase,
(可以自由選擇輸入與否,即使現在不輸入也沒關係,
後面再用 puttygen.exe 轉換格式時再輸入,也是可以的,
但是不可為了省卻輸入密碼,而只用 KEY 就登入 LINUX 系統,
此舉很危險,萬一 Key 檔案被有心人士偷取,就糟糕了.>" authorized_keys

3.因為 Openssh 的私鑰格式和 putty 使用的格式截然不同,
所以需要由 puttygen.exe 轉換格式後才能使用,不然可能會有兩種錯誤的情況:
--------------------------------------------------------------
可能出現的幾種問題:
(a)、Server refused our key
公鑰和私鑰不匹配,或者沒有 authorized_keys 文件
(b)、Unable to use key file "id_dsa.ppk" (SSH2 private key)
私鑰檔案的格式不正確
--------------------------------------------------------------
3.1把 server 上的私鑰:id_dsa 拷貝到 PC 上
將 id_dsa 的內容顯示在螢幕上,再複製下來.
#cat id_dsa
把複製的內容貼到記事本裡存成 id_dsa_by_ssh-keygen.ppk
再來就是開啟用 puttygen.exe → Conversions → Import Key
匯入後,在 Key passphrase 和 Confirm passphrase 輸入保護私鑰的密碼後,
(不想打密碼的人,就保留成空白也可以,不過萬一私鑰掉了被撿到,那就慘了>" authorized_keys
但是要確認在 /home/[users]/.ssh/ 路徑和檔名有沒有錯誤。
[users]→表示為 user 的帳號名稱。

2把 server 上的私鑰:id_dsa 拷貝到 PC 上
將 id_dsa 的內容顯示在螢幕上,再複製下來.
#cat id_dsa
把複製的內容貼到記事本裡存成 id_dsa_by_ssh-keygen.ppk
(檔名命名方法沒有一定,但是為不讓自己搞不清楚,這樣子做最好)
再來就是開啟用 puttygen.exe → Conversions → Import Key
(匯入時,因為我們在用 ssh-keygen 產生公/私鑰時,就有用密碼了,所以在你使用 puttygen.exe,
做匯入的動作時,自然會要求你輸入密碼了)
匯入後,在 Key passphrase 和 Confirm passphrase 輸入保護私鑰的密碼後,
(不想打密碼的人,就保留成空白也可以,不過萬一私鑰掉了被撿到,那就慘了"),
然後,再從 File → Save Private Key 把私鑰另存新檔即可使用了。

[color=red]3.強烈建議:私鑰(Private Key)一定要用 Key Passphrase 來保護,
密碼(至少 8 位數以上,每三個月更換一次公/私鑰)千萬不要跟 root 的密碼一樣.

4.因為我是用 root 來替 splin 這個 user 建立公/私鑰,
所以我要把檔案權限和屬性稍微修改一下。
#chown -R splin.splin /home/splin/.ssh/
#chmod -R 755 /home/splin/.ssh/

5.Pietty/Putty 使用方法:
啟動 Pietty/Putty ,從 SSH → Auth 去指定私鑰的檔案路徑即可。


摘自:http://w3.sy3es.tnc.edu.tw/blogs/index.php/2006/03/08/puttya_tortoisesvn_ac_c_uefca_yam_ccf?blog=2

沒有留言:

wibiya widget