shh(Secure Shell)是Linux系统下实现远程安全连接的核心协议,通过加密通道保障数据传输,是运维和开发人员必须掌握的基础技能。
shh linux 安装与基础配置
检查系统是否已安装shh
多数Linux发行版默认包含shh客户端,但服务端需单独安装,使用以下命令验证:
ssh -V显示版本号说明已安装。which ssh返回路径表示存在。- 若未安装,通过包管理器快速部署:
- Debian/Ubuntu:
sudo apt install openssh-client openssh-server - RHEL/CentOS:
sudo yum install openssh-clients openssh-server
- Debian/Ubuntu:
启动与启用shh服务
安装后需启动sshd守护进程并设置开机自启:
sudo systemctl start sshd立即启动。sudo systemctl enable sshd系统重启后自动运行。- 检查状态:
sudo systemctl status sshd,看到active (running)即正常。
配置shh连接参数
核心配置文件包括:
- 客户端:
/etc/ssh/ssh_config或用户级~/.ssh/config。 - 服务端:
/etc/ssh/sshd_config。
常用修改项: - 修改监听端口(默认22):
Port 2222。 - 允许root登录:
PermitRootLogin no(建议禁用)。 - 启用密钥认证:
PubkeyAuthentication yes。
修改后执行sudo systemctl restart sshd生效。
shh linux 密钥对登录的实操步骤
生成密钥对
- 推荐使用Ed25519算法:
。ssh-keygen -t ed25519
- 传统RSA:
ssh-keygen -t rsa -b 4096。 - 执行后生成私钥(
~/.ssh/id_ed25519)和公钥(~/.ssh/id_ed25519.pub)。 - 可设置密码短语(passphrase)加密私钥,进一步保护。
将公钥部署到远程服务器
- 自动复制:
ssh-copy-id user@remote_host。 - 手动方式:将公钥内容追加到远程服务器
~/.ssh/authorized_keys文件,每行一个。 - 权限严格要求:
- 本地
~/.ssh目录权限为 700。 - 远程
authorized_keys文件权限为 600。 - 远程
~/.ssh目录权限为 700。
- 本地
配置免密码登录
- 编辑服务端
sshd_config,确保以下参数:PubkeyAuthentication yesPasswordAuthentication no可禁用密码登录,提升安全性。
- 重启服务:
sudo systemctl restart sshd。 - 测试连接:
ssh user@remote_host,无需输入密码,仅需私钥密码短语(若设置)。
shh linux 安全加固与常见问题
修改默认端口降低扫描风险
- 编辑
/etc/ssh/sshd_config,将Port 22改为高位端口,如Port 2222。 - 调整防火墙规则:
sudo ufw allow 2222/tcp或firewall-cmd --add-port=2222/tcp。 - 客户端连接时指定端口:
ssh -p 2222 user@host。
限制登录用户与来源IP
- 在
sshd_config中添加:AllowUsers user1 user2仅允许指定用户。DenyUsers root禁止root直接登录。- 结合防火墙限制IP:
sudo ufw allow from 192.168.1.0/24 to any port 22。
- 禁用端口转发:
AllowTcpForwarding no,减少攻击面。
应对连接超时与断开
- 服务端配置保持活跃:
ClientAliveInterval 60(每60秒发送心跳)。ClientAliveCountMax 3(允许3次无响应后断开)。
- 客户端配置:
ServerAliveInterval 60防止连接断开。
解决常见连接错误
- Permission denied (publickey):检查密钥权限和配置,确认公钥已添加到 authorized_keys。
- Connection refused:服务端sshd未运行或端口被防火墙阻挡,用
telnet host port测试端口可达性。 - Host key verification failed:重装系统后需清理本地
~/.ssh/known_hosts中的旧记录。
shh linux 与Telnet的对比分析
| 对比维度 | shh | Telnet |
|---|---|---|
| 传输加密 | 全程加密,防止中间人攻击 | 明文传输,数据可被截获 |
| 认证方式 | 密钥、密码、证书等多种 | 仅密码(明文) |
| 端口转发 | 支持本地、远程、动态转发 | 无 |
| 文件传输 | 内置SFTP/SCP,整合文件操作 | 须额外工具(如FTP) |
| 适用场景 | 互联网、广域网、生产环境 | 仅限于完全可信的内部调试网络 |
行业共识认为,Telnet 已不再适用于现代网络环境,shh 是其替代标准。即使在内网,建议也使用shh,避免因网络监听导致凭据泄露。
shh linux 常见问题与解答
shh linux 连接时提示“Permission denied”怎么办?
通常由密钥配置或权限错误引起,检查服务器端 authorized_keys 权限是否为 600,.ssh 目录权限是否为 700,确认客户端使用的私钥路径正确,且服务器端公钥已添加,若使用密码登录,确认密码正确且服务端 PasswordAuthentication 设为 yes。
shh linux 如何修改默认端口?
编辑服务端配置文件 /etc/ssh/sshd_config,找到 Port 22 改为其他数字,如 2222,重启 sshd 服务,并调整防火墙允许新端口,客户端连接时用 -p 参数指定端口,ssh -p 2222 user@host。
shh linux 和 telnet 哪个更安全?
shh 提供加密传输和多种认证机制,安全性远高于 Telnet,Telnet 所有数据明文传输,极易被监听,行业共识认为,任何涉及远程管理的场景都应优先使用 shh,仅在完全隔离的调试环境才考虑 Telnet。
熟练运用shh linux的配置、密钥认证与安全加固,能让远程管理更高效、风险更低,从基础安装到高级防护,每一步都是运维人员保障系统安全的基石。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/510152.html



