Linux:这啥命令?这台服务器我说了算-SSH 远程连接——“人在家中坐,服务器听我说!”
第十三章:SSH 远程连接——“人在家中坐,服务器听我说!”
服务器放在机房,难道每改一行配置,都要坐高铁去敲键盘?当然不用。SSH 就是一条加密的远程命令通道,让你隔着网络操作 Linux。
本章以 Ubuntu / Debian 为例。准备两台机器:一台当服务器,一台当客户端;只有一台电脑的话,用虚拟机也行。
1. 服务器先把门打开
在服务器上安装并启动 SSH 服务:
sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh
systemctl status ssh
查看服务器的局域网 IP:
hostname -I
假设其中一个地址是 192.168.1.50,记下来。服务器上还可以查看 22 端口是否监听:
sudo ss -lntp | grep ':22'
SSH 默认使用 TCP 22 端口。看到监听不代表外部一定能连,防火墙和网络也得放行。
2. 第一次远程登录
在客户端终端输入(把用户名和 IP 换成自己的):
ssh alice@192.168.1.50
初次连接可能会询问是否信任主机指纹。先与服务器管理员或服务器端查到的指纹核对,不要闭眼输入 yes。
接着输入服务器上 alice 用户的密码,即可登录。密码输入时终端不显示星号,这是正常现象,不是键盘罢工。
登录后试试:
whoami
hostname
pwd
exit
exit 是退出远程会话,不是关机按钮。
如果 SSH 使用其他端口,例如 2222:
ssh -p 2222 alice@192.168.1.50
3. 密码总要输?让密钥上班
密码登录简单,但每天输入十几次,手指也想申请年假。更推荐 SSH 密钥认证。
在客户端生成密钥:
ssh-keygen -t ed25519 -C "linux-lab"
按提示保存,建议为私钥设置口令。一般会得到:
~/.ssh/id_ed25519:私钥,只能自己保管。~/.ssh/id_ed25519.pub:公钥,可以放到服务器。
从客户端把公钥安装到服务器:
ssh-copy-id alice@192.168.1.50
然后测试:
ssh alice@192.168.1.50
如果设置了私钥口令,仍可能需要输入私钥口令;这和服务器账户密码不是一回事。
切记:绝不发送或上传私钥。公钥可以给别人,私钥不能当群聊表情包乱转。
4. 给常用服务器起个外号
在客户端编辑 ~/.ssh/config:
Host mylab
HostName 192.168.1.50
User alice
Port 22
IdentityFile ~/.ssh/id_ed25519
以后直接:
ssh mylab
不用再背用户名和 IP。终于把“密码学仪式”变成了“一键回家”。
5. 传文件,不必再靠 U 盘
scp 可以通过 SSH 加密传输文件。以下命令都在客户端运行。
把本地文件传到服务器家目录:
scp demo.txt mylab:~/
把服务器文件下载到当前目录:
scp mylab:~/report.txt ./
复制整个目录:
scp -r ./project mylab:~/
注意:谁在冒号左边,谁就是来源;别把备份方向写反,复制完才发现自己在表演“数据搬家魔术”。
6. 连不上?按症状抓嫌疑人
| 报错或现象 | 优先检查 |
|---|---|
Connection refused |
SSH 服务没启动、端口写错或没监听 |
Connection timed out |
IP、路由、防火墙、云安全组 |
Permission denied |
用户名、密码、公钥和权限 |
REMOTE HOST IDENTIFICATION HAS CHANGED |
先核实主机是否更换或有安全风险,不要直接忽略警告 |
常用排查命令:
# 客户端:输出详细连接信息
ssh -v mylab
# 服务器:确认服务、监听与日志
systemctl status ssh
sudo ss -lntp | grep ':22'
sudo journalctl -u ssh -n 30
Ubuntu 启用了 UFW 时,服务器可以检查:
sudo ufw status
如需放行默认 SSH 端口,在启用防火墙之前确认规则:
sudo ufw allow OpenSSH
云服务器还可能需要在云平台安全组放行对应端口;尽量限制为自己的来源 IP,而不是向全世界敞开大门。
7. 安全提醒:别把自己锁门外
密钥登录成功后,你可能想关闭密码登录、禁止 root 远程登录。方向没错,但先别在唯一的 SSH 会话里贸然修改配置。
正确顺序是:先确认普通用户可以 sudo、密钥可用,再开第二个终端测试登录,并确保有控制台等恢复入口,最后才调整 sshd_config。改配置前可执行 sudo sshd -t 检查语法。
8. 本章实战:远程打卡
- 在虚拟机安装并启动 SSH 服务。
- 从宿主机用
ssh 用户名@IP登录。 - 生成密钥并用
ssh-copy-id配置登录。 - 在
~/.ssh/config中设置mylab。 - 在客户端创建
demo.txt,用scp上传。 - 登录服务器运行
cat ~/demo.txt,确认内容。 - 使用
ssh -v mylab观察一次认证过程。
能完成这套流程,你就已经具备了远程管理 Linux 的基本功。
本章口诀:连服务器用
ssh,免密码靠密钥,传文件找scp,出故障先看日志。
下一章:《第十四章:防火墙与安全加固——“门是装好了,怎么谁都能进?”》
- 点赞
- 收藏
- 关注作者
评论(0)