Bootstrap

【Vscode 远程连接 Docker 容器】

1. 配置docker镜像

  • 在主机目录下创建一个 Dockerfile,注意文件名必须保持一致!!!(默认装了docker)

  • ubuntu:22.04 镜像

docker pull ubuntu:22.04
  • Dockerfile
FROM ubuntu:22.04

# Update package list and install sudo
RUN apt-get update && \
    apt-get install -y sudo && \
    rm -rf /var/lib/apt/lists/*

# Create a new user
RUN useradd -m cauchy && \
    echo 'cauchy:****' | chpasswd && \                          # 这里有user的密码,待会用于vscode的登入
    adduser cauchy sudo

# Set the working directory to /home/cauchy
WORKDIR /home/cauchy

# Set the user to cauchy
USER cauchy

# Start a shell session
CMD ["/bin/bash"]

  • 运行容器,映射端口:(主机7000:容器22)
docker built -t ubuntu:22.04 .
docker run -itd -p 7000:22 --name dockername ubuntu:22.04
  • 进入容器
docker attach dockername 

2. 安装 OpenSSH

  • 在 Docker 容器中安装 SSH 服务:
sudo apt-get install -y openssh-server
  • 启动 SSH 服务:
service ssh start
  • 修改 SSH 配置文件 /etc/ssh/sshd_config,将 PermitRootLoginPasswordAuthentication 分别设置为 yes
PermitRootLogin yes
PasswordAuthentication yes
  • 放开 22 端口
Port 22
  • 重启 SSH 服务:
service ssh restart

3. Vscode中安装 Remote-SSH 插件:

在这里插入图片描述


4. 配置连接信息

  • 在 VSCode 中按下 F1 键,输入 “Remote-SSH: Connect to Host…”,选择 “Add New SSH Host…”

  • 在弹出的对话框中填写以下信息:(括号内替换)

    • Host Name: hostname@IP -p Port
    • User Name: username
    • Password: password
  • 生成如下信息:(C:/用户/.ssh/config)

    • Name: 当前连接的名称(随意)。
    • IP:连接主机的IP地址,你的服务器IP。
    • UserName:容器内的用户名。
    • Port:主机映射的端口(上述即:7000)。
Host (Name)
  HostName (IP)
  User (UserName)
  Port (Port)

5. 免密登录

ssh-keygen 生成密钥后,将 id_rsa.pub 文件拷贝进docker容器内的 ~/.ssh/authorized_keys 文件中即可。


【可能会遇到的问题】

  • 【之前连接成功过,后来就怎么都连不上去了】

先重启一下服务器的ssh服务:

sudo service ssh stop
sudo service ssh start

遇到的问题可能是因为:

这个错误提示意味着您之前连接到的主机的密钥已经发生了变化,可能是由于主机的操作系统或网络配置发生了更改。这可能是一种恶意攻击,也可能是您连接到的主机更换了新的密钥。

这里我遇到的问题是,主机更换了新的密钥,所以再次从vscode连接过去,公钥认证就不匹配了,所以不能在重新连入docker容器内。

删除 C/用户/.ssh/目录下的 known_hosts 文件中,旧的公钥 [主机IP]:port

在这里插入图片描述

将这段直接删除即可,然后重新进行本文的连接操作。又可以愉快的玩docker了~~

【~~容器最好是一直在运行着,但凡重启或停止过,就需要重来一遍才可能连上】


;