上一篇                     
               
			  如何ssh到虚拟机linux
- Linux
- 2025-07-19
- 2771
 通过SSH连接到Linux虚拟机需先确保
 虚拟机已启动
 SSH服务,获取其IP地址,在本地终端或SSH客户端输入
 
 
ssh 用户名@IP,输入密码后即可登录。
前期准备
虚拟机网络配置
-  网络模式选择: 
 虚拟机需配置为与物理机同网段的网络模式(如桥接模式或NAT模式),若为NAT模式,需通过端口转发或固定IP分配确保可访问性。- 桥接模式:虚拟机直接加入物理网络,需分配与物理机同网段的IP(如物理机IP为168.1.X,虚拟机设为168.1.Y)。
- NAT模式:需依赖虚拟NAT网关,可通过ifconfig或ip addr查看虚拟机IP(通常为0.2.X或168.X.X)。
 
- 桥接模式:虚拟机直接加入物理网络,需分配与物理机同网段的IP(如物理机IP为
-  检查网络连通性: 
 在虚拟机内执行以下命令,测试与物理机的网络连接:ping <物理机IP> # 测试反向连通性 ping 8.8.8.8 # 测试外部网络访问 
确保SSH服务运行
-  检查SSH服务状态: 
 在虚拟机内执行:systemctl status sshd # 查看SSH服务状态 若未运行,则启动并设置为开机自启:  systemctl start sshd systemctl enable sshd 
-  验证SSH端口: 
 默认端口为22,可通过netstat -tuln | grep 22确认监听状态。
防火墙配置
- 关闭或开放SSH端口: 
  - 若使用firewalld(CentOS/RHEL):firewall-cmd --permanent --add-service=ssh firewall-cmd --reload 
- 若使用ufw(Ubuntu):ufw allow 22/tcp ufw reload 
- 若防火墙未安装,可跳过此步。
 
- 若使用
获取虚拟机IP地址
| 场景 | 获取方式 | 
|---|---|
| 桥接模式(动态IP) | 在虚拟机内执行 ip addr或ifconfig,查找inet字段对应的IP地址。 | 
| NAT模式(动态IP) | 通过虚拟化平台(如VirtualBox、VMware)控制台查看分配的IP。 | 
| 静态IP配置 | 编辑虚拟机网络配置文件(如 /etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-eth0),手动指定IP。 | 
配置SSH客户端
Windows系统
-  使用PuTTY: - 下载PuTTY并运行,在“Host Name”中输入虚拟机IP,点击“Open”。
- 首次连接会提示接受主机指纹,确认后输入用户名和密码。
 
-  使用Windows OpenSSH(PowerShell):  ssh username@<虚拟机IP> # ssh root@192.168.1.100 
Linux/Mac系统
- 直接使用终端内置的ssh命令:ssh username@<虚拟机IP> 
SSH密钥登录(安全增强)
-  生成密钥对(在物理机上): ssh-keygen -t rsa -b 4096 # 生成RSA密钥,按提示保存为~/.ssh/id_rsa 
-  将公钥复制到虚拟机: ssh-copy-id username@<虚拟机IP> # 自动将~/.ssh/id_rsa.pub复制到虚拟机的~/.ssh/authorized_keys 
-  测试免密登录: ssh username@<虚拟机IP> # 无需输入密码 
连接测试与操作
-  首次连接:  - 若出现Yes/No提示,输入yes以添加主机到已知列表。
- 输入用户名(如root或user)和密码。
 
- 若出现
-  文件传输: - 上传文件: scp localfile username@<虚拟机IP>:/remote/path # 从物理机到虚拟机 
- 下载文件: scp username@<虚拟机IP>:/remote/file localpath # 从虚拟机到物理机 
 
- 上传文件: 
-  退出连接: - 输入exit或按Ctrl+D断开SSH会话。
 
- 输入
常见问题与解决方案
| 问题 | 原因 | 解决方法 | 
|---|---|---|
| 连接超时或拒绝 | IP错误、SSH服务未启动、防火墙阻挡 | 检查虚拟机IP、执行 systemctl start sshd、开放防火墙端口22 | 
| 权限不足(Permission denied) | 用户无权限或密钥配置错误 | 检查 /etc/ssh/sshd_config中的PermitRootLogin,或确保公钥写入authorized_keys | 
| 端口被占用 | 非默认SSH端口或端口冲突 | 修改虚拟机 sshd_config中的Port参数,并重启SSH服务 | 
FAQs
Q1:无法连接到虚拟机,如何解决?
- 检查步骤: 
  - 确认虚拟机IP与物理机处于同一网段或已配置端口转发。
- 在虚拟机内执行systemctl status sshd,确保服务运行中。
- 测试防火墙规则(如firewall-cmd --list-all或ufw status)。
- 尝试用telnet <虚拟机IP> 22检测端口连通性。
 
Q2:如何配置SSH免密码登录?
- 步骤: 
  - 在物理机生成SSH密钥:ssh-keygen。
- 将公钥发送到虚拟机:ssh-copy-id user@<虚拟机IP>。
- 重启SSH服务以应用配置:systemctl restart sshd。
 
- 在物理机生成SSH密钥:
 
  
			