在Linux和Unix系统中,登录虚拟机是日常运维和开发工作的基础操作,掌握不同场景下的登录命令,不仅能提高工作效率,还能确保系统管理的安全性和便捷性,本文将详细介绍登录虚拟机的常用命令、不同场景下的应用方法以及相关注意事项。

基础登录命令:ssh
SSH(Secure Shell)是目前最常用的远程登录协议,它通过加密传输数据,确保了通信的安全性,登录虚拟机的核心命令是ssh,其基本语法为:
ssh [用户名]@[虚拟机IP地址]
要登录IP地址为192.168.1.100的虚拟机,且用户名为root,命令为:
ssh root@192.168.1.100
首次连接时,系统会提示保存主机密钥,输入yes后回车即可,随后,系统会提示输入该用户的密码,正确输入后即可成功登录。
指定端口的登录
默认情况下,SSH服务监听22端口,但出于安全考虑,管理员可能会修改SSH端口号,需使用-p参数指定端口号,命令格式为:
ssh -p [端口号] [用户名]@[虚拟机IP地址]
若虚拟机的SSH端口修改为2222,登录命令为:
ssh -p 2222 root@192.168.1.100
使用密钥对进行免密登录
频繁输入密码不仅效率低下,还存在安全风险,通过SSH密钥对可以实现免密登录,具体步骤如下:
-
生成密钥对(在本地终端执行):
ssh-keygen -t rsa -b 4096
执行后会在用户主目录的
.ssh文件夹下生成id_rsa(私钥)和id_rsa.pub(公钥)。
-
将公钥复制到虚拟机:
ssh-copy-id -i ~/.ssh/id_rsa.pub [用户名]@[虚拟机IP地址]
执行该命令后,需输入一次密码,公钥会被自动添加到虚拟机的
~/.ssh/authorized_keys文件中。
完成上述步骤后,再次通过ssh命令登录虚拟机时,将无需输入密码。
通过SSH配置文件简化登录
当需要频繁登录多台虚拟机时,手动输入IP和端口会显得繁琐,可以通过SSH配置文件(~/.ssh/config)为每台虚拟机设置别名,
Host vm1
HostName 192.168.1.100
User root
Port 22
IdentityFile ~/.ssh/id_rsa
Host vm2
HostName 192.168.1.101
User admin
Port 2222
IdentityFile ~/.ssh/id_rsa_vm2
配置完成后,只需通过别名即可登录,
ssh vm1
其他登录方式
除了SSH,在某些特定场景下,还可以使用以下命令登录虚拟机:
-
telnet:
telnet [虚拟机IP地址] [端口号]
telnet是明文传输协议,安全性极低,仅建议在测试网络连通性时使用,生产环境中应避免使用。

-
su(切换用户):
已登录虚拟机后,若需切换至其他用户,可使用su命令:su - [用户名]
切换至
oracle用户:su - oracle
-
sudo(提权执行):
普通用户可通过sudo命令以管理员权限执行特定命令:sudo [命令]
以root权限更新系统:
sudo apt update
常见问题及解决方法
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
ssh: connect to host 192.168.1.100 port 22: Connection refused |
虚拟机未启动或SSH服务未运行 | 检查虚拟机状态,启动SSH服务:systemctl start sshd |
Permission denied (publickey,password). |
密钥认证失败或密码错误 | 确认公钥是否正确添加,或检查密码是否输入正确 |
Could not resolve hostname vm1: Name or service not known |
SSH配置文件中的别名未生效 | 检查~/.ssh/config文件语法是否正确 |
安全建议
- 禁用root直接登录:修改SSH配置文件(
/etc/ssh/sshd_config),将PermitRootLogin设置为no,并重启SSH服务。 - 使用非标准端口:将SSH端口修改为非默认的1024以上的端口号,减少自动化攻击的风险。
- 定期更新SSH服务:保持系统及SSH软件包为最新版本,及时修复安全漏洞。
- 限制登录IP:通过防火墙规则或SSH配置文件(
AllowUsers或AllowHosts)限制允许登录的IP地址。
掌握虚拟机登录命令是系统管理的基础技能,通过合理选择登录方式、配置SSH密钥以及遵循安全规范,可以显著提升远程运维的效率和安全性,在实际操作中,建议根据具体场景灵活运用不同命令,并养成良好的安全管理习惯。








