第15章 使用网络
所属:第五部分 网络 来源:Linux命令速查手册
本章介绍实际使用网络的命令:远程登录、文件传输、网站下载等。
15.1 安全登录到另一台计算机
ssh username@hostname
ssh -p 2222 username@hostname # 指定端口
ssh -X username@hostname # 启用X11转发(运行图形程序)SSH(Secure Shell)安全远程登录,加密传输,替代了不安全的telnet。
常用选项
| 选项 | 功能 |
|---|---|
-p 端口 | 指定SSH端口 |
-l 用户 | 指定用户名 |
-X | 启用X11转发 |
-Y | 启用受信任的X11转发 |
-i 密钥文件 | 指定私钥文件 |
-v | 详细模式,调试连接问题 |
首次连接
第一次连接会提示验证主机指纹,确认后输入yes,该主机信息会保存到 ~/.ssh/known_hosts。
15.2 不用密码安全登录到另一台计算机
配置SSH密钥登录
步骤1:生成密钥对
ssh-keygen -t rsa -b 4096
ssh-keygen -t ed25519 # 更现代的算法一路回车即可,会生成:
- 私钥:
~/.ssh/id_rsa(保密,不能泄露) - 公钥:
~/.ssh/id_rsa.pub(可以分发)
步骤2:把公钥传到服务器
ssh-copy-id username@hostname自动把公钥追加到服务器的 ~/.ssh/authorized_keys。
手动方式:
cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"步骤3:测试免密登录
ssh username@hostname不需要输入密码就登录成功。
密钥登录比密码更安全,强烈建议配置。还可以配合ssh-agent免输入密钥密码。
15.3 在计算机之间安全地传输文件
sftp username@hostnameSFTP(SSH File Transfer Protocol),基于SSH的安全文件传输,类似FTP的交互式客户端。
常用sftp命令
| 命令 | 功能 |
|---|---|
ls / lls | 查看远程/本地目录 |
cd / lcd | 切换远程/本地目录 |
get 文件 | 下载文件 |
put 文件 | 上传文件 |
mget *.txt | 批量下载 |
mput *.txt | 批量上传 |
pwd / lpwd | 显示远程/本地路径 |
quit / exit | 退出 |
15.4 在主机之间安全复制文件
# 本地 → 远程
scp file.txt username@hostname:/path/to/destination/
# 远程 → 本地
scp username@hostname:/path/to/file.txt ./
# 指定端口
scp -P 2222 file.txt user@host:/path/
# 递归复制目录
scp -r directory/ user@host:/path/SCP(Secure Copy),基于SSH的一键复制,简单直接。
注意端口参数是大写
-P,和ssh的小写-p不一样。
15.5 安全传输和备份文件
rsync -av source/ username@hostname:/destination/
rsync -avz --delete source/ destination/rsync 是增量同步工具,只传输变化的部分,效率极高,是备份和同步的首选。
常用选项
| 选项 | 功能 |
|---|---|
-a | 归档模式(保留权限、时间、所有者、软链接等) |
-v | 详细输出 |
-z | 传输时压缩 |
--delete | 删除目标端多余的文件(保持完全一致) |
-n / --dry-run | 试运行,不实际修改,先看看会做什么 |
-r | 递归(-a已经包含了) |
-P | 断点续传 + 显示进度 |
-e ssh | 指定通过SSH传输(默认就是) |
本地同步
rsync -av /data/ /backup/data/远程同步
# 推送到远程
rsync -avz /local/path/ user@host:/remote/path/
# 从远程拉取
rsync -avz user@host:/remote/path/ /local/path/注意末尾斜杠
source/(有斜杠)= 把source里面的内容同步过去source(无斜杠)= 把source目录本身同步过去
末尾的斜杠很重要!搞错了可能多套一层目录。
典型备份脚本
rsync -avz --delete \
-e "ssh -p 2222" \
/home/user/data/ \
backup@server:/backup/data/15.6 非交互式地下载文件
wget
wget http://example.com/file.zip
wget -O newname.zip http://example.com/file.zip # 指定保存文件名
wget -c http://example.com/file.zip # 断点续传
wget -b http://example.com/bigfile.iso # 后台下载wget 是最常用的命令行下载工具。
wget 常用选项
| 选项 | 功能 |
|---|---|
-O 文件 | 指定输出文件名 |
-c | 断点续传 |
-b | 后台下载 |
-q | 安静模式,不输出 |
--limit-rate=100k | 限速下载 |
--user=xxx --password=yyy | HTTP认证 |
-i 文件 | 从文件读取URL批量下载 |
curl
curl -O http://example.com/file.zip
curl -o newname.zip http://example.com/file.zip
curl http://example.com/api # 输出到屏幕(不保存)curl 功能更强大,支持更多协议,常用于API测试。
wget vs curl
| 特点 | wget | curl |
|---|---|---|
| 递归下载 | ✅ 强 | 弱 |
| 断点续传 | ✅ -c | ✅ -C - |
| 协议支持 | HTTP/FTP | 极多(HTTP/FTP/SFTP/SMTP等) |
| API测试 | 一般 | ✅ 强大 |
| 上传文件 | 一般 | ✅ 方便 |
简单下载用wget,复杂操作/API测试用curl。
15.7 非交互式地下载整个网站
wget -r -np -k http://example.com/镜像整个网站,离线浏览。
常用选项
| 选项 | 功能 |
|---|---|
-r | 递归下载 |
-np | 不向上追溯到父目录(no parent) |
-k | 转换链接为本地相对路径 |
-p | 下载页面所需的所有资源(图片、CSS等) |
-l N | 递归深度N层 |
-w 秒 | 每次请求间隔,避免给服务器压力 |
完整镜像示例
wget -r -np -k -p -l 5 -w 2 http://example.com/15.8 顺序下载多个文件和因特网资源
wget -i urls.txt批量下载URL列表,每行一个URL。
curl 批量下载
# 通配符下载
curl -O http://example.com/img[1-100].jpg
# 字母序列
curl -O http://example.com/file[a-z].txt15.9 小结
网络传输工具选择
| 场景 | 推荐工具 |
|---|---|
| 远程登录服务器 | ssh |
| 简单传几个文件 | scp |
| 交互式文件传输 | sftp |
| 同步/备份大量文件 | rsync |
| 下载单个文件 | wget / curl |
| 整站下载/镜像 | wget -r |
| API测试/复杂HTTP操作 | curl |
SSH全家桶
| 命令 | 用途 |
|---|---|
ssh | 远程登录 |
scp | 远程复制文件 |
sftp | FTP式文件传输 |
ssh-keygen | 生成密钥对 |
ssh-copy-id | 部署公钥 |
rsync -e ssh | 通过SSH同步 |
ssh、scp、rsync、wget/curl 是网络文件传输的四大工具,日常使用频率极高。