04. 网络通信:SSH、IP、端口与连通性
本节介绍 Linux 网络相关常用命令,包括 SSH 登录、密钥配置、IP 查询、端口查看和网络连通性测试。
1. SSH 登录
基本登录
bash
ssh username@hostname
ssh username@192.168.1.10示例:
bash
ssh alice@login.cluster.edu常用参数:
| 参数 | 说明 |
|---|---|
-p 端口 | 指定 SSH 端口,默认 22 |
-i 私钥路径 | 指定登录使用的私钥 |
-X | 开启 X11 转发,用于图形界面程序 |
-Y | 开启可信 X11 转发 |
-L | 本地端口转发 |
-N | 不执行远程命令,常与端口转发搭配 |
指定端口:
bash
ssh -p 2222 alice@example.com指定私钥:
bash
ssh -i ~/.ssh/id_rsa alice@example.com2. SSH 密钥设置
生成密钥:ssh-keygen
bash
ssh-keygen -t ed25519 -C "your_email@example.com"常用参数:
| 参数 | 说明 |
|---|---|
-t ed25519 | 使用 Ed25519 密钥算法,现代系统推荐 |
-t rsa -b 4096 | 使用 RSA 4096 位密钥 |
-C | 添加注释,常用邮箱 |
-f | 指定密钥文件路径 |
生成后常见文件:
| 文件 | 说明 |
|---|---|
~/.ssh/id_ed25519 | 私钥,不要泄露 |
~/.ssh/id_ed25519.pub | 公钥,可以放到服务器 |
上传公钥:ssh-copy-id
bash
ssh-copy-id alice@example.com
ssh-copy-id -i ~/.ssh/id_ed25519.pub alice@example.com如果没有 ssh-copy-id,可以手动复制公钥内容到服务器的:
bash
~/.ssh/authorized_keysSSH 配置文件
编辑:
bash
vim ~/.ssh/config示例:
text
Host cluster
HostName login.cluster.edu
User alice
Port 22
IdentityFile ~/.ssh/id_ed25519之后可以直接登录:
bash
ssh cluster常见配置项:
| 配置项 | 说明 |
|---|---|
Host | 自定义别名 |
HostName | 真实主机名或 IP |
User | 登录用户名 |
Port | SSH 端口 |
IdentityFile | 私钥路径 |
3. 文件传输
scp
通过 SSH 复制文件。
bash
scp local.txt alice@example.com:/home/alice/
scp alice@example.com:/home/alice/result.txt .
scp -r data alice@example.com:/home/alice/常用参数:
| 参数 | 说明 |
|---|---|
-r | 递归复制目录 |
-P | 指定 SSH 端口,注意是大写 |
-i | 指定私钥 |
rsync
更适合传输大量文件或断点续传。
bash
rsync -av data/ alice@example.com:/home/alice/data/
rsync -av --progress data/ alice@example.com:/home/alice/data/常用参数:
| 参数 | 说明 |
|---|---|
-a | 归档模式,保留属性并递归 |
-v | 显示详细过程 |
--progress | 显示传输进度 |
-z | 压缩传输 |
注意:
bash
rsync -av data/ remote:/path/data/
rsync -av data remote:/path/data/ 表示复制目录内容,data 表示复制整个目录。
4. IP 地址查看与配置
ip addr
查看网络接口和 IP 地址。
bash
ip addr
ip a
ip addr show eth0常见字段:
| 字段 | 说明 |
|---|---|
lo | 本地回环接口 |
eth0、ens33 | 有线网卡名称 |
wlan0 | 无线网卡名称 |
inet | IPv4 地址 |
inet6 | IPv6 地址 |
ip route
查看路由和默认网关。
bash
ip route
ip route show默认网关通常显示为:
text
default via 192.168.1.1 dev eth0临时设置 IP
需要管理员权限,重启后通常失效。
bash
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip link set eth0 up
sudo ip route add default via 192.168.1.1说明:
| 命令 | 说明 |
|---|---|
ip addr add | 添加 IP 地址 |
ip link set up | 启用网卡 |
ip route add default | 添加默认网关 |
永久配置方式依发行版不同而不同,如 Ubuntu 常用 Netplan,服务器环境应遵循管理员或文档要求。
5. 连通性测试
ping
测试是否能连通某主机。
bash
ping example.com
ping -c 4 example.com
ping 8.8.8.8常用参数:
| 参数 | 说明 |
|---|---|
-c 数字 | 发送指定次数后停止 |
-i 秒数 | 设置发送间隔 |
说明:有些服务器禁用 ICMP,因此 ping 不通不一定代表服务不可用。
traceroute 或 tracepath
查看到目标主机经过的网络路径。
bash
traceroute example.com
tracepath example.com如果没有安装 traceroute,可以尝试 tracepath。
curl
访问 URL,常用于测试 HTTP 服务。
bash
curl https://example.com
curl -I https://example.com
curl -L https://example.com常用参数:
| 参数 | 说明 |
|---|---|
-I | 只查看响应头 |
-L | 跟随重定向 |
-o 文件名 | 保存到文件 |
-v | 显示详细连接过程 |
wget
下载文件。
bash
wget https://example.com/file.tar.gz
wget -O newname.tar.gz https://example.com/file.tar.gz常用参数:
| 参数 | 说明 |
|---|---|
-O | 指定保存文件名 |
-c | 断点续传 |
6. 端口与连接查看
ss
查看网络连接和监听端口。
bash
ss -tuln
ss -tulpn常用参数:
| 参数 | 说明 |
|---|---|
-t | TCP |
-u | UDP |
-l | 只看监听端口 |
-n | 不解析域名,显示数字端口 |
-p | 显示进程信息,可能需要 root |
netstat
较老的工具,有些系统默认未安装。
bash
netstat -tuln
netstat -tulpn新系统优先使用 ss。
7. DNS 查询
nslookup
bash
nslookup example.comdig
bash
dig example.com
dig example.com A
dig example.com MX常见记录:
| 类型 | 说明 |
|---|---|
A | IPv4 地址 |
AAAA | IPv6 地址 |
CNAME | 别名 |
MX | 邮件服务器 |
8. 常用 SSH 端口转发
本地端口转发
把远程服务器上的服务映射到本机端口。
bash
ssh -L 8888:localhost:8888 alice@example.com常用于访问远程 Jupyter Notebook。
后台转发:
bash
ssh -N -L 8888:localhost:8888 alice@example.com9. 网络排查顺序
bash
ip addr
ip route
ping -c 4 8.8.8.8
ping -c 4 example.com
curl -I https://example.com
ss -tuln思路:
| 检查项 | 说明 |
|---|---|
| 本机 IP | 是否拿到正确地址 |
| 默认网关 | 是否有出网路由 |
| ping IP | 判断基础网络是否通 |
| ping 域名 | 判断 DNS 是否正常 |
| curl | 判断目标 Web 服务是否可用 |
| ss | 判断本机服务是否监听 |