在Linux下的SSH端口转发的程序

在Linux系统中的SSH端口转发,有很多种的转发操作,而且还是一种很好用的关于端口使用的程序,所以今天我们就来了解下关于SSH端口转发具体内容吧!

通常情况下两个不同的网络之间总会开放某一些特定的端口用于通讯使用,而SSH所使用的22端口通常就在开放之列。基于SSH的端口转发就是利用SSH作为中间的代理,达到绕过两个网络之间的限制,顺利的进行任意的端口的访问。

端口转发可以分为三种:

正向端口转发;

反向端口转发;

动态端口转发。

为了演示这三种端口转发方式的用法我们先假设存在有2个网域Office和Prod,在网域Office中有两个主机A和B,在网域Prod中两个主机C和D,这两个网域之间除了主机A能够访问C的22端口之外,其他所有的访问都被网络规则所禁止,也就是说A机器无法访问C的除22之外的所有其他端口,也无法访问到D主机;而主机C和D根本就无法访问A或者B中的任意一台主机。

任务一:正向端口转发

现在开始我们的第一个任务:假设主机D上面安装有数据库服务,监听的端口是8888,如果我想通过Office域中的主机A直接访问D主机中的数据库那该怎么办呢?这就要用到SSH的正向端口功能了。在这先要说明一下,在Linux中,所有的端口转发的操作都可以通过使用自带的工具ssh来完成。

完成任务一的命令很简单,如下:

1

ssh -L 8000:host-d.prod.mycompany.com:8888 oracle@host-c.prod.mycompany.com -N

现在解释一下上面的命令:

参数-L

表示在本地开启监听的端口,后面紧跟的参数格式为::,表示将本地的8000端口转发到远程主机D的8888端口。

orainst@host-c.prod.mycompany.com

这个参数指定要使用ssh登录的主机以及登录的用户名,这里使用的主机和前一个参数中的主机必须是在同一个网域当中,并且能相互访问,当然也可以是同一个机器。

参数-N

不执行远程的命令。这个参数在这里是可选的。

现在在主机A上面运行上面的命令之后输入正确的密码,然后我们先登录主机A查看一下当前端口的状态:

1

oracle@host-a[orcl]:~$ netstat -natp|grep 8000

2

(Not all processes could be identified, non-owned process info

3

will not be shown, you would have to be root to see it all.)

4

tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 3767/ssh

5

tcp 0 0 ::1:8000 :::* LISTEN 3767/ssh

可以看到在主机A上已经存在8000端口准备随时接受连接了,不过要注意的是这里监听的网络是127.0.0.1(::1),也就是说这种连接仅限于本地操作。

接下来就是配置下TNSNAMES了,配置如下:

01

orcl=

02

(DESCRIPTION=

03

(ENABLE=BROKEN)

04

(ADDRESS_LIST=

05

(FAILOVER=ON)

06

(LOAD_BALANCE=YES)

07

(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=8000))

08

)

09

(CONNECT_DATA=

10

(SID=orcl)

11

)

12

)

然后tnsping测试一下:

01

oracle@host-a[orcl]:~$ tnsping orcl

02

03

TNS Ping Utility for Linux: Version 11.1.0.7.0 - Production on 05-JUL-2010 09:13:25

04

05

Copyright (c) 1997, 2008, Oracle. All rights reserved.

06

07

Used parameter files:

08

09

10

Used TNSNAMES adapter to resolve the alias

11

Attempting to contact (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (FAILOVER=ON) (LOAD_BALANCE=YES) (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=8000))) (CONNECT_DATA= (SID=orcl)))

12

OK (340 msec)

大功告成。

任务二:反向端口转发

因为网域Prod不能以任何的方式访问网域Office,假设这两个网域所处的物理位置完全的不同,那当那一天处于网域Prod的时候又想操作处于网域Office中的主机A,那怎么办呢?这就是要用到反向端口转发的时候了。

反向端口转发的基本思想就是从主机A建立到主机C的ssh连接的同时在主机C上打开一个端口可以反向连接到主机B上面的某一个端口,当然从主机控制上面来说连接到主机B的22(ssh端口)是最实惠的了,现在要做的就是在主机A上面运行如下的命令:

1

ssh -R 8888:localhosthost-b.office.mycompany.com:22 oracle@host-c.prod.mycompany.com -N

同样的,先解释下上面的命令:

参数-R

创建一个反向的端口转发,后面紧跟的参数格式为 ::,这里监听的端口是8888,反向连接要到C主机原来根本无法访问的主机B的22端口。

oracle@host-c.prod.mycompany.com

这个参数指定要使用ssh登录的主机以及登录的用户名,这里使用的主机和前一个参数中的主机必须是在同一个网域当中,并且能相互访问,当然也可以是同一个机器。

