当前位置: 首页 > news >正文

本地访问远程vps中的sqlite数据库中的内容之(一)建立并访问ftp服务器

sqlite是不支持网络型的数据库。现在要做一个比较简单的工作,还是选用了sqlite数据库,现在要把它放到远程vps中持续运行,并需要在本地访问,经研究,使用python3配合使用import web可以实现,记录如下(全面记录,适合像我一样无基础的小白学习):

环境:远程vps centos系统。

一、在vps上安装ftp服务器

对于阿里云的服务器,可以参考我之前的文章记录阿里云服务器搭建FTP服务器的注意事项_阿里云搭建ftp-CSDN博客

本篇没有使用阿里云服务器,而是我的另外一台RN公司的VPS,具体可参考我之前的另一篇文章:

从开通VPS到搭建宝塔面板全教程_vps搭建-CSDN博客

在vps上安装ftp的作用是,可以将本地编写的xxx.py和xxx.db上传到远程服务器中。 

(一)使用宝塔的堡塔远程工具来连接vps,这个工具非常好用,强烈建议。

(二) 双击进入工具后,输入命令操作vps,用习惯的话,比windows系统要快。

(三)安装ftp服务

centos系统可以选择多种ftp工具安装来实现ftp服务,最常用的是 vsftpd,在此我也选择vsftpd。

首先,可以先看一下是否安装了vsftpd。

rpm -qa | grep vsftpd

 

我已经安装过了,所以有显示。如果未安装,则没有显示。

使用如下命令安装:

sudo yum install -y vsftpd

安装完成后,再启动并设置开机自启

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

确认状态 

sudo systemctl status vsftpd

标准服务名应该是 vsftpd(不是 ftp 或其他)。你可以通过这个命令列出系统中所有服务来确认:

systemctl list-units --type=service | grep ftp

配置完毕后放行防火墙端口,ftp使用的是21端口。

sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --reload

一般来说,还需要对vsftpd的配置文件(vsftpd.conf)进行一下设置:

使用find / -name xxx.xxx来在vps所有的文件中搜索xxx.xxx。

顺便说一下:which 命令是用来查找可执行程序(命令)的位置的,不适用于查找普通文件。

 

使用如下命令编辑配置文件 

sudo vi /etc/vsftpd/vsftpd.conf

进入后,按i,进入插入编辑模式,针对如下几项修改或者新增

# /etc/vsftpd/vsftpd.conf# 启用本地用户登录
local_enable=YES# 允许上传文件
write_enable=YES# 限制用户在家目录,避免访问其他目录
chroot_local_user=YESallow_writeable_chroot=YES# 禁止匿名访问(提高安全)
anonymous_enable=NO# 被动模式端口范围,配合防火墙开放端口使用(可选)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=你的VPS公网IP或域名# 日志文件路径
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES# UTF-8支持,避免中文乱码
utf8_filesystem=YES# 其它常用设置
connect_from_port_20=YES
listen=YES
listen_ipv6=NO

然后按esc,退出编辑模式,再按:wq,保存退出。重启vsftpd服务。

sudo systemctl restart vsftpd

确认防火墙允许21端口和被动端口段(如果用被动模式): 

sudo firewall-cmd --add-port=21/tcp --permanent
sudo firewall-cmd --add-port=40000-50000/tcp --permanent
sudo firewall-cmd --reload

现在对上面几个步骤的命令做一个小的整合:

# 安装服务
sudo yum install -y vsftpd# 启动服务
sudo systemctl start vsftpd# 开机自启
sudo systemctl enable vsftpd# 放行端口
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --reload# 查看服务状态
sudo systemctl status vsftpd

使用命令可以看到21端口的情况,结果显示确实是vsftpd在使用21端口。

sudo lsof -i :21

如果有别的ftp软件占用了21端口,而你想让vsftpd换一个端口,如下设置:

sudo vi /etc/vsftpd/vsftpd.conf进入编辑后,修改端口
listen_port=2121放行防火墙
sudo firewall-cmd --permanent --add-port=2121/tcp
sudo firewall-cmd --reload重启vsftpd服务
sudo systemctl restart vsftpd

