用 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 的主機上
參考網站: