本地电脑搭建SFTP服务器,并实现公网访问

本地电脑搭建SFTP服务器,并实现公网访问

1. 搭建SFTP服务器

1.1 下载 freesshd 服务器软件

下载地址:freeSSHd and freeFTPd

img

选择freeFTPD.exe下载

下载后,点击安装

img

安装之后,它会提示是否启动后台服务,Yes

安装后,点击开始菜单–> freeFTPd,注意:这里要点击鼠标右键,以管理员权限打开freeFTPd,如果以普通用户打开freeFTPd,将无法保存配置

img

主图口如下,我们看到SFTP状态为未启动。

img

1.3 启动SFTP服务

选择SFTP,如下图,我们看到当前SFTP状态为Stopping,我们点击start按钮。

img

状态将变为Running…,如下图。

img

1.4 添加用户

选择Users选项窗口,点击Add按钮,添加用户。

img

这里添加一个测试用户aaa 认证方式可以选择WINDOWS验证和密码验证,本例选择独立密码验证。

用户目录,我们为用户单独创建一个SFTP的根目录。

创建好以后,点击Apply按钮保存

以及别忘了配置SFTP根目录文件夹的目录权限

img

1.5 保存所有配置

点击下图Apply & Save按钮。保存所有配置写配置文件。

img

注意:如果弹出不能写入配置错误窗口,说明您之前是用普通用户启动的freeFTPd,无法保存配置文件。需要以管理员权限重新打开freeFTPd,才能正常写入配置文件。重新执行步骤1,再次保存。

img

保存后的结果如下图。

img

2. 安装SFTP客户端FileZilla测试

下载地址:FileZilla中文网 - 免费开源的FTP解决方案

安装后打开,如下图

img

2.1 配置一个本地SFTP站点

在软件工具栏点击打开站点管理器,如下图。

img

点击新站点按钮。

img

我们创建一个新站点,名称随意。 选择协议:为SFTP 服务器IP:因为就是在服务器上,选择127.0.0.1 端口号:选择 22 用户名:为我们搭建sftp服务器时,创建用户,本例为aaa 密码:输入用户aaa的密码

配置好后,点连接按钮。

img

提示是否保存密码,点击确定。

img

初次连接时,会提示是否信任该主机,打勾,并确认。

img

2.2 内网连接测试成功

我们可以看到,已经可以获取到服务器端的目录列表,说明连接成功。

img

3. 使用cpolar内网穿透

前置条件是您已经安装了cpolar,如果没安装,请参考《windows下安装cpolar》文章。

我们打开浏览器:127.0.0.1:9200

img

使用cpolar邮箱账号登录。

3.1 创建SFTP隧道

选择左边菜单栏隧道管理创建隧道,添加一个新的TCP隧道。

  • 隧道名称:tunnel-sftp (您可以自定义,不重复即可)
  • 协议: TCP
  • 本地地址:22
  • 地区: 本例中选择China Top

点击创建按钮。

img

隧道列表中,显示了我们刚创建的隧道。

img

3.2 查看在线隧道列表

本例中,我们获取到的公网地址为 3.tcp.cpolar.top:12284,其中3.tcp.cpolar.top是公网地址,12284是端口号

img

4. 使用SFTP客户端,连接公网地址测试

4.1 添加新站点

我们打开filezilla,按步骤2的操作方式,重新添加一个新站点 工具栏里,打开站点管理器,添加新站点。

我们这次给站点起名为cpoalr sftp 协议:SFTP 主机: 3.tcp.cpolar.top (本例中可能跟您的不一样,参考在线隧道列表) 端口:12284 (本例中可能跟您的不一样,请参考您的在线隧道列表)

img

4.2 以公网方式,连接sftp服务器成功

可以看到,已经通过cpolar提供的公网域名,连接SFTP服务器成功。

img

PS:如果出现中文目录乱码的问题,可以通过在SFTP客户端里配置字符集来解决:

  • 将字符集设置为GBK
  • 【由于目前大多数linux字符集为了通用,以及都改为了UTF-8,而Windows默认字符集为GBK,所以只需要将其将字符集设置GBK,就不会乱码了】

img

img

总结

本例中,我们在windows中搭建了sftp站点,并且在本网测试成功后,又使用cpolar穿透工具,将SFTP站点,变得公网可用。由于本例中使用的是免费套餐,sftp站点的公网地址及端口会在24小时内变化,经常使用会很不方便。建议升级到专业套餐以上,并配置成固定TCP隧道,以获得更好的体验,注专业套餐是免费套餐带宽的3倍。

下一步:

