製作不用密碼可立即登入的 ssh 用戶

  • 1. 客戶端建立兩把鑰匙:

建立的方法很簡單,在 clientlinux.centos.vbird 這部主機上面以 vbirdtsai 的身份來建立兩把鑰匙即可。 不過,需要注意的是,我們有多種密碼算法,如果不指定特殊的算法,則默認以 RSA 算法來處理:

vbirdtsai@clientlinux ~]$ ssh-keygen [-t rsa|dsa] <==可選 rsa 或 dsa
[vbirdtsai@clientlinux ~]$ ssh-keygen  
<==用預設的方法建立密鑰Generating public/private rsa key pair.
Enter file in which to save the key (/home/vbirdtsai/.ssh/id_rsa): <
==按 enterCreated directory '/home/vbirdtsai/.ssh'. 
<==此目錄若不存在則會主動建立Enter passphrase (empty for no passphrase): <==按 Enter 
不給密碼Enter same passphrase again: 
<==再輸入一次 Enter 吧!Your identification has been saved in /home/vbirdtsai/.ssh/id_rsa. <
==私鑰檔Your public key has been saved in /home/vbirdtsai/.ssh/id_rsa.pub. 
<==公鑰檔The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 [email protected]

[vbirdtsai@clientlinux ~]$ ls -ld ~/.ssh; ls -l ~/.sshdrwx------. 2 vbirdtsai vbirdtsai 4096 2011-07-25 12:58 /home/vbirdtsai/.ssh-rw-------. 1 vbirdtsai vbirdtsai 1675 2011-07-25 12:58 id_rsa      <==私鑰檔-rw-r--r--. 1 vbirdtsai vbirdtsai  416 2011-07-25 12:58 id_rsa.pub  <==公鑰檔

請注意上面喔,我的身份是 vbirdtsai ,所以當我執行 ssh-keygen 時,纔會在我的家目錄底下的 .ssh/ 這個目錄裏面產生所需要的兩把 Keys ,分別是私鑰 (id_rsa) 與公鑰 (id_rsa.pub)。 ~/.ssh/ 目錄必須要是 700 的權限才行!另外一個要特別注意的就是那個 id_rsa 的檔案權限啦!他必須要是 -rw------- 且屬於 vbirdtsai 自己才行!否則在未來密鑰比對的過程當中,可能會被判定爲危險而無法成功的以公私鑰成對檔案的機制來達成聯機喔。 其實,建立私鑰後預設的權限與文件名放置位置都是正確的,你只要檢查過沒問題即可。

  • 2. 將公鑰檔案數據上傳到服務器上:

因爲我們要登入 www.centos.vbird 是以 dmtsai 的身份,因此我們就得要將上個步驟建立的公鑰 (id_rsa.pub) 上傳到服務器上的 dmtsai 用戶才行。那如何上傳呢?最簡單的方法當然就是使用 scp 嘛!

[vbirdtsai@clientlinux ~]$ scp ~/.ssh/id_rsa.pub [email protected]:~# 上傳到 dmtsai 的家目錄底下即可。
  • 3. 將公鑰放置服務器端的正確目錄與文件名:

還記得 sshd_config 裏面談到的 AuthorizedKeysFile 這個設定值吧?該設定值就是在指定公鑰數據應該要放置的文件名囉!所以,我們必須要到服務器端的 dmtsai 這個用戶身份下, 將剛剛上傳的 id_rsa.pub 數據附加到 authorized_keys 這個檔案內才行。作法有點像這樣:

# 1. 建立 ~/.ssh 檔案,注意權限需要爲 700 喔![dmtsai@www ~]$ ls -ld .sshls: .ssh: 沒有此一檔案或目錄# 由於可能是新建的用戶,因此這個目錄不存在。不存在才作底下建立目錄的行爲[dmtsai@www ~]$ mkdir .ssh; chmod 700 .ssh[dmtsai@www ~]$ ls -ld .sshdrwx------. 2 dmtsai dmtsai 4096 Jul 25 13:06 .ssh# 權限設定中,務必是 700 且屬於使用者本人的賬號與羣組才行!# 2. 將公鑰檔案內的數據使用 cat 轉存到 authorized_keys 內[dmtsai@www ~]$ ls -l *pub-rw-r--r--. 1 dmtsai dmtsai 416 Jul 25 13:05 id_rsa.pub <==確實有存在[dmtsai@www ~]$ cat id_rsa.pub >> .ssh/authorized_keys[dmtsai@www ~]$ chmod 644 .ssh/authorized_keys[dmtsai@www ~]$ ls -l .ssh-rw-r--r--. 1 dmtsai dmtsai 416 Jul 25 13:07 authorized_keys# 這個檔案的權限設定中,就得要是 644 纔可以!不可以搞混了!

這樣就搞定密鑰系統囉!以後你從 clientlinux.centos.vbird 的 vbirdtsai 登入到 www.centos.vbird 的 dmtsai 用戶時, 就不需要任何的密碼囉!舉例來說,你可以這樣測試看看囉:

  • Client 必須製作出 Public & Private 這兩把 keys,且 Private 需放到 ~/.ssh/ 內;

  • Server 必須要有 Public Key ,且放置到用戶家目錄下的 ~/.ssh/authorized_keys,同時目錄的權限 (.ssh/) 必須是 700 而檔案權限則必須爲 644 ,同時檔案的擁有者與羣組都必須與該賬號吻合才行。

未來,當你還想要登入其他的主機時,只要將你的 public key (就是 id_rsa.pub 這個檔案) 給他 copy 到其他主機上面去,並且新增到某賬號的 ~/.ssh/authorized_keys 這個檔案中!哈哈!成功!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章