2008年7月13日 星期日

SSH 免密碼的做法

假設前提:
Server 部分為 linux.dmtsai.tw 這部 192.168.0.2 的主機,欲使用的 User 為 user1 這個帳號;
Client 部分為 test2.dmtsai.tw 這部 192.168.0.100 PC 的 user2 這個帳號, 他要用來登入 192.168.0.2 這部主機的 user1 這個帳號。

$user2@test2 ~]$ ssh-keygen -t rsa <==這個步驟在產生 Keys

Generating public/private rsa key pair. Enter file in which to save the key (/home/user2/.ssh/id_rsa): <==這裡按下Enter

Enter passphrase (empty for no passphrase): <==這裡按 Enter

Enter same passphrase again: <==再按一次 Enter

Your identification has been saved in /home/user2/.ssh/id_rsa. <==這是私鑰

Your public key has been saved in /home/user2/.ssh/id_rsa.pub. <==這是公鑰

# 注意: -t 指的是『使用何種密碼演算方式?』由於我們使用 RSA ,
# 所以直接輸入 -t rsa 即可建立兩支 Keys !
# 此外,建立的兩把 Keys 都放置在家目錄下的 .ssh 這個目錄中!
ls -al ~/.ssh
total 12
-rw------- 1 user2 user2 887 Nov 12 22:36 id_rsa
-rw-r--r-- 1 user2 user2 233 Nov 12 22:36 id_rsa.pub
-rw-r--r-- 1 user2 user2 222 Oct 31 11:20 known_hosts
PS. 家目錄的權限必需為755

請注意, 私鑰必需要放置在家目錄底下的 .ssh 裡面,~/.ssh/id_rsa
~/.ssh 目錄權限為700,私鑰的檔案權限為600

在 Server 端放置可以登入的公鑰:
既然我們要讓 test2 主機可以用 user2 這個帳號登入 linux.dmtsai.tw 這部主機的user1,那麼這部主機自然需要保有 user2 的 public key 囉!所以我們必需要將 Client 端建立的 id_rsa.pub 檔案給他拷貝到 linux.dmtsai.tw 裡頭的 user1 這個使用者的家目錄之下

較早期的作法
被登入的主機的某個帳號,他的公鑰放置的檔案名稱預設就是 authorized_keys
$user2@test2 ~]$ scp ~/.ssh/id_rsa.pub linux.dmtsai.tw:/home/user1/.

改登入linux.dmtsai.tw的user1 帳號
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

新的做法
直接在Client 主機中執行以下指令
ssh USERNAME@HOSTNAME 'mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys'  < ~/.ssh/id_rsa.pub


ssh-copy-id USERNAME@HOSTNAME
直接將Client 主機的Root 的金鑰送到指定的主機

若要指定使用的金耀
ssh-copy-id -i ~/.ssh/id_rsa.pub USERNAME@HOSTNAME
(參考文章 https://blog.gtwang.org/linux/linux-ssh-public-key-authentication/)

較早期的作法
authorized_keys 權限為600
請注意上面的機器!由於 authorized_keys 可以保存相當多的公鑰內容,因此, 可以使用>> 的方式來將 Client 端的公鑰新增到該檔案內

登入測試
user2@test2 ~]$ ssh user1@linux.dmtsai.tw
基本上應該是不會問你密碼了,如果還是會問,再檢查一下檔案的權限跟與路徑是否正確

請注意, user1 不能以 user2 登入 test2.linux.org

沒有留言: