十、网络客户端工具curl, wget, ssh, scp, sftp, rsync
目录一、curl – 多功能网络传输工具1.1 基本概念1.2 常用选项与用法1.2.1 查看网页内容1.2.2 查看 HTTP 响应头不下载正文1.2.3 跟随重定向1.2.4 使用代理1.2.5 保存网页/文件到本地1.2.6 断点续传1.2.7 限速下载1.2.8 FTP 操作1.2.9 发送 POST 请求测试 API1.2.10 设置 User-Agent1.2.11 忽略证书校验HTTPS二、wget – 专业下载工具2.1 特点2.2 基本用法2.2.1 直接下载2.2.2 指定保存文件名或目录2.2.3 后台下载2.2.4 断点续传2.2.5 测试下载不实际保存2.2.6 限速2.2.7 递归下载整个网站2.2.8 从文件中批量下载2.2.9 设置代理三、SSH 远程连接与安全传输3.1 OpenSSH 套件组成3.2 基本远程登录3.3 基于密钥的免密登录3.3.1 生成密钥对3.3.2 将公钥传到远程服务器3.3.3 测试3.3.4 SSH 代理避免重复输入 passphrase3.4 SSH 服务器配置安全加固3.5 scp – 安全复制不推荐使用 rsync 替代3.6 sftp – 交互式安全文件传输3.7 SSH 端口转发隧道3.7.1 本地端口转发Local Forward3.7.2 远程端口转发Remote Forward3.7.3 动态端口转发SOCKS 代理四、rsync – 高效文件同步工具4.1 特点4.2 基本语法4.3 重要路径末尾斜杠的含义4.4 常用选项4.5 实战案例五、综合对比与选型建议六、排错与调试技巧适用系统RHEL 9 / CentOS Stream 9主要涉及curl,wget,ssh,scp,sftp,rsync涵盖curl、wget、SSH、scp、sftp、rsync以及 SSH 端口转发、密钥登录等高级内容。一、curl– 多功能网络传输工具1.1 基本概念全称Client URL (最小化自带)功能支持 HTTP/HTTPS/FTP/FTPS/TFTP 等协议可查看网页内容、下载/上传文件、测试接口等。特点命令行下工作支持代理、认证、Cookie、断点续传等。1.2 常用选项与用法1.2.1 查看网页内容curl http://www.baidu.com # 输出源码到终端默认不显示 HTTP 头1.2.2 查看 HTTP 响应头不下载正文curl -I http://www.baidu.com # 输出示例 # HTTP/1.1 200 OK # Server: Apache/2.4.57 # Content-Type: text/html常见状态码码含义200成功301永久重定向302临时重定向403无权限404未找到502网关错误503服务不可用1.2.3 跟随重定向curl -L http://tinyurl.com/xxx # 自动跟踪 Location 头1.2.4 使用代理curl -x 192.168.100.100:1080 http://www.linux.com # -x 指定代理服务器和端口1.2.5 保存网页/文件到本地选项说明示例-O保存为远程文件名curl -O http://example.com/file.tar.gz-o指定本地文件名/路径curl -o /opt/myfile.tar.gz http://example.com/file.tar.gz1.2.6 断点续传curl -C - -O http://example.com/bigfile.iso # -C - 表示自动检测已下载的偏移量1.2.7 限速下载curl --limit-rate 200k -O http://example.com/bigfile.iso1.2.8 FTP 操作下载需认证curl -u 用户名密码 ftp:www.xxx# 方式1使用 -u curl -O -u username:password ftp://example.com/file.jpg # 方式2URL 中包含凭据 curl -O ftp://username:passwordexample.com/file.jpg上传curl -T localfile.txt ftp://example.com/ --user username:password1.2.9 发送 POST 请求测试 APIcurl -X POST -d namezhangage25 http://example.com/api # -d 指定数据application/x-www-form-urlencoded1.2.10 设置 User-Agentcurl -A Mozilla/5.0 http://example.com1.2.11 忽略证书校验HTTPScurl -k https://self-signed.badssl.com二、wget– 专业下载工具2.1 特点支持 HTTP/HTTPS/FTP支持断点续传、后台下载、递归下载显示进度条信息更直观2.2 基本用法2.2.1 直接下载wget https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso2.2.2 指定保存文件名或目录# 改名 wget -O newname.iso http://example.com/file.iso # 指定目录目录必须已存在 wget -P /opt/ http://example.com/file.tar.gz2.2.3 后台下载wget -b http://example.com/bigfile.iso # 输出日志到 wget-log可用 tail -f wget-log 查看进度2.2.4 断点续传wget -c http://example.com/bigfile.iso2.2.5 测试下载不实际保存wget --spider http://example.com/file # 仅发送请求头检查文件是否存在2.2.6 限速wget --limit-rate500k http://example.com/bigfile.iso2.2.7 递归下载整个网站wget -r -l 5 -np -k http://example.com/docs/ # -r 递归 # -l 5 最多5层 # -np 不进入上级目录 # -k 转换链接为本地相对路径2.2.8 从文件中批量下载wget -i url_list.txt # url_list.txt 每行一个 URL2.2.9 设置代理# 编辑 /etc/wgetrc 或在命令行 wget -e use_proxyyes -e http_proxy192.168.1.100:8080 http://example.com三、SSH 远程连接与安全传输默认保存路径~/.ssh/id_rsa私钥和 ~/.ssh/id_rsa.pub公钥3.1 OpenSSH 套件组成软件包作用openssh-server服务端sshd 守护进程openssh-clients客户端ssh, scp, sftp 等openssh公共文件与帮助文档3.2 基本远程登录ssh userremote_host # 默认端口 22 # 首次连接会提示保存 host key输入 yes指定端口ssh -p 2222 userremote_host远程执行命令非交互ssh userremote_host ls -l /tmpX11 转发图形程序ssh -X userremote_host # 然后运行图形程序如 gedit界面显示在本地3.3 基于密钥的免密登录3.3.1 生成密钥对ssh-keygen -t rsa -b 4096 -C your_emailexample.com # 默认保存路径~/.ssh/id_rsa私钥和 ~/.ssh/id_rsa.pub公钥 # 可设置 passphrase空密码则完全免密3.3.2 将公钥传到远程服务器# 自动方式推荐 ssh-copy-id userremote_host # 手动方式 cat ~/.ssh/id_rsa.pub | ssh userremote_host mkdir -p ~/.ssh cat ~/.ssh/authorized_keys3.3.3 测试ssh userremote_host # 应不再提示密码3.3.4 SSH 代理避免重复输入 passphraseeval $(ssh-agent) ssh-add ~/.ssh/id_rsa # 输入一次 passphrase后续会话无需再输3.4 SSH 服务器配置安全加固配置文件/etc/ssh/sshd_config修改后执行systemctl restart sshd配置项推荐值作用Port2222非默认避免扫描攻击PermitRootLoginno禁止 root 直接登录PasswordAuthenticationno禁止密码登录仅允许密钥PubkeyAuthenticationyes启用密钥认证AllowUsersuser1 user2仅允许特定用户登录DenyUsersbaduser禁止某些用户AllowGroupssshusers仅允许特定组登录MaxAuthTries3最大认证尝试次数ClientAliveInterval300客户端空闲超时秒用户/组限制示例AllowUsers *192.168.1.* # 仅允许 192.168.1.0/24 网段的用户 AllowUsers zhangsan lisi # 只允许这两个用户登录3.5scp– 安全复制不推荐使用 rsync 替代RHEL9 中 SCP 存在安全漏洞官方建议使用sftp或rsync。# 上传本地文件到远程 scp localfile userremote:/path/ # 下载远程文件到本地 scp userremote:/path/file ./ # 复制目录-r scp -r /local/dir userremote:/remote/dir # 指定端口大写 P scp -P 2222 file userremote:/path/3.6sftp– 交互式安全文件传输sftp userremote_host # 进入交互界面类似 FTP 命令常用 sftp 命令命令作用ls列出远程目录lls列出本地目录cd切换远程目录lcd切换本地目录get file下载文件put file上传文件rm file删除远程文件mkdir创建远程目录exit或bye退出3.7 SSH 端口转发隧道3.7.1 本地端口转发Local Forward场景想访问远程主机 A 的服务如数据库但防火墙限制而你可以 SSH 到主机 B且 B 能访问 A 的该端口。格式ssh -L [本地地址:]本地端口:目标地址:目标端口 中转主机示例将本地的 1888 端口转发到远程 12.0.0.146 的 80 端口ssh -N -g -L 1888:12.0.0.146:80 12.0.0.146 # -N不执行远程命令仅转发 # -g允许其他主机连接本地 1888 端口否则只允许 127.0.0.1然后访问http://127.0.0.1:1888等同于访问http://12.0.0.146。3.7.2 远程端口转发Remote Forward场景想让远程服务器访问你本地的一个服务如在家办公让公司服务器能连你本地的 web。格式ssh -R 远程端口:本地地址:本地端口 中转主机示例ssh -R 9090:localhost:80 userremote_server这样在远程服务器上访问localhost:9090就转发到你本地的 80 端口。3.7.3 动态端口转发SOCKS 代理场景作为 SOCKS5 代理所有流量通过 SSH 隧道。格式ssh -D 本地端口 中转主机示例ssh -N -D 1080 userremote_server然后在浏览器中设置 SOCKS5 代理为127.0.0.1:1080所有流量都经过远程服务器。四、rsync– 高效文件同步工具4.1 特点支持本地和远程同步通过 SSH增量传输仅传送文件差异部分节省带宽保留文件属性权限、时间、属主等支持排除、删除多余文件等高级操作4.2 基本语法本地同步rsync [选项] 源路径 目标路径远程同步通过 SSH# 推送Push本地 → 远程 rsync [选项] /local/dir/ userremote:/remote/dir/ # 拉取Pull远程 → 本地 rsync [选项] userremote:/remote/dir/ /local/dir/4.3 重要路径末尾斜杠的含义写法含义rsync -a /etc /tmp将/etc目录本身复制到/tmp结果为/tmp/etcrsync -a /etc/ /tmp将/etc/目录内的所有内容复制到/tmp不包含etc目录本身4.4 常用选项选项说明-a归档模式递归、保留符号链接、权限、时间、属主、组、设备文件-v详细输出-z传输时压缩-ndry-run演习不实际传输显示将要执行的操作--delete删除目标端多余的文件使目标与源完全一致--exclude排除文件或目录可多次使用--include包含规则与 exclude 配合--progress显示传输进度-P等价于--partial --progress支持断点续传并显示进度-r递归-a已包含--existing仅更新目标端已存在的文件不新增文件--ignore-existing仅拷贝目标端不存在的文件--remove-source-files传输完成后删除源文件-R使用相对路径会在目标端创建完整的源路径结构4.5 实战案例案例1完整备份/etc到/backup保留目录结构rsync -a /etc /backup # 结果是 /backup/etc案例2将当前目录下所有.conf文件同步到远程并删除远程多余文件rsync -av --delete *.conf userremote:/remote/dir/案例3演习看看会做什么但不实际执行rsync -avn --delete /local/dir/ userremote:/remote/dir/案例4排除.git目录同步rsync -av --exclude.git /myproject/ userremote:/backup/project/案例5只更新目标端已经存在的文件不新增rsync -av --existing /src/ /dest/案例6通过 SSH 指定不同端口rsync -av -e ssh -p 2222 /local/dir/ userremote:/remote/dir/五、综合对比与选型建议工具主要用途优点缺点curl网页查看、API 测试、上传/下载功能全面支持多种协议下载大文件交互不友好wget文件下载支持后台、递归、断点续传上传功能弱ssh远程登录加密安全可隧道转发需配置服务端scp简单文件复制命令简单有安全漏洞RHEL9 不推荐sftp交互式文件管理安全支持目录操作不如 rsync 高效rsync增量备份/同步只传差异支持删除、排除语法稍复杂推荐下载大文件 →wget -b -c测试 HTTP 接口 →curl -I / -X POST日常远程操作 →ssh 密钥定期备份/同步 →rsync -av交互式文件上传下载 →sftp六、排错与调试技巧SSH 连接失败检查服务端sshd是否运行systemctl status sshd检查防火墙firewall-cmd --list-services确保 ssh 服务开放查看日志journalctl -u sshd -frsync 权限错误确保目标目录用户可写使用-e ssh -l user指定远程用户curl/wget 下载慢使用代理-x或-e use_proxyyes限速--limit-rate避免占满带宽端口转发不生效使用-g选项允许外部连接检查本地端口是否被占用netstat -tnlp | grep 端口号