ubuntu容器连接ssh
解决docker容器的访问问题,通过暴露22端口映射到宿主机端口,用ssh连接,可实现对容器内终端的可视化和编辑功能。
一、编写dockerfile
FROM ubuntu
# Copy everything
COPY . ./
EXPOSE 22
二、制作镜像
docker build -t ubt .
三、运行容器
docker run -it -p 8089:22 ubt
遇到一个问题:
ssh root@127.0.0.1:8089
ssh: Could not resolve hostname 127.0.0.1:8089: Name or service not known
根本就ping不通
ping 127.0.0.1:8089
ping: 127.0.0.1:8089: Name or service not known
这是因为docker里还没有安装ssh
四、docker内配置
apt-get update
apt-get upgrade
apt-get install -y openssh-server
apt-get install -y openssh-server --fix-missing
选择地区:Asia Shanghai
mkdir /var/run/sshd
echo 'root:screencast' |chpasswd
service ssh start
五、宿主机上连接
ssh root@127.0.0.1 -p 8089
但是还有一个bug:
Permission denied, please try again.
六、docker里设置
^C
结束ssh
apt-get install vim
vim /etc/ssh/sshd_config
在末尾加上
RSAAuthentication yes
PermitRootLogin yes
修改root用户的密码
passwd root
service ssh restart
七、成功
此时,再登录ssh
ssh root@127.0.0.1 -p 8089
八、后续问题
这种方式最多只能连接10个
ssh root@127.0.0.1 -p 8089
ssh_exchange_identification: read: Connection reset by peer
这是因为并发数限定了
于是,
vim /etc/ssh/sshd_config
将 MaxStartups
改为 80:10:100
(从第80个并发开始,以10%的几率拒绝访问,从100个并发开始全部拒绝)
service ssh restart
又可以访问了!
但是最好还是记得exit+回车
优雅地退出吧~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人