以下是通过SSH连接到虚拟机Linux服务器并进行配置的详细指南,涵盖从环境准备到安全优化的全流程:
前置条件与网络配置
-
虚拟机网络模式选择
需根据实际需求设置虚拟机的网络连接方式,常见模式对比如下表:网络模式 特点 适用场景 桥接模式 虚拟机直接接入物理网络,拥有独立IP地址 需与主机在同一局域网内访问 NAT模式 通过主机共享网络,虚拟机IP与主机隔离 跨网段访问(需端口转发) 仅主机模式 虚拟机与主机内部通信,不接触外部网络 完全隔离的测试环境 注意:若需外部设备直接访问虚拟机,优先选择桥接模式。
-
获取虚拟机IP地址
- 在虚拟机内执行命令
ip addr show
或ifconfig
,记录网卡(如eth0)对应的IPv4地址。
- 在虚拟机内执行命令
SSH服务安装与配置
-
确认SSH服务状态
- 执行命令
systemctl status ssh
或service ssh status
,若未安装则会提示找不到服务。 - 若未安装,通过
sudo apt install openssh-server
(Debian/Ubuntu)或sudo yum install openssh-server
(CentOS)安装。
- 执行命令
-
配置SSH服务参数
- 编辑配置文件
/etc/ssh/sshd_config
,关键参数建议:Port 22
(可自定义非22端口提升安全性)PermitRootLogin no
(禁用root直接登录)PasswordAuthentication no
(强制使用密钥认证)
- 修改后执行
sudo systemctl restart ssh
使配置生效。
- 编辑配置文件
SSH连接操作
-
基本连接命令
ssh 用户名@服务器IP地址 -p 端口号
- 示例:
ssh ubuntu@192.168.1.100 -p 22
- 输入密码后即可登录(若启用密钥认证则无需密码)。
- 示例:
-
SSH密钥认证配置(推荐)
- 生成密钥对(本地终端执行):
ssh-keygen -t rsa -b 4096 -C "your_comment"
按提示保存文件(默认路径:~/.ssh/id_rsa)。
- 将公钥传输至虚拟机:
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@服务器IP
此操作将公钥写入虚拟机的
~/.ssh/authorized_keys
文件。 - 验证免密登录:直接执行
ssh 用户名@服务器IP
,若无需密码即成功。
- 生成密钥对(本地终端执行):
权限管理与安全优化
-
限制允许登录的用户
- 编辑虚拟机的
/etc/ssh/sshd_config
,添加:AllowUsers 用户名
- 重启SSH服务后,仅指定用户可通过SSH登录。
- 编辑虚拟机的
-
禁用密码认证
- 在
sshd_config
中设置PasswordAuthentication no
,防止暴力破解。
- 在
-
防火墙配置
- 若虚拟机启用防火墙(如
ufw
),需允许SSH端口:sudo ufw allow 22/tcp
- 自定义端口(如2222)需替换上述命令中的数字。
- 若虚拟机启用防火墙(如
SELinux安全策略(可选)
若系统启用SELinux,需执行以下命令放行SSH:
sudo setsebool -P ssh_sysadm_login 1
常见问题与解决
-
无法连接且端口正常
- 检查虚拟机是否安装SSH服务(
sudo apt install openssh-server
)。
- 检查虚拟机是否安装SSH服务(
-
密钥认证失败
- 确认虚拟机内
~/.ssh
目录权限为700
,且authorized_keys
文件权限为600
:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
- 确认虚拟机内
相关问答FAQs
-
问:如何修改SSH默认端口号?
答:编辑/etc/ssh/sshd_config
文件,将Port
参数改为其他数字(如2222),重启SSH服务后需通过新端口连接,注意防火墙需同步开放新端口。 -
问:为什么SSH密钥认证后仍提示权限不足?
答:可能是密钥文件权限过宽,需确保私钥文件(如~/.ssh/id_rsa
)权限为600
,公钥文件(~/.ssh/authorized_keys
)权限为600
,且.ssh
目录权限为700
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/69087.html