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

# telnet localhost 8888
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
220 mail2000-9.so-net.net.tw ESMTP Service(Mail2000 ESMTP Server V3.20S) ready Sun, 22 Mar 2009 21:30:17 +0800 (CST)      (已連線到 so-net)
HELO
250 mail2000-9.so-net.net.tw
QUIT
221 mail2000-9.so-net.net.tw
Connection closed by foreign host.

2. 由 SSHD 負責監聽特定埠,再送回 SSH Client 負責轉送到指定的主機:埠

# ssh localhost -R 8888:mail.so-net.net.tw:25 (由 SSHD 負責監聽 8888 埠,轉送回 SSH Client 再送到 mail.so-net.net.tw 的 25 埠)
root@localhost’s password:
Last login: Sun Mar 22 21:30:06 2009 from 127.0.0.1
# telnet localhost 8888
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
220 mail2000-9.so-net.net.tw ESMTP Service(Mail2000 ESMTP Server V3.20S) ready Sun, 22 Mar 2009 21:36:04 +0800 (CST)
HELO
250 mail2000-9.so-net.net.tw
QUIT
221 mail2000-9.so-net.net.tw
Connection closed by foreign host.

使用 SSHD 安全通道功能,要將 sshd_config 中的 AllowTcpForwarding 設為 yes、通過帳密驗證、且連線過程中 ssh 連線不可中斷。