Linux下利用ssh的端口转发功能实现服务器访问客户机
一、前言
通常情况下在客户机上用ssh上的sshd服务是可以的,因为通常放在公网上。但是现在有个需求,能否从服务器上客户机上的服务呢? 因为通常客户机一般在内网,没有公网的IP,所以服务器不能直接访问到处于内网的客户机。这里呢,我们ssh的端口转发实现服务器访问客户机。
二、服务器以及客户机的准备
1、 这里要求服务器上必须安装sshd服务,客户机必须安装ssh客户端
2、服务器处于公网上,客户机可以通过任何形式连接到互联网即可
3、客户机有提供访问的服务,这里为了简便起见,我们只在客户机安装了sshd服务,当然也可以是vnc服务等等...(客户机上的服务不限定,只要是能从服务器上访问到客户机的服务即可,相应的服务器上有访问该客户机上服务的客户端程序)
4、服务器和客户机上分别开启sshd服务,这里侦听的端口为默认的22
三、ssh的端口转发
1、在客户机上执行如下命令(必须有root权限)
# ssh -p 22 -f -N -R 12345:localhost:22 root@服务器公网IP
执行后要求输入服务器root用户的密码
如果密码正确,则服务器上会开启一个 127.0.0.1:12345的侦听端口,具体该命令的含义是:
-p 22 #指定访问服务器的sshd服务端口为22
-f #要求在执行命令前退至后台
-N #不执行远程命令. 用于转发端口. (仅限协议第二版),这个命令通常与端口转发的选项配合使用
-R 12345:localhost:22 #将服务器的12345端口转发到客户机的127.0.0.1的22端口
#这样在服务器上用ssh来访问127.0.0.1:12345实际上就是访问了客户机的
#sshd的22端口的服务了
2、在服务器上访问客户机
# ssh -p 12345 localhost #这里localhost指的就是127.0.0.1
执行后要求输入客户机root用户的密码
如果密码正确,就会成功登录到客户机上了。
四、用ssh转发客户机的其它服务端口(其它服务端口的转发参照此例)
1、这里我们转发VNC服务的端口,VNC是一个远程桌面控制服务,这里假设客户机安装了VNC的服务端,该服务开启的侦听端口为:5900
2、在客户机上执行如下命令(必须有root权限)
# ssh -p 22 -f -N -R 12346:localhost:5900 root@服务器公网IP
执行后要求输入服务器root用户的密码
如果密码正确,则服务器上会开启一个 127.0.0.1:12346的侦听端口
3、在服务器上访问客户机VNC服务
# vncviewer #这里服务器安装了xvncviewer(vnc客户端)
执行后要求输入VNC服务端的IP地址及端口,这里就输入:127.0.0.1:12346
接着要求输入登录客户机VNC服务的密码
如果密码正确,就会显示客户机上的远程桌面了。
- 最新评论