上一篇
如何ssh到虚拟机linux服务器配置
- Linux
- 2025-07-19
- 9
安装Open S SH,生成密钥,配置网络,使用ssh 用户名@IP -p端口连接
以下是通过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 使配置生效。
- 编辑配置文件 /etc/ssh/sshd_config,关键参数建议:
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)需替换上述命令中的数字。
-
无法连接且端口正常
- 检查虚拟机是否安装SSH服务(sudo apt install openssh-server)。
-
密钥认证失败
- 确认虚拟机内 ~/.ssh 目录权限为 700,且 authorized_keys 文件权限为 600: chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
-
问:如何修改SSH默认端口号?
答:编辑 /etc/ssh/sshd_config 文件,将 Port 参数改为其他数字(如2222),重启SSH服务后需通过新端口连接,注意防火墙需同步开放新端口。
-
问:为什么SSH密钥认证后仍提示权限不足?
答:可能是密钥文件权限过宽,需确保私钥文件(如~/.ssh/id_rsa)权限为 600,公钥文件(~/.ssh/authorized_keys)权限为 600,且 .ssh 目录权限为 700
SELinux安全策略(可选)
若系统启用SELinux,需执行以下命令放行SSH:
sudo setsebool -P ssh_sysadm_login 1
常见问题与解决
相关问答FAQs
- 生成密钥对(本地终端执行): ssh-keygen -t rsa -b 4096 -C "your_comment"