首页 > 系统相关 >解决在 Linux Deploy 中安装老版本的 Debian 无法开启 ssh 的错误

解决在 Linux Deploy 中安装老版本的 Debian 无法开启 ssh 的错误

时间:2022-11-21 12:57:22浏览次数:47  
标签:容器 shell Deploy linuxdeploy ssh Linux 安装

这几天在废弃的手机和平板上尝试安装完整的Linux系统,折腾了好几天,发现很多软件对arm的支持相当不完善。源里缺很多包,自己编译也编译不过。有些软件的老版本反而是稳定的,新版本总是出现,比如 firefox。来来回回换了很多版本,最后总结下来比较稳定的版本是 Debian Jessie。当我装回 Jessie 后尴尬地发现,sshd 起不来了,VNC也起不来了。经过仔细观察,发现在安装完基本系统后,开始配置 ssh,结果刷新完 apt 缓存后,相关的包压根就没有安装,提示 openssh 相关的包无法通过验证。因为前几天的尝试是成功的,被成功的经验误导了,排查了好久最终发现,确实是GPG证书过期了:我在昨天(2022/11/20)发现问题!证书的过期时间是 2022/11/19。

W: GPG error: http://mirrors.ustc.edu.cn jessie Release: The following signatures were invalid: KEYEXPIRED 1668891673

因为 apt 命令是在 chroot 的沙盒里运行的,要如何从外部干预呢?因为没有文档,只能乱猜乱试。如果发现了 Linux Deploy 有一个 telnet 守护模式,而且有一个 Web 接口。在设置中打开:

启用telnet守护模式:true
端口:5023
启用httpd守护模式:true
端口:5080
访问限制:A:127.0.0.1 D:*

上面的A:127.0.0.1允许本机访问,而D:*则屏蔽掉所有外部访问, 相当于打开了白名单。访问限制不允许留空,如果删掉,会自动填上诸如:/:android:xxxxxxxx的内容。此时,不再是基于地址的访问限制策略,而是基于密码的验证,其中android是用户名,xxxxxxxx就是密码。

返回

再点击菜单中的“终端”,此时,就会自动打开浏览器并打开以下地址:

http://127.0.0.1:5080/cgi-bin/terminal?size=10

如果正常的话可以获得一个 shell。android自带的浏览器如果过于老旧的话,打开的是一个空白页面,此时需要用更新的浏览器去打开上面的地址。我用 firefox 打开就正常了。也可以更改上面的“访问限制”,允许外部主机,然后用电脑上的浏览器登陆进去操作。

此时获得的 shell 不是容器内的 Linux shell, 而是宿主机(android)的shell。Linux Deploy 在 data 目录下释放了一个 'bin'目录,里面有一些基本的 Linux命令,最关键的是命令linuxdeploy,直接运行打印帮助信息。下面是一些常用命令:

# 执行布署
linuxdeploy deploy 

# 挂载容器
linuxdeploy mount

# 卸载容器
linuxdeploy umount

# 启动容器, 
linuxdeploy start

# 关闭容器
linuxdeploy stop

最关键的是 shell子命令,它可以执行容器内的 shell 命令。

# 先启动容器
linuxdeploy mount
liuuxdeploy start

# 忽略证书验证,强制安装缺失的包
linuxdeploy shell -d -u <username> "sudo apt install -y --force-yes openssh-server"

执行上面的命令,如果不意外的话,会从卡住的地方继续安装 ssh, --force-yes忽略证书验证。安装完成后, Debian 会自动启动 sshd 服务,此时,就可以从外部通过 ssh 进入容器内的系统了。

考虑到 Jessie 早已经被废弃,官方不可能再更新GPG证书,以后从源里安装任何包都会提示无法通过验证,都需要带上 --yes --force-yes选项,一劳永逸的解决办法是:

echo 'APT::Get::AllowUnauthenticated "true";' | sudo tee /etc/apt/apt.conf.d/99disable-gpg-auth

标签:容器,shell,Deploy,linuxdeploy,ssh,Linux,安装
From: https://www.cnblogs.com/zh-geek/p/16911086.html

相关文章

  • 迅为iTOP3568开发板Android11获取root权限关闭selinux
    本文档所需资料在网盘资料“iTOP-3568开发板\02_【iTOP-RK3568开发板】开发资料\06_Android系统开发配套资料\02_Android11获取root权限配套资料”目录下。本文档参......
  • linux入门介绍
    Linux的命令基本格式为:[root@localhost~]#命令[选项][参数][]中代表可选项即也可不带选项和参数shell   翻译官 将人类使用的高级语言 转换成二进制 ce......
  • Linux学习
    1、linux简介什么是Linux?Linux,全程GNU/Linux是一种免费使用和自由传播的类UNIX操作系统。Linux的发新版slackware:susesleopensusedebian:ubuntumin......
  • Linux下的压缩和解压缩命令——gzip/gunzip
    gzip命令gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压......
  • Linux
    《基本操作指令》《关机》  《基本目录》   《跳转》  《查看》    《管理目录》  mkdir-ptest1/test2/.....这样可以递归创建多个目......
  • 后端开发必备Linux命令汇总
    查看Linux系统信息  arch      #显示机器的处理器架构(1)uname -m  #显示机器的处理器架构(2)uname -r  #显示正在使用的内核版本dmidecode -q    ......
  • linux释放buff/cache缓存内存
    echo3>/proc/sys/vm/drop_caches------释放buff/cache缓存内存echo0是不释放缓存echo1是释放页缓存ehco2是释放dentries和inodes缓存echo3是释放1和2中说......
  • linux常用操作命令
    top:查看所有进程的资源占用情况,按cpu占用排序第三行为CPU的信息:有几个CPU,就会显示几行参数释义  us      表示用户空间程序的c......
  • (转)【Linux】crontab命令详解
    原文:https://blog.csdn.net/qq_32109917/article/details/121468799【Linux】crontab命令详解linux系统则是由cron(crond)这个系统服务来控制的。Linux系统上面原本......
  • ssh的使用
     Example:在本地(local)上运行ssh -L  the-local-listening-port:localhost:the-host-listening-port root@server-host-addr此时,在本地(local)上通过localh......