第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@hostname

SFTP(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=yyyHTTP认证
-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

特点wgetcurl
递归下载✅ 强
断点续传-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].txt

15.9 小结

网络传输工具选择

场景推荐工具
远程登录服务器ssh
简单传几个文件scp
交互式文件传输sftp
同步/备份大量文件rsync
下载单个文件wget / curl
整站下载/镜像wget -r
API测试/复杂HTTP操作curl

SSH全家桶

命令用途
ssh远程登录
scp远程复制文件
sftpFTP式文件传输
ssh-keygen生成密钥对
ssh-copy-id部署公钥
rsync -e ssh通过SSH同步

ssh、scp、rsync、wget/curl 是网络文件传输的四大工具,日常使用频率极高。


Linux Shell 网络 ssh scp rsync wget curl sftp 下载