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
,将PermitRootLogin
和PasswordAuthentication
分别设置为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了~~
【~~容器最好是一直在运行着,但凡重启或停止过,就需要重来一遍才可能连上】