您的位置 首页 golang

ssh内网穿透并搭建SFTP服务器

SFTP是SSH File Transfer Protocol的缩写,安全文件传送协议。SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至服务器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作。

  • 链接方式:FTP使用TCP端口21上的控制连接建立连接。而,SFTP是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。
  • 安全性:SFTP使用加密传输认证信息和传输的数据,所以使用SFTP相对于FTP是非常安全。
  • 效率:SFTP这种传输方式使用了加密解密技术,所以传输效率比普通的FTP要低得多。

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

# 单次开启ssh
sudo 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服务器了。

文章来源:智云一二三科技

文章标题:ssh内网穿透并搭建SFTP服务器

文章地址:https://www.zhihuclub.com/98499.shtml

关于作者: 智云科技

热门文章

网站地图