ubuntu 中使用 lftp 命令行工具传输文件

文章目录

一、检查传输协议和端口

  1. 安装nmapnmap是一个非常通用的扫描器,可以跨越几乎所有 IP 网络环境使用,支持多平台、多协议,几乎能完成整个网络探测、诊断和安全审计的流程。

    bash 复制代码
    sudo apt install nmap 
    方面 特点总结 详情说明
    协议通用性 核心协议支持广泛 Nmap 使用原始 IP 数据包(Raw IP Packets)来工作,支持 TCP、UDP、ICMP 等所有主流网络协议,使其能够探测各种基于 IP 的网络服务。
    环境通用性 适用于各种规模和类型网络 无论是扫描单个主机、内部局域网 (LAN) 还是跨越互联网的大型网络 (WAN),Nmap 都能胜任。它具备穿透(或规避)防火墙、路由器和入侵检测系统 (IDS) 的高级扫描技术。
    系统通用性 支持主流操作系统 Nmap 软件本身是跨平台的,有适用于 Linux、Windows、macOS 以及各种 BSD 和 Unix 系统的版本,可以在几乎任何主机上执行扫描任务。
    功能通用性 不仅仅是端口扫描 它的功能涵盖主机发现、端口状态识别、服务及版本探测、操作系统指纹识别和脚本扫描(NSE),使其成为网络管理员和安全审计人员的通用工具。
  2. 扫描目标 IP 地址,以发现主机是否在线,开放了哪些端口以及运行着什么服务,确保目标主机支持相关的传输协议。

    bash 复制代码
    nmap ip   # 目标主机 ip

二、使用 lftp 工具传输文件

  1. 在 Linux 或 Unix 的终端环境下,通常选择lftp工具传输文件,尤其是在涉及到自动化、高可靠性、目录同步或性能优化的场景中。它的一大优势是操作统一,无论是 ftp://ftps:// 还是 sftp://,都是使用同一套lftp命令(如 mirror, get, put),无需切换工具,这带来了极大的便利性。

    bash 复制代码
    sudo apt install lftp
  2. 选择对应的协议(ftp://ftps://sftp:// 等),使用 URL 指定用户名登录(交互输入密码)。

    bash 复制代码
    lftp ftp://username@host_ip
  3. 登录成功后,终端提示符变成如下格式。

    bash 复制代码
    lftp username@host_ip:~>
  4. 远程操作命令 (不加!前缀)

    功能 命令示例 说明
    列出目录 lsls -l 查看远程目录文件
    切换目录 cd /remote/dir 切换远程目录
    查看远程路径 pwd 当前远程目录
    创建远程目录 mkdir newfolder 在远程创建目录
    删除远程文件 rm file.txt 删除远程文件
    上传单文件 put localfile.txt 上传到当前远程目录
    下载单文件 get remotefile.txt 下载到当前本地目录
    上传并改名 put localfile.txt -o remotefile.txt 上传更名 / 路径
    下载并改名 get remotefile.txt -o localfile.txt 下载更名 / 路径
    上传目录(递归) mirror -R /local/dir /remote/dir 本地 → 远程
    下载目录(递归) mirror /remote/dir /local/dir 远程 → 本地
    上传目录并断点续传 mirror -R --continue /local/dir /remote/dir 支持断点续传
    上传目录并多线程 mirror -R --parallel=5 /local/dir /remote/dir 并行上传5个文件
  5. 安全与证书设置,如果提示类似 Certificate verification: Not trusted 的错误,是lftp检测到服务器证书不被信任(自签名或 CA 不被本机信任),所以阻止操作。在内网环境 时,可以考虑临时忽略证书验证并在交互模式里执行对应指令。

    功能 命令示例 说明
    忽略证书验证(自签名/内网可用) set ssl:verify-certificate no 防止 FTPS/SFTP 报"不被信任证书"
    被动模式(FTP,推荐) set ftp:passive-mode on 避免 NAT/防火墙问题
    主动模式(FTP) set ftp:passive-mode off 有特殊需求时使用
  6. lftp工具同样提供了全局重试和超时设置,可以通过set命令在交互模式中配置。

    bash 复制代码
    # 设置连接超时(秒)
    set net:timeout 20
    
    # 设置重试次数
    set net:max-retries 3
    
    # 设置重试间隔(秒)
    set net:reconnect-interval-base 5
  7. 如果需要操作本地内容而不是远程,则需要在指令前加 ! 前缀。

    功能 命令示例 说明
    清屏 !clear 清空终端屏幕
    查看本地目录 !ls 显示本地文件
    查看本地路径 !pwd 显示本地路径
    执行任意本地命令 !<command> !echo hello

    记住:! → 宿主机操作,不加 → 远程操作

三、自动化登录和文件传输

  1. 如果不想每次登录都输入用户名和密码,那么可以在home目录创建文件~/.netrc并添加如下内容,其中,多台机器可以通过空行分隔 ,但是 不支持任何形式的注释。任何不被识别的字符序列,包括以 # 开头的行,都会被解析器(如 lftp、curl 或 ftp 客户端)视为无效的标记或数据,这可能导致解析错误。

    bash 复制代码
    machine <远程主机名或IP>
    login <用户名>
    password <密码>
    
    machine <远程主机名或IP>
    login <用户名>
    password <密码>
  2. 由于.netrc文件包含明文密码,系统对其安全性要求极高。如果权限设置不正确,lftp会出于安全考虑直接忽略该文件。一般将权限设置为 600(仅允许所有者读写)。

    bash 复制代码
    chmod 600 ~/.netrc
  3. 连接时lftp会自动读取.netrc文件中的用户名和密码,例如:

    bash 复制代码
    lftp 192.168.1.100
  4. 自动化上传/下载,可以使用多行输入重定向语法,将两个 EOF 之间的多行文本,作为标准输入传递给前面的命令。其实等价于登录之后,手动执行每条指令。这部分内容也可以放在脚本中执行。

    bash 复制代码
    lftp 192.168.1.100 <<EOF
    set ssl:verify-certificate no
    mirror -R --continue /local/dir /remote/dir
    bye
    EOF

小结

上述内容均来自个人实践,仅供参考,如有其他问题欢迎在评论区讨论,谢谢!!

相关推荐
云动雨颤11 小时前
访问宝塔面板安全入口404?SSH命令轻松解决
linux·运维·安全
NPE~11 小时前
[Linux命令分享]日志查看 — — less
linux·运维·less·常用命令·日志查看
大锦终13 小时前
【Linux】网络层与数据链路层中重点介绍
linux·运维·服务器·网络
lht63193561213 小时前
从Windows通过XRDP远程访问和控制银河麒麟 v10服务器
linux·运维·服务器·windows
3DVisionary14 小时前
从手动到智能:XTOM-STATION自动化检测中心在复杂曲面零件全尺寸检测中的应用
运维·自动化·自动驾驶·工业自动化·质量控制·自动化3d测量·复杂零件检测
阿豪学编程14 小时前
环境变量与程序地址空间
linux·运维·windows
佐杰15 小时前
什么是DevOps
运维·devops
CaracalTiger15 小时前
本地部署 Stable Diffusion3.5!cpolar让远程访问很简单!
java·linux·运维·开发语言·python·微信·stable diffusion
梁萌15 小时前
linux中使用docker安装MySQL
linux·运维·docker·容器·mysql安装
文言一心16 小时前
SenseVoice 离线部署指南(Xinference Docker v1.12)
运维·docker·ai·容器