用 ssh 連線到遠端 server 的時候,一般都要輸入帳號密碼來登入,但這會有幾點缺點
- 輸入帳號密碼的同時,也會增加帳密被竊取的可能
- 當登入的頻率很高的時候,或是有很多台機器要登入的時候,就會覺得相當煩!!
因此可以透過公開金鑰(Public Key)和私密金鑰(Private Key)對應的方式,去做登入,這樣以後就不用輸入密碼拉~
Step 1. 新增權限沒那麼高的使用者
1 2 3 |
|
首先會先連到遠端 server 開新的帳號 (因為root帳號權限很大,我們不希望每個人都用到root權限,而且root帳號是固定的,不夠安全)
先開個新帳號 deploy,就會產生 home/deploy
--disabled-password
讓 deploy 無法用密碼登入su
就是切換身份
Step 2. 新增 key (也可以參考下面的 快速複製 SSH public key 到遠端主機)
-t rsa
表示是使用 RSA 加密法 來產生金鑰
1 2 3 4 5 |
|
再(本機)輸入 ssh-keygen -t rsa
產生出 id_rsa(private key)
和 id_rsa.pub (public key)
接著複製(本機)的 ~/.ssh/id_rsa.pub
到 /home/deploy/.ssh/authorized_keys
(自己新增 .ssh 資料夾和 authorized_keys 檔案)
之後連線, 就會用(本機)的
id_rsa(private key)
與遠端電腦的authorized_keys(public key)
做認證
- 可以先在 (本機)
cat ~/.ssh/id_rsa.pub
將 ‘所有’ 字串複製 - 再到 (遠端)新增
vi /home/deploy/.ssh/authorized_keys
,將字串貼上去後:wq
離開
Step 3.
1 2 |
|
更改權限,讓 group 和 other 可以讀
chmod
改變權限
chown
改變檔案擁有者
1 2 3 4 |
|
接著就可以在 (本機) 直接 ssh deploy@123.123.12.1 就連進去囉!!
1 2 3 4 5 6 7 8 9 10 11 12 |
|
SSH config 設定檔
新增檔案 config
到 ~/.ssh/
1 2 3 4 5 6 7 8 9 10 11 12 |
|
接著就可以直接 ssh [自訂名稱]
就會登入 deploy 的帳號了。
快速複製 SSH public key 到遠端主機
方法1
1
|
|
方法2
1
|
|
測試 SSH 是否有連線成功
1
|
|
ssh-add
ssh-add命令是把專用密鑰添加到ssh-agent的高速緩存中。該命令位置在 /usr/bin/ssh-add
- 把專用密鑰新增到 ssh-agent 的高速緩存中:
ssh-add ~/.ssh/id_rsa (-K 加到 keychain)
- 從ssh-agent中刪除密鑰:
ssh-add -d ~/.ssh/id_xxx.pub
查看ssh-agent中的密鑰:
ssh-add -l
- ssh-agent命令
- Mac 上 ssh-add 永久將私鑰新增到 Keychain
SSH agent forwarding
保持 SSH 連接
本地測試
若是要本地自行測試的話,可以到 /etc/hosts
去設定網址對應 ip 位置,這樣之後連該網址就會連線到指定的 ip
1
|
|
只網頁連線到 test.com
就會連到 ip 111.111.111.111
的主機上
參考網站: