您的位置:首页 > 运维架构 > Linux

SSH转发及安全隧道的简单实现

2010-04-18 14:52 295 查看
 
SSH转发及安全隧道的简单实现
 
2007-06-07 kenthy#qingdaonews.com
 
############################################
系统环境:Redhat Linux 9.0 [ 2.4.20.8 ]
软件版本:
 openssh-3.5p1-6
 openssh-server-3.5p1-6
 openssh-askpass-3.5p1-6
 openssh-clients-3.5p1-6
 openssh-askpass-gnome-3.5p1-6
 
目标功能:
 1、本地转发:在B机上对A机上的pop3服务通信进行加密
  Server A:
   192.168.1.1/24
   用户:jerry
  Server B:
   192.168.1.2/24
   用户: mikky
     不使用加密[直接访问]: telnet 192.168.1.1 110
     经安全传输[加密访问]: telnet 192.168.1.2 1234
 
 2、安全隧道:跨越Internet连接两个内网主机,此例中要求实现C机能访问A机的网站服务
  网络拓扑: Client A ---> |Gateway|--->===Internet===--->Server B<---===Internet===<---[Gateway]<---[Client C]
  Client A:
   192.168.10.10 /24
   开启httpd服务
  Server B:
   20.0.0.1/24
  Client C:
   192.168.20.20/24
  环境说明:
   A、C分别为两个异地内部网络的主机;
   B为具有公网地址的主机;
   A、C均能正常使用B主机的sshd服务
   A、C无法直接互相访问[因为是私网地址]
############################################################

一、安装
  各机器上ssh服务端/客户端软件包都安装。各软件均使用RH9光盘中自带的rpm包,[步骤略]
 
二、本地转发

 1、Server A //配置及启用pop3、sshd服务,开放用户jerry,详细步骤略

 2、Server B
     # su - mikky
     $ ssh -fg -L 1234:localhost:110 jerry@192.168.1.1 sleep 86400
   [注:]
  1> 以上语句将在B机本地打开1234端口,并将访问本地1100端口的数据转发至A机的110端口,期间的数据传输经ssh加密
  2> -f 和 sleep 86400的作用:ssh验证成功后转入后台,监听24小时后自动退出,若需要长期提供服务,可修改时间
  3> -g 的作用:指对全局global有效,允许其它主机访问本机1234端口。即监听0.0.0.0:1234,不加-g时仅监听127.0.0.1:1234
  2> 若要在B机开放1024以下端口,需要具有B机本地root权限

 3、结果测试
  访问B机 192.168.1.2的1234端口即可使用A机 192.168.1.1的pop3服务,使用pop3收信用户密码验证
     # telnet 192.168.1.2 1234
 
三、安全隧道

    方案1:
 在A机上设置B->A远程转发,在C机上设置C->B本地转发即可
 B机需开启sshd服务,开放用户tom、jerry
 基本步骤:
     1、Client A  //配置及启用httpd,默认80端口,详细步骤略
  # ssh -fg -R 7777:localhost:80 tom@20.0.0.1 sleep 7200  //将对远程B机7777端口的访问转发至本机80端口
 
     2、Client C
  # ssh -fg -L 8000:localhost:7777 jerry@20.0.0.1 sleep 7200 //将对本机8000端口的访问转发至远程B机的7777端

     3、Server B  //配置及启用sshd,详细步骤略
 
     4、结果测试
  在C机上访问本机 http://192.168.20.20:8000,即可访问到A机 http://192.168.10.10的web服务
 
    方案2: [仅作参考,若A、B、C均为公网IP地址方可使用,可以B机主导设置作为中间跳板]
 在B机上设置C->B远程转发,再设置B->A本地转发即可
 A、C机上需开启sshd服务,分别开放用户为aimy、coco
 基本步骤:
     1、Client A、C //详细步骤略
 
     2、Server B
  # chkconfig --level 2345 sshd on
  # /etc/init.d/sshd start
  # ssh -fg -R 8000:localhost:7777 coco@199.168.20.20 sleep 7200
  # ssh -fg -L 7777:localhost:80 aimy@199.168.10.10 sleep 7200
  # netstat -an | grep 7777
 
     3、结果测试
  在C机上访问http://199.168.20.20:8000,即可访问到http://199.168.10.10的web服务
 
 
 

 

不同的Linux之间copy文件常用有3种方法,第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy。第二种方法就是采用samba服务,类似Windows文件copy的方式来操作,比较简洁方便,第三种就是利用scp命令来进行文件复制。

    scp是有Security的文件copy,基于ssh登录。操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令。

scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root
然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码,接着就开始copy了。

    如果想反过来操作,把文件从远程主机copy到当前系统,也很简单。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息