OpenSSH端口转发

在研究这个.
OpenSSH2 提供强大的端口转发功能

ssh -L:1025:example.com:1025 sshhost
把本地1025端口通过SSHhost连接到example.com的1025端口.等于是打了个洞转发特定流量.这样连接本地1025端口时就等于连接example.com1025端口.这里example.com如果是”localhost”指的是SSH服务器

ssh -D 1025 sshhost
这就是通常用的Socks5代理功能,在本地1025端口监听并把所有流量通过SSH转发

ssh -R 1025 :example.com:1025 sshhost
把SSHhost的1025端口转发到example.com的1025端口 .假如是下面代码:

ssh -R 1025 :localhost:1025 sshhost
就是把sshhost的1025端口转发到本地1025端口!,这意味着连接到SSHhost的1025端口等于连接到本地1025端口!.可以用这个做内网端口映射之类.

-L -R 附加 -g 参数后表示允许任何其他主机连接到转发端口.
打开本地或远程机器上1024以下端口需要root权限.

今天做了个实验.
本地配置好IIS在80端口,用
ssh -R5555:localhost:80 silk.dreamhost.com
连接到Dreamhost SSH

然后在浏览器输入 http://silk.dreamhost.com:5555
没反应.汗

不知道那里出了问题,查资料,有人说:

ssh 服务端需要做点小小的设置:
vi /etc/ssh/sshd.config
加入 GatewayPorts yes
然后重启 sshd 服务: /etc /init.d/ssh restart 或 /etc/init.d/sshd restart
(解释:
不加,默认会把监听端口绑定在 localhost 或 lo(127.0.0.1),这样除了 ssh自身别人是没法访问监听端口的。
加入 GatewayPorts yes,把监听端口绑定到 0.0.0.0 ,这样外部的所有机器都能访问到这个监听端口。
主要是考虑安全性问题,默认情况,只允许本地访问。)

如果这样,那我直接在SSH上实验: lynx http://127.0.0.1:5555
还是没有反应,汗

在研究中

先看看Dreamhost SSH配置 /ect/ssh/sshd_config (应该是这个)

# Package generated configuration file
# See the sshd(8) manpage for defails

# What ports, IPs and protocols we listen for
Port 22
# Uncomment the next entry to accept IPv6 traffic.
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# 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 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel VERBOSE

# Authentication:
LoginGraceTime 600
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

# rhosts authentication should not be used
# Don’t read the user’s ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don’t trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Uncomment to disable s/key passwords
#ChallengeResponseAuthentication no

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes

# Use PAM authentication via keyboard-interactive so PAM modules can
# properly interface with the user

# To change Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#AFSTokenPassing no
#KerberosTicketCleanup no

# Kerberos TGT Passing does only work with the AFS kaserver
#KerberosTgtPassing yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
#PrintLastLog no
KeepAlive yes
#UseLogin no

MaxStartups 40
#Banner /etc/issue.net
#ReverseMappingCheck yes

Subsystem sftp /usr/lib/sftp-server

UsePrivilegeSeparation no

这个配置似乎并没有限制端口转发,
不过偶惊讶的发现 PermitRootLogin 设定为yes
这个有点…

最后,在Dreamhost论坛找到了解答

If your account is a shared hosting account, you won’t be able to port forward from a DreamHost server to your local machine.

也就是说,Dreamhost上 SSH -R 转发不可用
那就没办法了.

不然的话,用这个做动态域名解析也很不错,

而-D -L 这转发,经过测试,应该没有问题

0 Responses to “OpenSSH端口转发”


Comments are currently closed.