2013-09-16

「筆記」利用 keychain 免除每次用 SSH 需重複輸入密碼

由於哥哥的雙核電腦退役給我用(我的是單核的 K8),想在兩台電腦都裝上 Linux,一台當儲存資料的伺服器(單核),另一台當日常生活所用的作系統。不管是那個版本的 Linux,都可以用 SSH 維護跟管理。

其中在產生密鑰過程中,很多人都為了方便而沒有設簡短的密碼,這樣安全上會有很大的問題,別人拿到你的私鑰很輕易的就可以控制你遠端的電腦,這點千萬不可以輕乎。

這裡記錄 SSH 密鑰產生與應用 keychain 管理密鑰,文章尾端的連結有比較完整的介紹。

2013-09-06 補上Arch的相關設定與一些錯誤



安裝所需套件

Server 端(被控)安裝 openssh-server,Client 端(遙控)安裝 keychain。前者是讓別人透過 SSH 連入你的電腦,後者是用來管理 SSH 金鑰。

For Arch

sudo pacman -S openssh keychain

For Ubuntu

sudo aptitude install openssh-server keychain

產生 SSH 密鑰傳到遠端主機

1、產生密鑰一把為私鑰 id_dsa 一把為公鑰 id_dsa.pub,之後需要把公鑰傳到 Server 端。

For Arch

ssh-keygen -t dsa

For Ubuntu

ssh-keygen -d

產生密鑰第一個按(Enter),接著問你要不要設簡短密碼,需輸入兩次相同密碼,確認密碼是否正確。

2、把公鑰傳到 Server  端,第一次用會問你要連接嗎 yes,再來輸入使用者的密碼,不是簡短密碼哦。

ssh-copy-id -i ~/.ssh/id_dsa.pub xxx@xxx.xxx.xxx.xxx
xxx@xxx.xxx.xxx.xxx:Server端的帳號@IP

3、現在用 SSH 登入後出現 「Enter passphrase for key '/home/username/.ssh/id_dsa」,請輸入簡短密碼。
ssh xxx@xxx.xxx.xxx.xxx

keychain 免除每次重複輸入密碼
1、請在 ~/.bashrc 或 ~/.zshrc 尾端貼上程式碼,這是參考 c9s 所寫的使用 keychain 管理 ssh 金鑰

loadkeys() 
{
[ -z "$HOSTNAME" ] && HOSTNAME=`uname -n`
/usr/bin/keychain ~/.ssh/id_dsa
[[ -f $HOME/.keychain/$HOSTNAME-sh ]] && source $HOME/.keychain/$HOSTNAME-sh
}

2、立即讓程式碼產生作用,新開的終端可免除此步驟。
source ~/.bashrc

3、第一次或重新開機後都需要直行一次 loadkeys ,過程中如你有設簡短密碼請在Enter passphrase 出現時輸入你的簡短密碼>按Enter,無密碼直接按Enter
loadkeys
* keychain 2.7.1 ~ http://www.funtoo.org
* Inheriting ssh-agent (1426)
* Inheriting gpg-agent (1423)
* Adding 1 ssh key(s): /home/username/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa:
* ssh-add: Identities added: /home/username/.ssh/id_rsa

4、現在立即登入就不用密碼了

ssh xxx@xxx.xxx.xxx.xxx