ssh远程连接配置与管理核心是服务运行、网络通畅、认证可用:需确认sshd服务active并监听正确端口,放行防火墙及云安全组端口,合理配置sshd_config禁root密码登录、启用公钥认证、限制用户等,并通过ssh-keygen与ssh-copy-id实现免密登录。

Linux 服务器 SSH 远程连接配置与管理,核心是“服务端配得稳、客户端连得准、安全控得住”。不是堆参数,而是理清三件事:SSH 服务是否运行并监听正确端口、网络路径是否通(含防火墙)、认证方式是否可用(密码或密钥)。下面分四块说清楚。
确认并启动 SSH 服务
大多数主流发行版(Ubuntu/CentOS/Debian)默认已安装 openssh-server,但未必启用。先检查状态:
- 执行
systemctl status sshd(Ubuntu/Debian)或systemctl status sshd(CentOS/RHEL),看到active (running)才算正常; - 若未运行,用
sudo systemctl start sshd启动,并加开机自启:sudo systemctl enable sshd; - 验证监听端口:
sudo ss -tlnp | grep :22(或netstat -tlnp | grep ssh),确认有:22或你自定义的端口在 LISTEN 状态; - 如提示命令不存在,先安装服务端:Ubuntu/Debian 执行
sudo apt install openssh-server,CentOS/RHEL 执行sudo yum install openssh-server或sudo dnf install openssh-server。
检查网络与防火墙通路
服务跑着,不代表能连上——中间可能被防火墙或网络策略拦住:
- 查本机 IP:
ip a或hostname -I,拿到类似192.168.1.100或10.0.2.15的内网地址; - 确保目标端口放行:Ubuntu/Debian 默认用
ufw,运行sudo ufw allow 22(或你改过的端口);CentOS/RHEL 用firewalld:sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reload; - 如果是云服务器(阿里云/腾讯云等),还需登录控制台,在安全组里手动放通对应端口;
- 跨网段或外网访问时,若服务器无公网 IP,需借助 NAT 映射工具(如 nat123、frp)做内网穿透,此时客户端连接的是映射后的公网地址和端口。
修改关键安全配置(/etc/ssh/sshd_config)
编辑 /etc/ssh/sshd_config 前,先备份:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak。常用且推荐调整的几项:
-
禁用 root 密码登录:设
PermitRootLogin no,避免暴力破解高危账户; -
启用公钥认证:确保
PubkeyAuthentication yes,这是免密登录和提升安全的基础; -
指定监听地址与端口:如只允许内网访问,设
ListenAddress 192.168.1.0/24或具体 IP;改端口可降低扫描风险,如Port 2222,改完记得同步更新防火墙规则; -
限制登录用户:用
AllowUsers user1 user2明确放行名单,比DenyUsers更可控; -
设置会话超时:加
ClientAliveInterval 60和ClientAliveCountMax 3,防止闲置连接长期挂起。
改完必须重载服务:sudo systemctl restart sshd;建议先用 sudo sshd -t 检查配置语法是否正确,避免重启失败锁死自己。
客户端连接与免密登录实操
连接本身很简单,但细节决定成败:
- Windows 用户可用 Xshell、MobaXterm 或 Windows Terminal 内置 OpenSSH;macOS/Linux 直接终端输入:
ssh username@192.168.1.100 -p 22; - 首次连接会提示确认服务器指纹,输入
yes即可(后续自动记录到~/.ssh/known_hosts); - 配置免密登录:本地生成密钥对
ssh-keygen -t ed25519 -C "your_email",再用ssh-copy-id -i ~/.ssh/id_ed25519.pub username@192.168.1.100推送公钥; - 若推送失败,手动将公钥内容追加到服务器的
~/.ssh/authorized_keys中,并确保权限正确:chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys。
不复杂,但每一步都有依赖关系——服务没起来,连不上;防火墙挡着,连不通;密钥权限不对,免密就失效。理清链条,一次到位。