接下来,新建一个系统用户作为FTP账户(例如用户名xiaoqinglong

sudo adduser xiaoqinglong
sudo passwd xiaoqinglong

期间需要输入两次密码,牢记密码。 

确认 vsftpd 配置允许本地用户登录:编辑 /etc/vsftpd/vsftpd.conf,确保有

local_enable=YES

重启vsftpd服务

sudo systemctl restart vsftpd

完成上述配置后,即可在本地使用FileZilla Client登陆远程vps的FTP了。

 

常见问题:

(1)状态: 不安全的服务器,不支持 FTP over TLS。 命令: USER xiaoqinglong 响应: 331 Please specify the password. 命令: PASS ********* 响应: 500 OOPS: vsftpd: refusing to run with writable root inside chroot() 错误: 严重错误: 无法连接到服务器

错误信息:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

原因:当启用了 chroot_local_user=YES,vsftpd 不允许用户的主目录(chroot根目录)具有写权限,否则出于安全考虑拒绝登录。 

解决:

假设用户家目录是 /home/xiaoqinglong,移除该目录的写权限

sudo chmod a-w /home/xiaoqinglong

然后在家目录下创建一个子目录用于写操作,比如:

sudo mkdir /home/xiaoqinglong/files
sudo chown xiaoqinglong:xiaoqinglong /home/xiaoqinglong/files

用户登录后可以将文件上传到 files 子目录。

或者参考另一种解决办法:

【FileZilla错误】500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list_500 oops cannot read chroot-CSDN博客

(2)状态: 正在连接 11.22.168.33:21... 状态: 连接建立,等待欢迎消息... 状态: 不安全的服务器,不支持 FTP over TLS。 状态: 已登录 状态: 读取目录列表... 命令: PWD 响应: 257 "/home/xiaoqinglong" 命令: TYPE I 响应: 200 Switching to Binary mode. 命令: PASV 响应: 227 Entering Passive Mode (11.22.168.33,101,85). 命令: LIST 错误: 20 秒后无活动,连接超时 错误: 读取目录列表失败 状态: 已从服务器断开

原因:这个问题是典型的 FTP 被动模式(PASV)数据连接超时问题

解决:

1.指定 vsftpd 被动端口范围(如 40000-50000)

2.防火墙和云安全组放行端口

3.重启 vsftpd 服务

以上步骤参照vsftpd.conf的设置步骤。

4.在 FileZilla 中,设置传输模式为“被动模式”。在“站点管理器”中,确保填写的服务器地址是公网IP。参考文章:filezilla 异常之server 连接报“服务器发回了不可路由的地址。被动模式失败”_服务器发回了不可路由的地址。被动模式失败。-CSDN博客

 

顺便说一下,filezilla还可以使用代理,参考文章

FileZilla使用代理_filezilla代理设置-CSDN博客 

 


好了,以上主要讲了在centos系统上搭建vsftpd服务器,以及使用filezilla来访问传输。

下一篇讲述如何在本地远程访问vps上的sqlite数据库。 


 

http://www.dtcms.com/a/251387.html

相关文章:

  • Linux进程间通信(上)
  • 思科基本理论
  • 第2讲、LangChain应用架构与核心组件:构建LLM应用的基石
  • SpringBoot电脑商城项目--用户注册功能
  • ‘str‘ object does not support item assignment
  • centos7 安装 docker
  • DP刷题练习(二)
  • router.push()
  • 【Java】网络编程基础与聊天室架构分析
  • 七 医学影像云平台-影像检验互联互认平台建设中遇到的问题
  • to avoid naming wrong index webpage for one website
  • 安卓9.0系统修改定制化____安卓9.0系统精简 了解系统app组件构成 系统app释义 常识篇 一
  • 前端api中使用data传参源码解释
  • InnoDB的undo日志的数据结构
  • 跨域问题之前后端解决办法
  • 中介者模式Mediator Pattern
  • NISP-PTE基础实操——SQL注入
  • Vue3 Pinia Store 生命周期管理
  • Mysql基础入门\期末速成
  • 5G NR PDCCH之CORESET交织映射
  • 25年泰康保险养老社招入职统一测评(心理、认知、潜质)北森真题题库、高分攻略
  • 【系统分析师】第4章-基础知识:计算机网络与分布式系统(核心总结)
  • 从0开始学习语言模型--Day02-如何最大化利用硬件
  • 什么是装饰器?
  • 紧急救援!Ubuntu崩溃修复大赛
  • 三次贝塞尔曲线,二次贝塞尔曲线有什么区别
  • 通达信 玄学首板 抓首版指标
  • 11.OpenCV—联合QT环境配置
  • PoE供电异常如何排查?
  • leetcode 搜索插入位置 java