SFTP是SSH File Transfer Protocol的缩写,安全文件传送协议。SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至服务器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口 默认是22)来完成相应的连接和答复操作。
1,搭建环境
1)A端:在内 搭建SFTP服务器;内 环境:ubuntu 16.04/18.04
2)B端:在公 服务器上建立内 服务器的代理;公 服务器为阿里云服务器:ubuntu 16.04/18.04
3)C端:在其他内 或公 设备上访问SFTP服务器
2,内 服务器配置
1)安装ssh服务器
#更新源sudo apt-get update#安装ssh服务器sudo apt-get install openssh-server# 开机自动启动ssh命令sudo systemctl enable ssh# 单次开启sshsudo systemctl start ssh
2)建立反向代理
内 服务器的22端口和公 服务器的50000端口建立ssh连接
ssh -fCNR 50000:localhost:22 -o ServerAliveInterval=60 usr@88.88.88.88 -p 22
usr@88.88.88.88用自己的公 IP和用户名代替!
解释(例子):
该命令实现的功能是,让一个远端机器的50000端口代理自己的22端口,这里所说的远端机器就是我们的公 服务器。执行如下命令查看是否启用该进程
ps aux | grep ssh
3,公 服务器配置
1)查看是否成功建立连接
netstat -antpul | grep 50000
此时,在公 服务器上测试连接下sftp服务器(usr用自己用户名代替)
sftp -P 50000 usr@127.0.0.1
此时,也可以登录内 服务器
ssh usr@localhost -p 50000
2)正向代理
前面实现的反向代理端口50000,但这个端口只允许公 服务器内部访问。也就是说,只能先用ssh登录公 服务器,然后在终端上使用ssh访问50000端口才能真正登录到内 服务器。需要继续配置,才能实现任意第三方的访问。
公 服务器:让50010代理50000
ssh -fCNL *:50010:localhost:50000 -o ServerAliveInterval=60 usr@localhost -p 22
解释(例子):
该命令实现的功能是,让本机50010端口指向一个远端机器的50000端口,而这里的远端机器恰好就是公 服务器本身。这样就可以任何机器访问内 的sftp服务器了。
3)代理进程开机启动
在~/.bashrc中添加上述指令即可
4)阿里云服务器的安全组配置
由于公 使用了阿里云服务器,所以要在安全组中开放22、50000、50010端口,其他云服务器也类似操作即可。
5)用sftp客户端访问服务器
通过以上操作,即实现了内 穿透,且可以从外 直接访问内 的sftp服务器了。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!