Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482856
  • 博文数量: 127
  • 博客积分: 7010
  • 博客等级: 少将
  • 技术积分: 1972
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-01 12:42
文章分类

全部博文(127)

文章存档

2009年(33)

2008年(94)

我的朋友

分类: BSD

2008-03-05 10:34:29

SSH 隧道

  OpenSSH 能够创建隧道以便用加密的会话来封装其他协议。

  下面的命令告诉 为 telnet 创建一个隧道:

% ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com
%

  上述 ssh 命令使用了下面这些选项:

-2

强制 ssh 使用第2版的协议 (如果需要和较老的 SSH 一同工作请不要使用这个选项)。

-N

表示不使用命令行, 或者说只使用隧道。 如果省略, ssh 将同时初始化会话。

-f

强制 ssh 在后台执行。

-L

表示产生一条 本地端口:远程主机:远程端口 形式的隧道。

user@foo.example.com

远程 SSH 服务器。

  SSH 隧道通过监听 localhost 上面指定端口来完成工作。它将把本机主机/端口上接收到的连接通过 SSH 连接转发到远程主机/端口。

  本例中, 位于 localhost5023 端口 被用于转发 localhost 的连接到远程主机的 23 端口。 由于 23telnet 使用的,因此它将通过 SSH 隧道完成 telnet 会话。

  这可以用来封装任意不安全的 TCP 协议, 例如 SMTP、 POP3、 FTP等等。

 使用 SSH 为 SMTP 创建安全隧道

% ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
user@mailserver.example.com's password: *****
% telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTP

这可以与 以及额外的用户帐号配合来建立一个更透明的 SSH 隧道环境。密钥可以被用在需要输入口令的地方, 而且可以为不同的用户配置不同的隧道。

  工作时, 有一个允许外来连接的 SSH 服务器。 同一个办公网络中有一个邮件服务器提供 POP3 服务。 这个网络, 或从您家到办公室的网络可能不, 或不完全可信。 基于这样的原因,您需要以安全的方式来查看邮件。 解决方法是创建一个到办公室 SSH 服务器的连接,并通过这个连接来访问 POP3 服务:

% ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com
user@ssh-server.example.com's password: ******

  当这个通道连上时, 您可以把 POP3 请求发到 localhost 端口 2110。 这个连接将通过通道安全地转发到 mail.example.com

  一些大脑长包的网络管理员会使用一些极端的防火墙策略, 不仅过滤进入的连接,而且也过滤连出的连接。 一些时候您可能只能连接远程机器 22 端口,以及 80 端口用来进行 SSH 和网页浏览。

  您可能希望访问一些其它的 (也许与工作无关的) 服务, 例如提供音乐的 Ogg Vorbis 流媒体服务器。 如果 Ogg Vorbis server 在 22 或 80 端口以外的端口播放音乐,则您将无法访问它。

  解决方法是建立一个到您的网络的防火墙之外的网络上的 SSH 服务器,并通过它提供的通道连接到 Ogg Vorbis 服务器上。

% ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org
user@unfirewalled-system.example.org's password: *******

  现在您可以把客户程序指定到 localhost 的 8888 端口,它将把请求转发给 music.example.com 的 8000 端口,从而绕过防火墙。

  通常限制哪些用户能够登录, 以及从何处登录会是好主意。 采用 AllowUsers 选项能够方便地达到这一目的。 例如, 想要只允许 root 用户从 192.168.1.32 登录, 就可以在 /etc/ssh/sshd_config 文件中加入下述设置:

AllowUsers root@192.168.1.32

  要允许用户 admin 从任何地方登录, 则只需列出用户名:

AllowUsers admin

  可以在同一行指定多个用户, 例如:

AllowUsers root@192.168.1.32 admin

注意: 列出需要登录机器的用户很重要; 否则他们将被锁在外面。

  在完成对 /etc/ssh/sshd_config 的修改之后您必须告诉 重新加载其配置文件, 方法是执行:

# /etc/rc.d/sshd reload
阅读(1131) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇: /usr/local/sbin/httpd -DNOHTTPACCEPT 解决

给主人留下些什么吧!~~