9.1 Accessing the Remote Command Line with SSH
9.1.1 SSH Host Keys
server 會將 public key copy 送到 client 端,有兩個功能:
- 用來加密 ssh connection 用
- 用來驗證 server
server public key 會存在於 client 端的
~/.ssh/known_hosts
檔案中server 端會把 key pair 儲存在
/etc/ssh/ssh_host_key*
目錄下當 client 透過 ssh 連到 server 時,會把 server 的 public 儲存在 ~/.ssh/known_hosts 內,且每次連線都會檢查,若發現內容不會就會警告且中斷連線!
9.2 Conguring SSH Key-based Authentication
ssh-copy-id
:上傳 ~/.ssh/id_rsa.pub 到 remote server 的 ~user/.ssh/authorized_keys 檔案中:
1 | # 將指定的 public key 加入到 remote server 的 student 帳號下 |
若沒有使用
-i
指定 public key 位置,則就預設為~/.ssh/id_rsa.pub
若要使用 key-based 認證但又希望在 private key 上加密碼,並達成 password-less 的效果時:
1 | # 產生一個新的 ssh agent 並將 private key 驗證加入 |
9.3 Customize SSH Service Configuration
修改 /etc/ssh/sshd_config
中,調整使用者登入方式:
PermitRootLogin no
:禁止 root 使用 ssh 登入PermitRootLogin without-password
:root 只能透過 key-based 的方式登入PasswordAuthentication no
:關閉密碼登入功能(只能透過 key-based 的方式登入)
要重新 reload sshd.service 讓設定變更生效 (
sudo systemctl restart sshd.service
)