使用终端输入命令
ssh 用户名@服务器IP -p 端口号
(默认端口22可省略),按提示输入密码即可连接,需确保虚拟机已启动SSH服务并获取其IP地址要通过SSH连接到Linux虚拟机服务器,需完成从环境准备到实际连接的多个步骤,以下是系统性的操作指南:
前置准备:虚拟机与本地环境配置
步骤 | 操作说明 | 注意事项 |
---|---|---|
虚拟机网络模式设置 | 在虚拟机管理软件(如VirtualBox、VMware)中,选择虚拟机的网络适配器模式: 桥接模式:虚拟机直接接入物理网络,可获得与主机同网段的IP地址。 NAT模式:通过主机共享网络,需配合端口转发使用。 仅主机模式:适用于隔离测试环境,需额外配置路由。 |
推荐使用桥接模式,便于直接通过IP访问,若需安全隔离,可选择NAT并配置端口映射。 |
检查虚拟机IP地址 | 登录虚拟机,执行ip addr 或ifconfig 查看网络接口的IPv4地址(如168.1.100 )。 |
若IP动态变化,可设置静态IP或通过主机名解析(需配置/etc/hosts)。 |
安装SSH服务(若未预装) | 根据Linux发行版执行命令: Ubuntu/Debian: sudo apt update && sudo apt install openssh-server CentOS/RHEL: sudo yum install openssh-server Fedora: sudo dnf install openssh-server |
确保安装后sshd 服务已启动(sudo systemctl enable sshd )。 |
SSH连接配置与认证方式
生成SSH密钥(推荐)
在本地终端执行:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 默认保存路径为
~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)。 - 按回车跳过密码短语设置(简化登录)。
将公钥发送至虚拟机
ssh-copy-id -i ~/.ssh/id_rsa.pub username@vm_ip
若虚拟机未启用密钥登录,需先在虚拟机上执行:
mkdir -p ~/.ssh chmod 700 ~/.ssh echo "你的公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
密码认证(可选)
若无需密钥登录,直接使用:
ssh username@vm_ip -p port
输入密码即可登录(默认端口22)。
本地客户端工具选择与连接
操作系统 | 工具 | 连接命令/步骤 |
---|---|---|
Windows | PuTTY/MobaXterm/Git Bash | 打开工具,输入username@vm_ip 指定端口(非22时需手动填写) 点击连接并输入密码 |
macOS/Linux | 终端 | ssh username@vm_ip -p port |
iOS/Android | Protti (App) | 输入主机、端口、用户名及密码 |
常见问题排查
连接失败的可能原因
现象 | 原因 | 解决方案 |
---|---|---|
Connection refused |
SSH服务未启动/防火墙拦截 | sudo systemctl start sshd + 检查防火墙规则 |
No route to host |
网络不通/IP错误 | 用ping vm_ip 测试连通性 |
Permission denied |
密钥权限错误/未添加公钥 | chmod 600 ~/.ssh/authorized_keys |
特殊场景处理
- NAT模式下端口转发:在虚拟机软件中配置端口转发(如将主机
2222
端口转发到虚拟机的22
端口),然后通过ssh -p 2222 localhost
连接。 - SELinux限制:若虚拟机为CentOS且开启SELinux,需临时设置为宽松模式:
sudo setenforce 0
。
最佳实践与安全建议
- 禁用Root登录:编辑
/etc/ssh/sshd_config
,设置PermitRootLogin no
,重启SSH服务。 - 限制IP访问:在
sshd_config
中添加AllowUsers username
或DenyUsers
规则。 - 更换默认端口:修改
sshd_config
中的Port
参数(如改为2222
),并重启服务:sudo systemctl restart sshd
。
FAQs
Q1:为什么SSH连接时提示“Network error: connection timed out”?
A1:可能原因包括虚拟机IP错误、网络模式配置不当(如NAT模式下未设置端口转发)、宿主机防火墙拦截,解决方法:
- 检查虚拟机IP是否正确(
ip addr
); - 尝试切换网络模式为桥接;
- 暂时关闭宿主机防火墙(Windows: 控制面板 → 系统保护 → Windows Defender → 允许应用通过防火墙)。
Q2:如何使用SSH密钥认证时提示“Access denied”?
A2:常见原因及解决步骤:
- 公钥未正确添加到虚拟机:执行
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
; - 密钥权限过大:确保私钥
id_rsa
权限为600
,目录.ssh
权限为700
; - SSH服务未读取密钥文件:检查
sshd_config
中的AuthorizedKeysFile
路径是否正确(默认`~/.ssh/
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/69107.html