在 Windows 上通过 SSH 连接 Ubuntu 上的 Docker,完整的步骤如下:
前提条件
- Ubuntu 服务器上已经安装 Docker 并正在运行。
- Windows 上安装了 SSH 客户端(Windows 10 及以上版本可以直接使用 PowerShell 或命令提示符中的 SSH)。
- Windows 上已生成 SSH 密钥对,或者你可以生成一个新密钥对。
步骤 1:在 Windows 上生成 SSH 密钥对
如果还没有 SSH 密钥对,可以通过以下步骤生成一个:
- 打开 PowerShell 或 命令提示符,输入以下命令:
ssh-keygen -t rsa -b 4096
- 按提示保存私钥文件(通常保存在
C:\Users\<YourUsername>\.ssh\id_rsa
),也可以设置密钥的密码(可选)。 - 密钥生成完毕后,公钥文件通常会保存在
C:\Users\<YourUsername>\.ssh\id_rsa.pub
路径下。
步骤 2:将公钥复制到 Ubuntu 服务器
-
使用 SSH 工具将公钥复制到 Ubuntu 服务器的
authorized_keys
文件中。可以使用以下命令将公钥上传到服务器(假设你已经知道 Ubuntu 服务器的 IP 地址和用户名):
ssh-copy-id -i C:\Users\<YourUsername>\.ssh\id_rsa.pub username@ubuntu_server_ip
如果没有安装
ssh-copy-id
工具,也可以手动将公钥内容复制到 Ubuntu 服务器上。手动步骤:
- 打开公钥文件
id_rsa.pub
,将其内容复制。 - SSH 登录 Ubuntu 服务器:
ssh username@ubuntu_server_ip
- 在 Ubuntu 服务器上创建或编辑
~/.ssh/authorized_keys
文件,并将公钥内容粘贴到其中:mkdir -p ~/.ssh echo "your-public-key-content" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
- 打开公钥文件
步骤 3:配置 Ubuntu 服务器的 SSH 设置
确保 Ubuntu 服务器上的 SSH 服务正常工作,并支持公钥认证。
- 编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
- 确保以下配置项未被注释并设置为如下值:
PubkeyAuthentication yes PasswordAuthentication no # 禁用密码登录
- 保存并退出,重新启动 SSH 服务:
sudo systemctl restart ssh
步骤 4:通过 Windows SSH 连接到 Ubuntu Docker
在 Windows 上打开 PowerShell 或 命令提示符,使用 SSH 私钥连接 Ubuntu 服务器。
-
使用以下命令连接到 Ubuntu:
ssh -i C:\Users\<YourUsername>\.ssh\id_rsa username@ubuntu_server_ip
-
成功连接到 Ubuntu 服务器后,确保 Docker 已启动,执行以下命令来验证:
docker ps
步骤 5:在 Windows 上配置 Docker 客户端(可选)
如果你想直接从 Windows 上管理 Ubuntu 上的 Docker,可以安装并配置 Windows 端的 Docker 客户端。
- 安装 Docker 客户端:确保 Windows 上已安装 Docker Desktop,或者通过 SSH 直接控制 Ubuntu 上的 Docker。
- 配置 Docker Daemon:
在 Ubuntu 上确保 Docker 支持远程 API。编辑 Docker 服务文件/lib/systemd/system/docker.service
,将ExecStart
行修改如下(如果要开启 TCP 监听):
然后重新加载并重启 Docker:ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
sudo systemctl daemon-reload sudo systemctl restart docker
- 通过 Windows 连接 Docker:
在 Windows 上通过 SSH 连接到 Ubuntu,并使用docker
命令控制远程 Docker 实例。也可以直接通过 Docker Desktop 配置远程 Docker 主机。
这样,你就可以从 Windows 上通过 SSH 连接到 Ubuntu 上的 Docker,并进行管理了。