SSH

March 22, 2017

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連線偵錯

$ ssh -v -l lab702 192.168.222.132

解決主機檢查密鑰失敗的問題

$ 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 登入

ref

SSH

SSH