参数-N

不执行远程的命令。这个参数在这里是可选的。

在主机A上面执行上面的命令成功之后就可以登录到主机C检查一下效果了,首先是检查8888端口的开发状态:

1

oracle@host-c:~$ netstat -natp |grep 8888

2

(No info could be read for "-p": geteuid()=1001 but you should be root.)

3

tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN -

4

tcp6 0 0 ::1:8888 :::* LISTEN -

然后就是测试下这个端口的可用性,执行如下的命令:

1

oracle@host-c:~$ ssh -p 8888 oracle@localhost

2

Password:

3

Last login: Mon Jul 5 02:34:50 2010 from 172.24.43.103

4

5

oracle@host-b.office$ hostname

6

host-b.office.mycompany.com

7

oracle@host-b.office$

至此现在已经成功的使用唯一开放的ssh端口建立了一个本来是完全不可能的连接。这种方法是非常有用的,具体在什么时候用就靠大家的发挥了。

任务三:动态端口转发

动态端口转发实际上是建立一个ssh加密的SOCKS4/5代理通道,任何支持SOCKS4/5协议的程序都可以使用这个加密的通道来进行代理访问,现在这种方法最常用的地方就是翻墙了,使用的方法也很简单,命令如下:

1

ssh -D 8888 username@proxyhost.mycompany.com -N

命令解释:

参数-D

建立一个动态的SOCKS4/5的代理通道,紧接着的是本地监听的端口号。

username@proxyhost.mycompany.com

这个参数指定要使用ssh登录的主机以及登录的用户名,这里使用的主机和前一个参数中的主机必须是在同一个网域当中,并且能相互访问,当然也可以是同一个机器。

参数-N

不执行远程的命令。这个参数在这里是可选的。

因为这种方法对于办公方面没有什么帮助,所以也就不再多说。

小结:关于以上的就是Linux系统中的SSH端口转发,有三种的方法进行对通讯使用;这三种方法使得我们在与其他的端口沟通起来更加的方法有序,所以网友们了解了SSH端口知识了么!

(0)

相关推荐

  • Linux下的SSH端口转发配置方法

    通常情况下两个不同的网络之间总会开放某一些特定的端口用于通讯使用,而SSH所使用的22端口通常就在开放之列。基于SSH的端口转发就是利用SSH作为中间的代理,达到绕过两个网络之间的限制,顺利的进行任意 ...

  • windows和linux下查看80端口号占用(被哪个进程占用?如何终止)

    windows和linux下查看80端口号占用(被哪个进程占用?如何终止)

  • linux下高级SSH安全技巧

    SSH服务器配置文件是/etc/ssh/sshd_conf。在你对它进行每一次改动后都需要重新启动SSH服务,以便让改动生效。 1、修改SSH监听端口 默认情况下,SSH监听连接端口22,攻击者使用端 ...

  • linux下设置ssh免密码登陆的配置步骤分享

    我有两台笔记本电脑上分别装有两个centos的虚拟机,一个IP为172.16.1.10(slave),一个IP为172.16.1.9(master)。 在slave上用root用户 vi /etc/h ...

  • CentOS下如何配置端口转发?

    开启IP转发 首先开启IP转发功能,默认是关闭的. 临时修改: # echo 1 >/proc/sys/net/ipv4/ip_forward 修改过后就马上生效,但如果系统重启后则又恢复为默认 ...

  • Linux下定制SSH来简化远程访问教程

    SSH 使用系统全局以及用户指定(用户自定义)的配置文件.在本文中,我们将介绍如何创建一个自定义的 ssh 配置文件,并且通过特定的选项来连接到远程主机. SSH (指 SSH 客户端)是一个用于访问 ...

  • Linux下定制SSH来简化远程访问的方法

    SSH 使用系统全局以及用户指定(用户自定义)的配置文件.在本文中,我们将介绍如何创建一个自定义的 ssh 配置文件,并且通过特定的选项来连接到远程主机. SSH (指 SSH 客户端)是一个用于访问 ...

  • linux下使用ssh管理VPS的注意事项小结

    笔者采用key文件交互登录的方式连接ssh。因此,第一步要生成ssh的key文件。 1、ssh-keygen 2、接着,将服务器上的密钥、公钥下载下来。保存在当前用户的.ssh文件夹下。 这里需要注意 ...

  • linux下使用ssh连接另一台linux服务器

    在服务使用过程中,往往在要多台linux服务器之中切换使用,其实可以在当前的linux服务器直接通过ssh连接到另一台linux服务器. 操作方法 01 使用工具登录第一台linux服务器,本例第一台 ...