Skip to content

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.com

2. 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_keys

SSH 配置文件

编辑:

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登录用户名
PortSSH 端口
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本地回环接口
eth0ens33有线网卡名称
wlan0无线网卡名称
inetIPv4 地址
inet6IPv6 地址

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 不通不一定代表服务不可用。

traceroutetracepath

查看到目标主机经过的网络路径。

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

常用参数:

参数说明
-tTCP
-uUDP
-l只看监听端口
-n不解析域名,显示数字端口
-p显示进程信息,可能需要 root

netstat

较老的工具,有些系统默认未安装。

bash
netstat -tuln
netstat -tulpn

新系统优先使用 ss

7. DNS 查询

nslookup

bash
nslookup example.com

dig

bash
dig example.com
dig example.com A
dig example.com MX

常见记录:

类型说明
AIPv4 地址
AAAAIPv6 地址
CNAME别名
MX邮件服务器

8. 常用 SSH 端口转发

本地端口转发

把远程服务器上的服务映射到本机端口。

bash
ssh -L 8888:localhost:8888 alice@example.com

常用于访问远程 Jupyter Notebook。

后台转发:

bash
ssh -N -L 8888:localhost:8888 alice@example.com

9. 网络排查顺序

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判断本机服务是否监听