前期准备与环境检查
- 确认网络连通性:确保宿主机与虚拟机之间的网络配置正确(如桥接模式或NAT模式),可通过
ping <虚拟机IP>
测试基础通信是否正常,若使用动态分配IP,建议改为静态IP以便后续稳定访问。 - 安装OpenSSH服务端组件:根据Linux发行版选择对应命令安装:Debian/Ubuntu执行
sudo apt update && sudo apt install openssh-server
;CentOS/RHEL运行sudo yum install openssh-server
后启动服务并设为开机自启(sudo systemctl start sshd && sudo systemctl enable sshd
);Fedora则使用sudo dnf install openssh-server
完成相同操作。 - 验证服务状态:通过
sudo systemctl status sshd
查看是否正常运行,若未启动可手动执行sudo systemctl start sshd
。
安全配置优化
- 修改默认配置文件:编辑
/etc/ssh/sshd_config
文件,建议调整以下参数提升安全性:将端口改为非标准值(如Port 2222
)降低被扫描风险;设置PermitRootLogin no
禁止root直接登录;通过AllowUsers yourusername
限制允许登录的用户账户,保存后需重启服务使生效(sudo systemctl restart sshd
)。 - 密钥认证替代密码登录:在本地终端生成RSA密钥对(
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
),默认存储于~/.ssh/id_rsa
(私钥)和id_rsa.pub
(公钥),使用ssh-copy-id -i ~/.ssh/id_rsa.pub yourusername@server_ip
将公钥推送至目标服务器,实现无密码登录,进一步禁用密码验证可在配置文件中添加PasswordAuthentication no
。 - 防火墙规则设置:针对不同防火墙工具配置放行策略:UFW(Ubuntu)执行
sudo ufw allow 22/tcp
或自定义端口;firewalld(CentOS/RHEL/Fedora)则运行sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reload
,若测试阶段可临时关闭防火墙排查问题(systemctl stop firewalld.service
)。
建立连接方式
方法类型 | 命令示例 | 适用场景 |
---|---|---|
基础命令行模式 | ssh yourusername@server_ip -p 2222 |
单次快速访问 |
配置文件简化路径 | 编辑~/.ssh/config 添加Host条目:Host myserver<br> HostName server_ip<br> User yourusername<br> Port 2222<br> IdentityFile ~/.ssh/id_rsa |
高频多服务器管理 |
图形化工具辅助 | Xshell等SSH客户端导入会话配置 | Windows跨平台可视化操作 |
高级安全增强方案
- 部署Fail2Ban防暴力破解:安装后编辑
/etc/fail2ban/jail.local
文件启用防护规则,自动封禁多次失败的登录IP段,支持Debian系(sudo apt install fail2ban
)、RedHat系(sudo yum install fail2ban
)及Fedora(sudo dnf install fail2ban
)。 - 多因素认证集成:安装Google Authenticator并配置PAM模块,在
/etc/pam.d/sshd
顶部添加认证指令,同时确保SSH配置文件中启用ChallengeResponseAuthentication yes
选项,该方案可显著提升账户安全性。 - Azure环境特殊处理:若虚拟机托管于Azure平台,建议启用Bastion主机服务实现安全隧道访问,通过Azure门户创建Bastion资源后,无需暴露公共IP即可建立SSH连接,支持Microsoft Entra ID、密钥保管库等多种身份验证方式。
常见问题排查
- 连接超时处理:优先检查目标端口是否被防火墙拦截,确认虚拟机内部SSH服务监听状态(
netstat -tuln | grep :22
),必要时重启服务,对于云平台实例,还需核实安全组入站规则是否包含指定端口。 - 主机指纹校验失败:首次连接时系统会提示服务器指纹信息,务必人工核对指纹一致性,可通过运行
ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'
获取准确指纹进行比对。
FAQs:
-
问:为什么已经按照教程操作却无法建立SSH连接?
答:可能原因包括:①防火墙未放行SSH端口;②SSH服务未正常运行(检查systemctl status sshd
);③网络路由配置错误导致物理机与虚拟机不通;④云平台安全组未授权对应端口,建议按顺序执行sudo systemctl restart sshd
→sudo ufw allow 22/tcp
→ping <虚拟机IP>
逐步排查。 -
问:如何避免每次输入密码的繁琐操作?
答:推荐使用SSH密钥对认证机制,先在本地生成密钥对,再将公钥上传至服务器(ssh-copy-id
命令或手动追加到~/.ssh/authorized_keys
文件),最后修改SSH配置文件禁用密码登录(设置PasswordAuthentication no
),完成上述步骤后即可实现免密登录
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/86888.html