每日彙整: 2009/03/22

SSH Port Forwarding 安全連線通道

使用 SSH 及 SSHD 可以建立安全連線通道,做法有兩種:

.ssh user@SSHDServer -L SSHClientPort:RemoteHost:RemotePort

(我本身會監聽 SSHClientPort,然後將它轉送到 SSHDServer,再由 SSHDServer 將封包送到 RemoteHost 的 RemotePort)

.ssh user@SSHDServer -R SSHDServerPort:RemoteHost:RemotePort

(你,SSHDServer 要負責監聽 SSHDServerPort 這個埠,然後將它轉送給我,我再將它送到 RemoteHost 的 RemotePort)

1. 由 SSH Client 本身監聽特定埠,由 SSHD 負責轉送到指定的主機:埠

# ssh localhost -L 8888:mail.so-net.net.tw:25 (由 ssh client 監聽 8888 埠,再由 sshd 轉送到 mail.so-net.net.tw 的 25 埠)
root@localhost’s password:
Last login: Sun Mar 22 20:55:28 2009 from 127.0.0.1

閱讀全文

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。

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

閱讀全文