如何为SFTP站点配置固定公网TCP地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
链接到sFTP客户端谷歌浏览器应用程序 访问您的本地/远程FTP服务器(包括您的NAS驱动器),本地服务器,VPS,专用服务器,云服务器或共享主机。 我们现在已经发布了适用于MAC,WINDOWS和LINUX的本地应用程序,请访问我们的网站: http://www.sftpclient.io/download ------------------------------------------ sFTP客户端是简单的,它是建立在谷歌浏览器/ Chrome操作系统打包的应用程序界面,使应用程序快速和响应。其中一些功能包括一个FTP / SFTP帐户管理器,用于存储和管理最常用和最喜欢的FTP / SFTP连接,只需点击一下,文件/文件夹队列即可查看当前正在上传/下载的项目,强大的文本编辑器(所以你甚至不需要额外的程序来修改你的代码),等等... 看看下面的sFTP客户端应用程序的所有功能。 特征: ========= - 标准的FTP连接 - SSH over File Transfer Protocol(sFTP)连接 - 用于SSH连接的权限密钥文件(SSH密钥 - RSA) - FTP / SFTP被动模式 - 连接到远程(外部)和本地(内部)FTP / SFTP / SSH服务器。 - 更改文件/文件夹权限(通过复选框或值:例如777) - 上传/下载多个文件和文件夹 - 快速连接 - 编辑器选项:选项卡式文件,自定义 - 拖放文件/文件夹 - 管理FTP / SFTP / SSH账户(使用谷歌浏览器本地存储和安全密码加密存储) - 强大的文本编辑器,语法高亮(保存,自动保存和自动上传功能) - 键盘选择(向上,向下,进入(回车)和退出(退格)的目录,包括搜索能力,通过键盘上键入快速访问文件/文件夹) - 导入帐户:sFTP客户端 - 出口帐户 - 重命名和删除文件 - 创建新的文件/目录 - 刷新本地和远程列表 - 对列进行排序和调整大小 - 多选文件和文件夹 - 按路径浏览本地和远程文件夹 - 本地目录:选择每个连接的默认本地目录,假设为全局 - 快速帐户菜单(一键从您保存的列表中打开FTP / SFTP / SSH帐户连接) - 多个FTP / SFTP / SSH帐户连接(如果您打开了大量连接,则滚动选项卡) - 关闭连接(断开与服务器的连接并删除所有活动) - 控制台日志(显示所有FTP / SFTP / SSH活动日志) - 传输队列(排队的文件和文件夹,失败的文件和文件夹,完成的文件和文件夹) - 新的Google Sockets API - 远程和本地菜单 - 连接并列出UNIX和MS-DOS目录 - 复制网址到剪贴板 - 10最近的连接 - 保持连接 - 主密码登录(保持所有的FTP连接安全,1登录) - 同步浏览 更多的功能和功能来免费未来的更新! 支持语言:English (UK)
要在Python中搭建SFTP服务器,你可以使用`paramiko`库。下面是一个简单的示例: ```python import paramiko # 创建一个SFTP服务器类 class MySFTPServer(paramiko.SFTPServerInterface): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # 实现文件读取方法 def check_file(self, path): return paramiko.SFTPServerFlags.READ # 实现文件写入方法 def check_file_write(self, path): return paramiko.SFTPServerFlags.WRITE # 创建一个SSH服务器类 class MySSHDServer(paramiko.ServerInterface): def __init__(self): super().__init__() # 实现认证方法 def check_auth_password(self, username, password): # 在这里可以添加自定义的认证逻辑 return paramiko.AUTH_SUCCESSFUL # 实现SFTP子系统方法 def check_channel_subsystem_request(self, channel, name): if name == 'sftp': server = MySFTPServer() channel.sftp_server = server return paramiko.OPEN_SUCCEEDED return paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED # 创建SSH服务器对象 ssh_server = paramiko.Transport(('0.0.0.0', 22)) ssh_server.add_server_key(paramiko.RSAKey.generate(2048)) ssh_server.set_subsystem_handler('sftp', paramiko.SFTPServer, MySFTPServer) # 启动SSH服务器 ssh_server.start_server(server=MySSHDServer()) # 接受客户端连接 while True: client, _ = ssh_server.accept(20) if client is None: break client.close() ``` 在上面的示例中,我们创建了一个自定义的SFTP服务器类`MySFTPServer`,并实现了文件读取和文件写入的方法。然后,我们创建了一个SSH服务器类`MySSHDServer`,并实现了认证和SFTP子系统的方法。最后,我们创建了一个SSH服务器对象,添加了服务器密钥和SFTP子系统处理程序,并启动了SSH服务器。 请注意,在实际使用时,你可能需要根据自己的需求进行一些修改和调整。此示例仅提供了一个基本的框架,你可以根据自己的需求进行扩展和定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpolar技术支持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值