设为首页 收藏本站
查看: 13578|回复: 0

使用SSH跳板机上传文件到内网的FTP服务器

[复制链接]

尚未签到

发表于 2015-5-28 09:45:40 | 显示全部楼层 |阅读模式
  最近项目的开发工作告一段落,马上要跟其他厂商进行联调了.
  客户提供的测试环境是在内部云的虚拟机,总共有6台服务器,包括4台windows与2台centos.
  服务器只能通过一台可以通过外网SSH访问的堡垒机进行连接.
  之前没有用过这种方式,网上查了一下,SSH可以通过通道进行端口映射 只要把3389端口(远程桌面RDP协议)、21端口(FTP协议)、22端口(SSH协议)建立映射就可以直接连接内部服务器进行管理。
  在使用FTP服务器的时候,发现了一些问题,花了几个小时才解决,记录一下,为后来者戒!
  1、FTP客户端只能使用被动模式
  引用百度百科的解释:



PORT(主动)方式的连接过程是:服务器开放一个端口,通知客户端连接,服务端接受连接,建立一条命令链路。
当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了一个1024+的随机端口,你过来连接我”。于是服务器从20端口向客户端的1024+随机端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了一个1024+的随机端口,你过来连接我”。于是客户端向服务器的1024+端口发送连接请求,建立一条数据链路来传送数据。
  很简单,只要想想就明白,SSH代理只能让用户机器单向连通目标服务器,目标服务器无法反向连接用户机器。
  2、要在FTP服务器限定PASV模式下使用端口范围,并加入到SSH通道
  使用PASV模式时,当需要传送数据时,服务器会打开一个端口N,通过命令链路把端口N告诉客户端,让客户端发送连接请求到端口N,创建数据链路来传送数据。
  那么这个FTP服务器的端口N就必须要在SSH通道中,因为客户端与FTP服务器所有通讯都是要SSH通道代理。
  所以通过SSH跳板机连接到FTP服务器的通道配置如下:
DSC0000.jpg
  
  FTP服务器使用的FileZilla,配置PASV模式使用端口范围,并加入防火墙入站规则
DSC0001.jpg
  3、选择可靠的FTP客户端工具(吐槽一下FileZillaClient)
  问题1,问题2都飞快的解决了,最后一个问题把我困了好久。
  我开始FTP客户端也是使用FileZilla,但是连接成功后一直报错:



1 状态:    正在连接 127.0.0.1:9800...
2 状态:    连接建立,等待欢迎消息...
3 响应:    220-FileZilla Server version 0.9.46 beta
4 响应:    220-written by Tim Kosse (tim.kosse@filezilla-project.org)
5 响应:    220 Please visit http://sourceforge.net/projects/filezilla/
6 命令:    USER admin
7 响应:    331 Password required for admin
8 命令:    PASS ********
9 响应:    230 Logged on
10 命令:    SYST
11 响应:    215 UNIX emulated by FileZilla
12 命令:    FEAT
13 响应:    211-Features:
14 响应:     MDTM
15 响应:     REST STREAM
16 响应:     SIZE
17 响应:     MLST type*;size*;modify*;
18 响应:     MLSD
19 响应:     UTF8
20 响应:     CLNT
21 响应:     MFMT
22 响应:    211 End
23 状态:    已连接
24 状态:    读取目录列表...
25 命令:    PWD
26 响应:    257 "/" is current directory.
27 命令:    TYPE I
28 响应:    200 Type set to I
29 命令:    PASV
30 响应:    227 Entering Passive Mode (XXX,XXX,XXX,66,38,74)
31 命令:    MLSD
32 响应:    150 Opening data channel for directory listing of "/"
33 响应:    226 Successfully transferred "/"
34 错误:    无法建立数据连接:ETIMEDOUT - 连接尝试超时
35 错误:    读取目录列表失败
  想了好久都没想明白什么问题,后来想到是不是没有连接到正确的IP地址,因为FTP客户端连接的地址是127.0.0.1:9800,通过SSH通道映射内网FTP服务器:21,
  会不会客户端在创建数据连接时,直接用了FTP服务器IP??
  然后在设置中看到这个:FTP/被动模式:使用服务器的外部IP地址来代替 ,潜意思把这个问题给排除了,这正是噩梦的开始,反复折腾了2个小时,一直无法定位到问题所在。
DSC0002.jpg
  
  后来换了FlashFXP,果断成功
DSC0003.jpg
  



1 [18:47:27] [R] 正在连接到 test_ftp -> IP=127.0.0.1 PORT=9800
2 [18:47:27] [R] 已连接到 test_ftp
3 [18:47:27] [R] 220-FileZilla Server version 0.9.46 beta
4 [18:47:27] [R] 220-written by Tim Kosse (tim.kosse@filezilla-project.org)
5 [18:47:27] [R] 220 Please visit http://sourceforge.net/projects/filezilla/
6 [18:47:27] [R] USER admin
7 [18:47:27] [R] 331 Password required for admin
8 [18:47:27] [R] PASS (hidden)
9 [18:47:27] [R] 230 Logged on
10 [18:47:27] [R] SYST
11 [18:47:27] [R] 215 UNIX emulated by FileZilla
12 [18:47:27] [R] FEAT
13 [18:47:27] [R] 211-Features:
14 [18:47:27] [R]  MDTM
15 [18:47:27] [R]  REST STREAM
16 [18:47:27] [R]  SIZE
17 [18:47:27] [R]  MLST type*;size*;modify*;
18 [18:47:27] [R]  MLSD
19 [18:47:27] [R]  UTF8
20 [18:47:27] [R]  CLNT
21 [18:47:27] [R]  MFMT
22 [18:47:27] [R] 211 End
23 [18:47:27] [R] CLNT FlashFXP 5.0.0.3786
24 [18:47:28] [R] 200 Don't care
25 [18:47:28] [R] OPTS UTF8 ON
26 [18:47:28] [R] 202 UTF8 mode is always enabled. No need to send this command.
27 [18:47:28] [R] PWD
28 [18:47:28] [R] 257 "/" is current directory.
29 [18:47:28] [R] PASV
30 [18:47:28] [R] 227 Entering Passive Mode (XXX,XXX,XXX,66,38,73)
31 [18:47:28] [R] 正在打开数据连接 IP: 127.0.0.1 端口: 9801
32 [18:47:28] [R] MLSD
33 [18:47:28] [R] 150 Opening data channel for directory listing of "/"
34 [18:47:28] [R] 226 Successfully transferred "/"
35 [18:47:28] [R] 列表完成: 774 字节 耗时 0.18 秒 (0.8 KB/s)
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71382-1-1.html 上篇帖子: IIS中的FTP的设置 下篇帖子: Ftp文件上传控件发布-Xproer.FtpUploader2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表