Ubuntu容器开启ssh连接

文章详细介绍了如何在Docker的Ubuntu容器中安装SSH服务器,设置远程登录,包括修改配置文件以允许密码认证,并配置C++开发环境,如安装git、cmake、Boost等。此外,还提到了如何通过xshell或vscode的remote-ssh扩展进行远程开发,并展示了如何映射端口以连接到容器内的服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

命令和注解如下:

# 必须首先执行这两个,否则找不到包
apt-get update
apt-get upgrade


apt-get install openssh-server
apt-get install vim net-tools   # redis-server  mysql-server
# 生成ssh的密钥
ssh-keygen 

# 更改容器里面root用户密码
passwd root

# 设置远程登录 :将修改PermitRootLogin的值为yes(
# 因为docker中的ubuntu容器开启之后没有用户名,只有root用户)
# 将UseDNS设置为 no,(参考自https://blog.51cto.com/u_15127623/3313068)
# 将允许密码连接设置yes:PasswordAuthentication yes
vim /etc/ssh/sshd_config

完成上述步骤就可以通过localhost::5001的组合使用xshell等工具进行连接了。如果使用的是vscode中的remote-ssh进行远程开发,则需要进设置port,见下

 

到此,配置流程就结束了,下面的东西不用再看了。当心出问题

配置额外的C++开发环境

apt-get update
apt-get upgrade

apt-get install openssh-server
apt-get install vim net-tools#   redis-server  mysql-server
# 生成ssh的密钥
ssh-keygen 

# 更改容器密码
passwd root

# 设置远程登录 :将修改PermitRootLogin的值为yes(
# 因为docker中的ubuntu容器开启之后没有用户名,只有root用户)
# 将UseDNS设置为 no,(参考自https://blog.51cto.com/u_15127623/3313068)
# 将允许密码连接设置yes:PasswordAuthentication yes
vim /etc/ssh/sshd_config

apt-get git cmake build-essential g++ python-dev-is-python3 autotools-dev libicu-dev build-essential gdb

# 安装muduo的依赖库
# apt-get install libbz2-dev libboost-all-dev
apt-get install libboost-dev libboost-test-dev
apt-get install libcurl4-openssl-dev # linc-ares-dev
apt-get install protobuf-compiler libprotobuf-dev

git clone https://github.com/chenshuo/muduo.git
cd muduo
./build.sh

运行脚本:

# UbuntuTest为容器名,ubuntu为镜像名	
# 5001:22意味着将容器内的22号端口映射到本机5001端口
docker run --name ubuntuTest -t -i -d -p 5001:22 ubuntu (需要指定多个端口映射 添加多个-p 参数就行)
docker run -d -p 5002:6379 --name docker-redis redis
docker run -p 5003:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

参考链接:[Docker]使用XShell连接容器种的Ubuntu_51CTO博客_ubuntu 22.04 docker

### 通过SSH连接至远程服务器上的Docker容器 #### 启动并配置Docker容器支持SSH访问 为了能够通过SSH协议安全地接入位于远程服务器中的Docker容器,需先确保目标容器已正确部署且其内运行有SSH服务。对于未预装SSH服务的官方基础镜像,在创建自定义镜像时应考虑加入OpenSSH-server组件,并调整相应配置以允许外部连接[^1]。 ```bash # Dockerfile示例片段 FROM ubuntu:latest RUN apt-get update && \ apt-get install -y openssh-server && \ mkdir /var/run/sshd CMD ["/usr/sbin/sshd", "-D"] EXPOSE 22 ``` 构建上述Dockerfile后得到的新镜像将具备基本的SSH服务能力。启动基于此镜像实例化的容器时,记得映射主机端口到容器内的22号标准SSH端口: ```bash docker run -d -p <host_port>:22 --name my_container_name custom_ssh_image_tag ``` 其中`<host_port>`代表宿主机对外开放的具体TCP端口号;而`my_container_name`则是赋予该容器的一个易于识别的名字标签。 #### 配置VSCode实现便捷开发体验 当确认远端机器上指定ID/名称对应的Docker环境已经正常开启SSH监听之后,则可以借助Visual Studio Code编辑器及其配套扩展来简化日常操作流程。具体而言,“Remote - SSH”插件使得开发者能够在本地IDE界面里直接管理远方资源,只需按照提示完成必要的身份验证环节即可无缝切换工作空间[^2]。 - **前提条件**:保证个人电脑与目的地址间存在畅通无阻的数据传输路径; - **准备工作**:提前准备好一对匹配好的密钥对(私钥保存于客户端),并将公钥部分追加进目标位置下的`~/.ssh/authorized_keys`文件之中; 最后一步是在VSCode内部新建一条针对特定场景优化过的SSH连接记录,这通常涉及到填写诸如用户名、IP地址以及所选端口等基本信息项。 #### 解决Jupyter Notebook加载缓慢的问题 如果遇到类似文中提到的情况——即虽然能成功启动Jupyter Lab但无法顺利读取`.ipynb`文档的情形下,不妨尝试利用前述方法建立直达问题所在容器内部的安全通道。这样做不仅有助于绕过可能存在的防火墙限制,而且还能让后续排查过程更加直观高效[^3]。 一旦建立了稳定的SSH会话,便可以直接在终端执行命令查看日志输出或是临时修改某些参数设定,甚至还可以进一步探索其他潜在因素的影响范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值