SSH(Secure Shell)是 Linux 系统中广泛使用的远程连接和管理工具,它以安全性高、操作灵活著称。
一、SSH 的核心作用
加密通信
所有传输数据(包括密码)均通过加密通道传输,避免被中间人窃听,相比 Telnet、FTP 等明文协议更安全。远程登录与命令执行
通过ssh user@hostname
登录远程服务器,或直接执行单条命令(如ssh user@host "ls /tmp"
)。文件传输
配合scp
或sftp
实现加密的文件传输:
二、安装与基础配置
安装 SSH
大多数 Linux 发行版默认安装 OpenSSH 服务端(sshd
)和客户端(ssh
)。若无,可通过包管理器安装:启动与检查服务
默认配置路径
- 服务端配置:
/etc/ssh/sshd_config
- 客户端配置:
/etc/ssh/ssh_config
或用户目录的~/.ssh/config
- 服务端配置:
三、安全加固建议
禁用密码登录,使用密钥认证
在
config
中修改:在
config
中修改:修改默认端口(22)
1
Port 2222 # 避免自动化攻击
需同步更新防火墙规则:
1
sudo ufw allow 2222/tcp
限制 root 登录
1
PermitRootLogin no
启用 Fail2Ban
自动封禁多次登录失败的 IP,防止暴力破解。
四、高级功能
端口转发(隧道)
代理跳板(Jump Host)
通过中转服务器连接内网主机:1
ssh -J user@jump_host user@internal_host
长连接保持
在~/.ssh/config
中配置避免连接超时:
五、常见问题排查
连接被拒绝(Connection Refused)
- 检查
sshd
服务是否运行:systemctl status sshd
- 确认端口是否开放:
sudo ss -tulnp | grep sshd
- 检查
认证失败(Permission Denied)
- 确认公钥已正确上传到
~/.ssh/authorized_keys
- 检查文件权限:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
- 确认公钥已正确上传到
连接超时
- 检查防火墙或安全组是否放行 SSH 端口
- 使用
-v
参数查看详细日志:ssh -v user@host
六、替代工具
- Mosh:基于 UDP,适合网络不稳定的环境(如移动设备)。
- Telnet:明文协议,仅建议用于测试环境。
- Web 控制台:如云服务商提供的网页终端(AWS EC2、阿里云等)。
通过合理配置,SSH 可以成为既安全又高效的远程管理工具。建议定期更新 OpenSSH 版本以修复潜在漏洞,并遵循最小权限原则分配用户访问权限。