OpenSSH Server SSHD

SSH 通訊協定有 Version1 和 Version2,即 V1 和 V2,V1只支援 RSA 加密,而 V2 支援 RSA 和 DSA 加密方式。

SSHD 有兩對金鑰:

Host Key:放在 /etc/ssh/ 之下,預設長度為 1024 bits,可設定加長至 2048 bits。

Server Key:儲存在 RAM 之中,預設長度為 768 bits,可設定加長至 1024 bits,Server Key 每小時會更新一次。

整個 SSH 通訊加密流程如下:

1. [SSH Client] ---(要求建立 SSH 連線)---> [SSH Server]

2. [SSH Client] <---(傳遞 HostKey 和 ServerKey 的公開金鑰)--- [SSH Server]

3. [SSH Client] ---(產生 SessionKey,再用 HostKey 和 ServerKey 加密:ServerKey(HostKey(SessionKey)),傳至 Server)---> [SSH Server]

4. [SSH Server]:用 HostKey 及 ServerKey 的私密金鑰,將 SessionKey 解密出來。ServerKey.Pri(ServerKey(HostKey(SessionKey))) --> HostKey.Pri(HostKey(SessionKey)) --> SessionKey。

5. [SSH Client] <---(使用 Session Key 加密進行連線)---> [SSH Server]

6. Session Key 每隔固定時間或傳遞了固定大小之後,亦會更換一次,再用同樣的方式傳遞給 SSH Server。

=========================================

SSH Server 設定

SSHD 的 Host Key 放在 /etc/ssh 底下:

# pwd
/etc/ssh
# ls -al
總計 228
drwxr-xr-x   2 root root   4096  1月 17 03:21 .
drwxr-xr-x 114 root root  12288  3月 20 21:58 ..
-rw——-   1 root root 132839  1月 12  2007 moduli      (儲存 DH-GEX Diffie-Hellman Group EXchange 密鑰的檔案)
-rw-r–r–   1 root root   1827  1月 12  2007 ssh_config      (ssh client 的設定檔)
-rw——-   1 root root   3345  1月 17 03:21 sshd_config      (sshd 的設定檔)
-rw——-   1 root root    672  1月 12 08:35 ssh_host_dsa_key      (SSH V2 的 RSA 私密金鑰)
-rw-r–r–   1 root root    590  1月 12 08:35 ssh_host_dsa_key.pub      (SSH V2 的 RSA 以開金鑰)
-rw——-   1 root root    963  1月 12 08:35 ssh_host_key      (SSH V1 的私密金鑰,RSA 加密)
-rw-r–r–   1 root root    627  1月 12 08:35 ssh_host_key.pub      (SSH V1 的公開金鑰,RSA 加密)
-rw——-   1 root root   1675  1月 12 08:35 ssh_host_rsa_key      (SSH V2 的 DSA 私密金鑰)
-rw-r–r–   1 root root    382  1月 12 08:35 ssh_host_rsa_key.pub      (SSH V2 的 DSA 公開金鑰)

SSHD 的設定檔文件在 /etc/ssh/sshd_config:

#Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0      (有多張網卡或多個 IP 者,可在這裡設定開啟服務的 IP,預設是全開)

ListenAddress 192.168.0.1:22      (可以設定不同 IP ,監聽不同 Port)
ListenAddress 192.168.1.1:23

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h      (Server Key 多久時間更新一次)
#ServerKeyBits 768      (Server Key 的長度)

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:
LoginGraceTime 1m
PermitRootLogin without-password (要不要讓 root 登入,讓 root 登入是危險的,可以用 PermitRootLogin no 來拒絕 root 登入,可是遠端管理或備份時又需要使用 root 的身份登入,這時可用 without-password 選項,讓 root 可以用金鑰登入,可是不能用一般的帳號密碼登入)

(可以使用 PermitRootLogin forced-commands-only,這樣只能使用遠端執行命令,而不能登入,但只能用在 Public Key Authorication)

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys      (authorized_keys 的檔名在這邊改)

#PasswordAuthentication yes
#PermitEmptyPasswords no      (無密碼的帳號要不要允許登入)

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes

X11Forwarding yes      (傳送 X11,讓 ssh -X 能夠使用)
AllowTcpForwarding yes      (允許建立 tunnel)
#Compression delayed
UseDNS no      (不要使用 DNS 反解)
Subsystem       sftp    /usr/libexec/openssh/sftp-server      (沒有這一行就不能使用 sftp 了)

SSHD 的啟動文件在 /etc/init.d/sshd 中。