从零部署OpenEuler与SSH互信:构建安全高效的远程管理环境
1. 虚拟机安装OpenEuler系统全攻略第一次接触OpenEuler时我也被这个国产操作系统的流畅体验惊艳到了。相比其他Linux发行版它在安全性、性能优化方面确实有独到之处。下面我就用最详细的方式带大家完成从零安装的全过程。先说说准备工作。你需要准备一台性能还说得过去的电脑4核8G内存起步比较稳妥VMware Workstation Pro 16我用的是17版本实测兼容性最好从官网下载的openEuler-22.03-LTS-SP2-x86_64-dvd.iso镜像文件安装时有个小技巧建议把虚拟机文件放在SSD硬盘上。我试过机械硬盘安装速度能差出3倍不止。具体操作步骤如下打开VMware点击创建新的虚拟机选择典型配置点击下一步关键来了一定要选稍后安装操作系统别选那个自动检测的选项操作系统类型选择Linux版本选其他Linux 5.x内核64位给虚拟机取个你喜欢的名字比如my_openEuler磁盘空间建议设置32GB选择将虚拟磁盘存储为单个文件硬件配置这块我踩过坑。刚开始给2核4G内存编译软件时经常卡死。后来发现OpenEuler对资源要求不低推荐配置内存4GB起步跑桌面环境的话建议8GBCPU2核是最低要求有条件给4核显卡一定要去掉加速3D图形选项否则可能黑屏安装镜像的选择也有讲究。第一次我选了最小化安装结果连ifconfig命令都用不了。建议新手选择Server with GUI模式既不会太臃肿又能保证常用工具齐全。2. 系统初始化与网络配置安装完成后首次启动有几个必须做的配置分区方案对后续使用影响很大。我的经验是/boot分区给1GB500MB有时候不够内核更新用swap分区给物理内存的1.5倍比如8G内存给12G swap/根分区用剩余所有空间网络配置是第一个容易卡住的地方。很多同学发现网卡不识别这是因为默认没开启网络连接。解决方法很简单进入网络和主机名设置找到你的网卡一般是ens33或eth0把开关从关闭拨到打开root密码设置要注意强度。虽然示例用了OPENlab123但生产环境一定要用复杂密码。我习惯用大小写字母数字特殊符号的组合比如OpenEuler2023!。创建普通用户这个步骤千万别跳过。直接用root操作风险太高建议用户名用英文小写比如developer加入wheel组方便sudo提权密码也要足够复杂3. SSH服务深度解析说到远程管理SSH绝对是Linux系统的命脉。先科普下SSH的几种认证方式密码认证最基础但也最危险容易被暴力破解密钥认证安全性高推荐使用证书认证企业级方案配置复杂但最安全密钥交换的过程很有意思。它采用了挑战-响应机制客户端用私钥解密服务端发来的随机数双方用这个随机数生成会话密钥之后的通信都用这个临时密钥加密这种设计有两大优势即使密钥被截获也只能解密当次会话前向安全性有保障破解一个会话不影响其他会话实际工作中我遇到最多的SSH问题有两个权限问题.ssh目录权限必须是700authorized_keys文件必须是600SELinux干扰如果配置正确但连不上可以试试setenforce 0临时关闭SELinux4. 双机SSH互信配置实战现在进入重头戏配置两台OpenEuler主机之间的SSH免密登录。假设我们有两台机器主机A192.168.1.100作为客户端主机B192.168.1.101作为服务端4.1 密钥对生成在主机A上执行ssh-keygen -t ed25519 -a 100这里有几个要点-t指定密钥类型ed25519比RSA更安全高效-a指定迭代次数增强密钥强度执行后会让你输入保存位置和密码短语直接回车用默认值就行检查生成的密钥ls -l ~/.ssh/应该能看到id_ed25519私钥和id_ed25519.pub公钥两个文件。4.2 公钥分发把主机A的公钥传到主机Bssh-copy-id -i ~/.ssh/id_ed25519.pub root192.168.1.101这个命令会自动登录主机B把公钥追加到~/.ssh/authorized_keys文件设置正确的文件权限第一次连接时会提示确认主机指纹输入yes继续。然后输入主机B的root密码完成验证。4.3 连接测试现在试试免密登录ssh root192.168.1.101如果配置正确应该能直接登录不需要密码。4.4 反向配置同样的步骤在主机B上执行一遍实现双向免密登录在主机B生成密钥对把主机B的公钥传到主机A测试从主机B登录主机A5. 安全加固与高级配置基础配置完成后还需要做些安全加固修改SSH默认端口能减少90%的自动化攻击编辑/etc/ssh/sshd_config找到#Port 22去掉注释改成其他端口比如2222重启SSH服务systemctl restart sshd禁用root登录也很重要同样在sshd_config中设置PermitRootLogin no这样攻击者即使有密码也无法直接登录rootfail2ban是个实用的防暴力破解工具dnf install fail2ban -y systemctl enable --now fail2ban它会自动封禁多次尝试失败的IP地址。对于需要更高安全性的场景可以配置双向证书认证启用多因素认证设置IP白名单6. 常见问题排查配置过程中难免会遇到各种问题分享几个我踩过的坑问题1ssh-copy-id提示Permission denied检查目标机器的ssh服务是否正常运行确认用户名和密码正确看看目标机器的/etc/hosts.allow和/etc/hosts.deny配置问题2能连接但还是要密码检查authorized_keys文件权限必须是600确认.ssh目录权限是700查看/var/log/secure日志找线索问题3连接超时先用ping测试网络连通性用telnet测试端口是否开放检查防火墙规则iptables -nL问题4ssh-copy-id卡住不动可能是DNS解析问题试试用IP地址代替主机名检查~/.ssh/config是否有特殊配置加上-v参数看详细输出7. 自动化运维扩展掌握了基础配置后可以进一步实现自动化管理批量部署密钥可以用ansible- hosts: all tasks: - name: Add SSH key ansible.posix.authorized_key: user: root state: present key: {{ lookup(file, /root/.ssh/id_ed25519.pub) }}配置同步可以用rsyncSSHrsync -avz -e ssh -p 2222 /etc/nginx/ root192.168.1.101:/etc/nginx/远程执行命令ssh -p 2222 root192.168.1.101 dnf update -y reboot对于多主机环境建议使用SSH config文件简化管理。在~/.ssh/config中添加Host server1 HostName 192.168.1.100 Port 2222 User root IdentityFile ~/.ssh/id_ed25519之后就可以直接用ssh server1连接了。