当前位置: 首页 > news >正文

【AI-小米机器狗】Dockerfile包含SSH和SFTP

通过这些步骤,可以在docker容器中安装运行SSH和SFTP服务,设置ssh和sftp的密码,克隆指定的Git仓库到/home目录,并使用bash作为入口点,

# 基于原始镜像
FROM cyberdog_sim:v1# 更新APT源为清华源
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g' /etc/apt/sources.list# 更新包列表并安装OpenSSH服务器和git和pip
RUN apt-get update && apt-get install -y openssh-server git pip# 创建必要的目录
RUN mkdir /var/run/sshd# 设置root用户密码
RUN echo 'root:Password' | chpasswd# 允许root登录并通过密码认证
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config# 配置SFTP子系统(如果未定义)
RUN grep -q '^Subsystem\s\+sftp\s\+/usr/lib/openssh/sftp-server' /etc/ssh/sshd_config || echo "Subsystem sftp /usr/lib/openssh/sftp-server" >> /etc/ssh/sshd_config# 克隆指定的Git仓库到/home
RUN git clone https://github.com/MiRoboticsLab/loco_hl_example /home/loco_hl_example# PIP换源与安装
RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
RUN pip install lcm pygame# 开放22端口
EXPOSE 22# 创建启动脚本
RUN echo '#!/bin/bash\n/usr/sbin/sshd\nexec "$@"' > /start.sh && chmod +x /start.sh# 使用启动脚本作为入口点
ENTRYPOINT ["/start.sh"]# 默认命令
CMD ["bash"]

构建新镜像

使用上述Dockerfile构建新的Docker镜像:

docker build -t cyberdog_sim_with_ssh:v4 .

运行新镜像

使用以下命令运行新镜像,并包括原始运行命令中的所有参数:

sudo docker run -it --shm-size="1g" --privileged=true -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -p 2222:22 cyberdog_sim_with_ssh:v4

防火墙配置

确保防火墙允许通过新端口(2222):

  • UFW(Uncomplicated Firewall)配置:
sudo ufw allow 2222/tcp
sudo ufw reload
  • iptables配置:
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
sudo iptables-save

连接到SSH和SFTP

  1. SSH连接:
    使用新的端口连接到SSH服务:
ssh root@localhost -p 2222

从远程机器连接,替换localhost为你的主机IP地址:

ssh root@your_host_ip -p 2222
  1. SFTP连接:
    使用新的端口连接到SFTP服务:
sftp -P 2222 root@localhost

从远程机器连接,替换localhost为你的主机IP地址:

sftp -P 2222 root@your_host_ip

相关文章:

  • ASP.NET Core 6.0 使用 Action过滤器
  • 【笔记】字符串相似度代码分享
  • 重塑通信边界,基于ZYNQ7000 FPGA驱动的多频段多协议软件无线电平台
  • 腾讯课堂即将停止服务?来试试这款开源的知识付费系统
  • strcpy,srtcmp,strlen函数漏洞利用
  • 鸿蒙OS开发者高级学习第2课:自由流转(含习题答案)
  • Linux学习笔记(一)
  • 若依 Vue 前端分离 3.8.8 版中生成的前端代码中关于下拉框只有下拉箭头的问题
  • 【Mathematica14.0】快速从下载安装到使用
  • 前端git约定式规范化提交-commitizen
  • 贪吃蛇——C语言(VS2022含源代码,及源代码zip文件)
  • 统计学习方法三要素的理解 (以线性回归为例)
  • gitLab使用流程
  • Java--继承
  • 百数教学:如何用分析图表助力报表可视化?
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 分享的文章《人生如棋》
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • android 一些 utils
  • angular2开源库收集
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • docker容器内的网络抓包
  • Markdown 语法简单说明
  • PaddlePaddle-GitHub的正确打开姿势
  • SAP云平台里Global Account和Sub Account的关系
  • scrapy学习之路4(itemloder的使用)
  • vue-cli3搭建项目
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 基于webpack 的 vue 多页架构
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 浏览器缓存机制分析
  • 判断客户端类型,Android,iOS,PC
  • 前端知识点整理(待续)
  • 使用common-codec进行md5加密
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 小程序开发中的那些坑
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 中文输入法与React文本输入框的问题与解决方案
  • 从如何停掉 Promise 链说起
  • 进程与线程(三)——进程/线程间通信
  • # Redis 入门到精通(一)数据类型(4)
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #android不同版本废弃api,新api。
  • #define
  • #微信小程序:微信小程序常见的配置传旨
  • (1)Hilt的基本概念和使用
  • (11)MATLAB PCA+SVM 人脸识别
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (175)FPGA门控时钟技术
  • (Qt) 默认QtWidget应用包含什么?
  • (附源码)springboot宠物医疗服务网站 毕业设计688413