使用 SSH 连接虚拟机中的 Ubuntu Server

本文简单的介绍了如何通过 SSH 连接到 VirtualBox 中的 Ubuntu Server 来进行日常的开发工作。

准备工作

1.虚拟机中安装 SSH 服务

# 更新软件源
sudo apt update && sudo apt upgrade

# 安装 SSH 服务
sudo apt install openssh-server

# 验证 SSH 服务是否安装成功
sudo systemctl status ssh

2.配置 VirtualBox 网络

默认情况下,VirtualBox 会为您的虚拟机创建网络地址转换 (NAT) 适配器。这允许虚拟机访问互联网,但会阻止其他设备通过 SSH 访问它。

在虚拟机启动的时候,我们可以通过 ip -4 addr 命令查看虚拟机的 IP 地址,我们可以看到虚拟机的 IP 地址为 10.0.2.16 记录下来,后面会用到。

然后将虚拟机的电源关闭,开始配置虚拟机的网络。

  • 右键单机要设置的虚拟机,点击设置(Settings)齿轮图标打开设置窗口。
  • 点击网络(Network)选项卡,默认选择第一个适配器(Adapter 1)。
  • 接下来点击高级(Advanced)选项展开高级设置,点击端口转发(Port Forwarding)打开设置窗口。

Network Setting

Port Forwarding

  • 点击右边绿色的添加(Add)按钮,添加一个新的端口转发规则。
  • 在弹出的窗口中,设置如下参数:
    • 名称:SSH
    • 协议:TCP
    • 主机IP:127.0.0.1
    • 主机端口:12022
    • 虚拟机IP:10.0.2.15
    • 虚拟机端口:22
  • 点击确定(OK)按钮,完成端口转发规则的添加。

3.通过 SSH 连接

在本地终端中,通过 ssh 命令连接到虚拟机。

ssh -p 12022 [email protected]
# username 为虚拟机的登录用户名

# 输入密码
(invisible)

# 连接成功
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-137-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

 System information disabled due to load higher than 1.0


0 updates can be applied immediately.


Last login: Tue Jan 17 23:30:22 2023 from 10.0.2.2

4.配置 SSH 免密登录

在本地终端中,通过 ssh-keygen 命令生成 SSH 密钥对。

ssh-keygen -t rsa -b 4096 -C "awsuser@myserver"
# 输入文件名
mykey
# 输入密码
(invisible)
# 再次输入密码
(invisible)

记得将 awsuser@myserver 替换成你自己的邮箱地址。

记得修改文件名,否则会覆盖掉原来的密钥对。

在本地终端中,通过 ssh-copy-id 命令将公钥复制到虚拟机中。

ssh-copy-id -i ~/.ssh/mykey -p 12022 [email protected]
# 输入密码
(invisible)

在本地终端中,通过 ssh 命令连接到虚拟机。

ssh -p 12022 [email protected]
# 已经不需要输入密码了
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-137-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

 System information disabled due to load higher than 1.0
  
0 updates can be applied immediately.

Last login: Tue Jan 17 23:30:22 2023 from 10.0.2.2

5.禁用 SSH 密码登录

在虚拟机中,通过 sudo 命令修改 SSH 配置文件。

sudo vim /etc/ssh/sshd_config

# 修改 PasswordAuthentication 参数
PasswordAuthentication no

# ESC 退出编辑模式,输入 :wq 保存并退出。

# 重启 SSH 服务。
sudo systemctl restart sshd

最后修改于 2023-02-03


感谢您的支持 :D