当前位置:首页 > Linux > 正文

如何ssh到虚拟机linux

通过 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)。

  • 检查网络连通性

    在虚拟机内执行以下命令,测试与物理机的网络连接:

    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

    如何ssh到虚拟机linux 第1张

    如何ssh到虚拟机linux 第2张

    • 下载PuTTY并运行,在“Host Name”中输入虚拟机IP,点击“Open”。
    • 首次连接会提示接受主机指纹,确认后输入用户名和密码。

  • 使用Windows OpenSSH(PowerShell):

    ssh username@<虚拟机IP> # ssh root@192.168.1.100

Linux/Mac系统

  • 直接使用终端内置的ssh命令: ssh username@<虚拟机IP>


SSH密钥登录(安全增强)

  1. 生成密钥对(在物理机上):

    ssh-keygen -t rsa -b 4096 # 生成RSA密钥,按提示保存为~/.ssh/id_rsa
  2. 将公钥复制到虚拟机

    如何ssh到虚拟机linux 第3张

    ssh-copy-id username@<虚拟机IP> # 自动将~/.ssh/id_rsa.pub复制到虚拟机的~/.ssh/authorized_keys
  3. 测试免密登录

    ssh username@<虚拟机IP> # 无需输入密码


连接测试与操作

  1. 首次连接

    • 若出现Yes/No提示,输入yes以添加主机到已知列表。
    • 输入用户名(如root或user)和密码。
  2. 文件传输

    • 上传文件: scp localfile username@<虚拟机IP>:/remote/path # 从物理机到虚拟机
    • 下载文件: scp username@<虚拟机IP>:/remote/file localpath # 从虚拟机到物理机
  3. 退出连接

    • 输入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:无法连接到虚拟机,如何解决?

  • 检查步骤
    1. 确认虚拟机IP与物理机处于同一网段或已配置端口转发。
    2. 在虚拟机内执行systemctl status sshd,确保服务运行中。
    3. 测试防火墙规则(如firewall-cmd --list-all或ufw status)。
    4. 尝试用telnet <虚拟机IP> 22检测端口连通性。

Q2:如何配置SSH免密码登录?

  • 步骤
    1. 在物理机生成SSH密钥:ssh-keygen。
    2. 将公钥发送到虚拟机:ssh-copy-id user@<虚拟机IP>。
    3. 重启SSH服务以应用配置:systemctl restart sshd。

0