vscode ssh远程连接到docker容器

docker容器配置vscode ssh远程连接

概要

本文针对docker在拉取到本地ubuntu20.04镜像的情况下,通过 SSH 远程连接到本地 Docker 启动的镜像。

启动包含SSH服务的Docker镜像

  1. 拉取Ubuntu镜像

镜像可以到官方Docker-hub上进行搜索,找到你想要的镜像,也可通过dockerfile文件进行自定义创建,这里不多赘述dockerfile文件编写。

docker pull <镜像名>
  1. 创建并启动一个容器来运行镜像,同时进行端口映射

这里2222对于的是本机端,记得使用空闲端口。建议使用8088或者8080

docker run -itd -p 2222:22 --name <自命名容器名称> <镜像名称>
  1. 进入容器
docker exec -it <自命名容器名称> /bin/bash
  1. 安装SSH服务,并配置SSH服务信息

这里对于update较慢的可以参考我之前的文章配置好国内镜像->Docker容器环境配置

apt-get update
apt-get install -y openssh-server

一般情况下Docker容器没有root密码,可以无需密码直接登陆,但是存在安全隐患,你可以通过终端输入passward root设置好。

mkdir /var/run/sshd
echo 'root:<这里填写你远程连接时root用户密码>' | chpasswd
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
echo "export VISIBLE=now" >> /etc/profile
  1. 启动SSH服务
/usr/sbin/sshd -D &

如果你想每次启动容器就自动启动ssh文件不用手动启动可以在使用

vim ~/.bashrc

(这里vim是Linux终端文件编写器)在该文件最下方输入

service sshd restart

然后保存即可。

vscode通过SSH远程连接到容器

这里默认vscode已经安装好了插件Remote-SSH
在本地C:\user\user_name.ssh\config文件中输入

Host docker_remote_name <这个远程名称随意>
	HostName localhost
	User root
	Port 8080 <前面配置的本地端口号>

然后在vscode中直接连接你配置的远程名称。
你也可以通过在本地终端或vscode新建远程输入一下命令行,均可进行连接
在这里插入图片描述

ssh root@localhost -p 8080
要在VSCode中通过远程SSH实现对Docker容器的免密登录,可按以下步骤操作: ### 1. 配置远程SSH连接 - 确保VSCode已安装“Remote - SSH”扩展。打开VSCode,点击左侧扩展图标,搜索“Remote - SSH”并安装。 - 配置SSH密钥对。在本地机器上打开终端,使用以下命令生成SSH密钥对(如果已有可跳过): ```bash ssh-keygen -t rsa -b 4096 ``` 按照提示操作,默认情况下密钥会生成在`~/.ssh/id_rsa`(私钥)和`~/.ssh/id_rsa.pub`(公钥)。 - 将公钥复制到远程服务器。使用以下命令将公钥复制到远程服务器: ```bash ssh-copy-id user@remote_server_ip ``` 这里的`user`是远程服务器的用户名,`remote_server_ip`是远程服务器的IP地址。输入远程服务器密码完成复制。 ### 2. 连接到远程服务器 - 打开VSCode,点击左下角的绿色图标,选择“Remote-SSH: Connect to Host...”,然后选择之前配置好的远程服务器。 - 输入远程服务器密码(如果需要),成功连接到远程服务器。 ### 3. 配置Docker容器免密登录 - 在远程服务器上,找到要连接的Docker容器的ID或名称。使用以下命令查看正在运行的容器: ```bash docker ps ``` - 进入容器内部,使用以下命令将本地的SSH公钥复制到容器内部的`~/.ssh/authorized_keys`文件中: ```bash docker exec -it container_id_or_name bash -c 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub ``` 这里的`container_id_or_name`是Docker容器的ID或名称。 ### 4. 在VSCode连接到Docker容器 - 在VSCode中,打开命令面板(`Ctrl+Shift+P`或`Cmd+Shift+P`),输入“Remote-Containers: Attach to Running Container...”。 - 选择要连接的Docker容器VSCode会自动连接到容器内部,实现免密登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值