文章目录
- 一、检查传输协议和端口
- [二、使用 lftp 工具传输文件](#二、使用 lftp 工具传输文件)
- 三、自动化登录和文件传输
- 小结
一、检查传输协议和端口
-
安装
nmap
,nmap
是一个非常通用的扫描器,可以跨越几乎所有 IP 网络环境使用,支持多平台、多协议,几乎能完成整个网络探测、诊断和安全审计的流程。bashsudo apt install nmap
方面 特点总结 详情说明 协议通用性 核心协议支持广泛 Nmap 使用原始 IP 数据包(Raw IP Packets)来工作,支持 TCP、UDP、ICMP 等所有主流网络协议,使其能够探测各种基于 IP 的网络服务。 环境通用性 适用于各种规模和类型网络 无论是扫描单个主机、内部局域网 (LAN) 还是跨越互联网的大型网络 (WAN),Nmap 都能胜任。它具备穿透(或规避)防火墙、路由器和入侵检测系统 (IDS) 的高级扫描技术。 系统通用性 支持主流操作系统 Nmap 软件本身是跨平台的,有适用于 Linux、Windows、macOS 以及各种 BSD 和 Unix 系统的版本,可以在几乎任何主机上执行扫描任务。 功能通用性 不仅仅是端口扫描 它的功能涵盖主机发现、端口状态识别、服务及版本探测、操作系统指纹识别和脚本扫描(NSE),使其成为网络管理员和安全审计人员的通用工具。 -
扫描目标 IP 地址,以发现主机是否在线,开放了哪些端口以及运行着什么服务,确保目标主机支持相关的传输协议。
bashnmap ip # 目标主机 ip
二、使用 lftp 工具传输文件
-
在 Linux 或 Unix 的终端环境下,通常选择
lftp
工具传输文件,尤其是在涉及到自动化、高可靠性、目录同步或性能优化的场景中。它的一大优势是操作统一,无论是ftp://
、ftps://
还是sftp://
,都是使用同一套lftp
命令(如 mirror, get, put),无需切换工具,这带来了极大的便利性。bashsudo apt install lftp
-
选择对应的协议(
ftp://
、ftps://
、sftp://
等),使用 URL 指定用户名登录(交互输入密码)。bashlftp ftp://username@host_ip
-
登录成功后,终端提示符变成如下格式。
bashlftp username@host_ip:~>
-
远程操作命令 (不加
!
前缀)功能 命令示例 说明 列出目录 ls
或ls -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个文件 -
安全与证书设置,如果提示类似 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
有特殊需求时使用 -
lftp
工具同样提供了全局重试和超时设置,可以通过set
命令在交互模式中配置。bash# 设置连接超时(秒) set net:timeout 20 # 设置重试次数 set net:max-retries 3 # 设置重试间隔(秒) set net:reconnect-interval-base 5
-
如果需要操作本地内容而不是远程,则需要在指令前加
!
前缀。功能 命令示例 说明 清屏 !clear
清空终端屏幕 查看本地目录 !ls
显示本地文件 查看本地路径 !pwd
显示本地路径 执行任意本地命令 !<command>
如 !echo hello
记住:加
!
→ 宿主机操作,不加 → 远程操作
三、自动化登录和文件传输
-
如果不想每次登录都输入用户名和密码,那么可以在
home
目录创建文件~/.netrc
并添加如下内容,其中,多台机器可以通过空行分隔 ,但是 不支持任何形式的注释。任何不被识别的字符序列,包括以#
开头的行,都会被解析器(如 lftp、curl 或 ftp 客户端)视为无效的标记或数据,这可能导致解析错误。bashmachine <远程主机名或IP> login <用户名> password <密码> machine <远程主机名或IP> login <用户名> password <密码>
-
由于
.netrc
文件包含明文密码,系统对其安全性要求极高。如果权限设置不正确,lftp
会出于安全考虑直接忽略该文件。一般将权限设置为 600(仅允许所有者读写)。bashchmod 600 ~/.netrc
-
连接时
lftp
会自动读取.netrc
文件中的用户名和密码,例如:bashlftp 192.168.1.100
-
自动化上传/下载,可以使用多行输入重定向语法,将两个 EOF 之间的多行文本,作为标准输入传递给前面的命令。其实等价于登录之后,手动执行每条指令。这部分内容也可以放在脚本中执行。
bashlftp 192.168.1.100 <<EOF set ssl:verify-certificate no mirror -R --continue /local/dir /remote/dir bye EOF
小结
上述内容均来自个人实践,仅供参考,如有其他问题欢迎在评论区讨论,谢谢!!