SSH
OpenSSH 是 1999 年基於免費的 SSH 1.2.12 版本開發的開源項目。 OpenSSH 實現的 SSH 功能包括服務端和客戶端,還有私鑰管理等。 SSH protocol 使用加密來保護客戶端和服務器之間的連接。所有用戶身份驗證、命令、輸出和文件傳輸都經過加密,以防止網絡中的攻擊。
配置檔案
/etc/sshd/sshd_config
可做加密選項、身份驗證選項、文件位置、日誌記錄和各種其他參數(port等)
Logging
SSH 服務器使用 syslog
系統進行日誌記錄。默認的日誌檔案放置 /var/log/auth.log
基本使用
$ ssh itachi@192.168.222.132
$ ssh -l itachi 192.168.222.132 -p 22
# -l 指定用戶名
# -p 指定 port
第一次登入某個終端時,SSH 客戶端會獲取設備的公鑰及其指紋訊息。
$ ssh -l lab702 192.168.222.132
The authenticity of host '192.168.222.132 (192.168.222.132)' can't be established.
ECDSA key fingerprint is SHA256:TmidBei2XVw7f2lqHuSrjfFHsFRz6riglpwY/tKXlXc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.222.132' (ECDSA) to the list of known hosts.
lab702@192.168.222.132's password:
輸入 yes
後,此訊息會儲存在本機 $HOMW/.ssh/known_hosts
檔案中。之後登入這台設備,SSH 會檢查登錄的設備和第一次登錄的設備是否一致。不一致會拒絕登錄。
SSH連線偵錯
- -v
$ ssh -v -l lab702 192.168.222.132
- LOG 檔案
- -d 通常是診斷連接問題時的最後手段。通常,在其輸出中可以清楚地看到身份驗證失敗的原因。
解決主機檢查密鑰失敗的問題
$ ssh-keygen -R 192.168.222.132 # -R 從 known_hosts 檔案中刪除屬於 hostname 的所有密鑰。
# Host 192.168.222.132 found: line 1
/home/cch/.ssh/known_hosts updated.
Original contents retained as /home/cch/.ssh/known_hosts.old
cch@DESKTOP-UC7DC96:~/.ssh$ ls
known_hosts known_hosts.old
SSH 安全配置
Disable root login
itachi@zabbix-mysql:~$ sudo vim /etc/ssh/sshd_config
32 #PermitRootLogin prohibit-password # 預設不能使用密碼登入,只能使用 ssh key 登入。
33 PermitRootLogin no
Disable password based login
使用金鑰登入
AuthenticationMethods publickey
PubkeyAuthentication yes
Disable Empty Passwords
PermitEmptyPasswords no
Change Port
itachi@zabbix-mysql:~$ sudo vim /etc/ssh/sshd_config
13 Port 22 # 預設 22 建議更改
Change login grace time
itachi@zabbix-mysql:~$ sudo vim /etc/ssh/sshd_config
31 #LoginGraceTime 2m # 預設是 120 秒後立即中斷遠端連線
32 LoginGraceTime 1m
Restrict the interface
itachi@zabbix-mysql:~$ sudo vim /etc/ssh/sshd_config
15 #ListenAddress 0.0.0.0 # 有多張網卡時必須在此設定
16 #ListenAddress ::
Disconnect SSH when no activity
itachi@zabbix-mysql:~$ sudo vim /etc/ssh/sshd_config
101 #ClientAliveInterval 0
102 #ClientAliveCountMax 3
103 ClientAliveInterval 600 # 中斷連線秒數,600 為秒
104 ClientAliveCountMax 5 # 允許超時次數,與上面相依。600*5 為允許超時的秒數
Allow only specific users or group
需自行添加自配置檔
itachi@zabbix-mysql:~$ sudo vim /etc/ssh/sshd_config
AllowUsers <user1> <user2> #只允許特定 User 登入
AllowGroup <group> <group> #只允許特定 group 登入
DenyGroup <group> <group> #只拒絕特定 group 登入