找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 2990|回复: 10

[ax9000] 转自知乎:ax9000开发者版root开启ssh

[复制链接]
发表于 2022-11-24 10:08 | 显示全部楼层 |阅读模式
本帖最后由 yorkye821 于 2022-11-24 10:12 编辑

原贴地址:https://zhuanlan.zhihu.com/p/526213866
我想请问各位大佬,此方法确实可行吗?开启的是路由器的ssh还是docker的ssh?


用容器平台创建一个stack,内容如下
services:  debian:    image: registry.cn-shanghai.aliyuncs.com/aliyun2671973364/arm8-debian-sshd:0.1    ports:    - "22002:22"    volumes:    - /userdisk:/host/userdisk    - /etc:/host/etc



容器成功启动以后,验证下能不能登陆:
ssh root@192.168.31.1 -p 22002#密码root

构建一个全静态链接的sshd服务并拷贝到路由器
这里我不想去折腾原生的sshd服务,如果有时间也可以找个原生可以跑的sshd写入到路由器文件系统去,当然直接简单点放路由器的u盘上理论上也行。
import (        "fmt"        "io"        "log"        "os"        "os/exec"        "syscall"        "unsafe"        "github.com/gliderlabs/ssh"        "github.com/creack/pty")func setWinsize(f *os.File, w, h int) {        syscall.Syscall(syscall.SYS_IOCTL, f.Fd(), uintptr(syscall.TIOCSWINSZ),                uintptr(unsafe.Pointer(&struct{ h, w, x, y uint16 }{uint16(h), uint16(w), 0, 0})))}func main() {        ssh.Handle(func(s ssh.Session) {                cmd := exec.Command("/bin/sh")                ptyReq, winCh, isPty := s.Pty()                if isPty {                        cmd.Env = append(cmd.Env, fmt.Sprintf("TERM=%s", ptyReq.Term))                        f, err := pty.Start(cmd)                        if err != nil {                                panic(err)                        }                        go func() {                                for win := range winCh {                                        setWinsize(f, win.Width, win.Height)                                }                        }()                        go func() {                                io.Copy(f, s) // stdin                        }()                        io.Copy(s, f) // stdout                        cmd.Wait()                } else {                        io.WriteString(s, "No PTY requested.\n")                        s.Exit(1)                }        })        log.Println("starting ssh server on port 2222...")        addr := os.Getenv("LSN_ADDR")        if addr == "" {            addr = ":33002"  //这个字符串是监听端口        }        log.Fatal(ssh.ListenAndServe(addr, nil, ssh.PasswordAuth(func(ctx ssh.Context, pass string) bool {                        return pass == "jan4984"//这个字符串是密码                })))}

go mod init testGOPROXY=https://goproxy.cn go mod tidyGOARCH=arm64 GOOS=linux go build -ldflags "-s -w" ./main_sshd.goscp -P 22002 main_sshd root@192.168.31.1:/host/userdisk/#密码root

创建自启动


ssh root@192.168.31.1 -p 22002#密码rootecho '#!/bin/sh/userdisk/main_sshd' > /host/userdisk/sshd.shchmod +x sshd.shecho "*/1 * * * * /userdisk/sshd.sh >/dev/null 2>&1" >> /host/etc/crontabs/root
验证
ssh -oHostKeyAlgorithms=+ssh-rsa root@192.168.31.1 -p 33002




我想请问各位大佬,此方法确实可行吗?开启的是路由器的ssh还是docker的ssh?






只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
 楼主| 发表于 2022-11-24 10:32 | 显示全部楼层
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-11-24 10:46 | 显示全部楼层
docker的
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-11-24 20:11 | 显示全部楼层
开发版开ssh 就是先降级到108 开ssh 固化 再升级到开发版就好了
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-11-24 20:11 | 显示全部楼层
开发版开ssh 就是先降级到108 开ssh 固化 再升级到开发版就好了
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-11-25 10:13 | 显示全部楼层
看不懂
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-11-29 16:54 | 显示全部楼层
可行,我之前就用这种方法开的
你可以理解为他是通过docker容器里的系统把路由里的对应文件编辑掉开机自启动的任务,导致路由在重启以后没有屏蔽掉ssh

点评

现在的新万兆路由器换成了simpledock,路由器的文件夹不能随意挂载了,不知道怎么通过docker突破逃逸  详情 回复 发表于 2022-12-18 14:27
那这个docker的安全性实在堪忧啊,好大的漏洞  详情 回复 发表于 2022-11-29 17:35
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-29 17:35 | 显示全部楼层
buildinghe 发表于 2022-11-29 16:54
可行,我之前就用这种方法开的
你可以理解为他是通过docker容器里的系统把路由里的对应文件编辑掉开机自启 ...

那这个docker的安全性实在堪忧啊,好大的漏洞

点评

本来路由本质上是个开源的openwrt,能进去ssh以后就有了root权限能各种折腾  详情 回复 发表于 2022-11-29 18:18
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-11-29 18:18 | 显示全部楼层
yorkye821 发表于 2022-11-29 17:35
那这个docker的安全性实在堪忧啊,好大的漏洞

本来路由本质上是个开源的openwrt,能进去ssh以后就有了root权限能各种折腾

点评

新抢了个ax10000,默认的docker管理工具是simpledocker,不能挂载宿主机的任意目录了,这回卡住了  详情 回复 发表于 2022-12-16 19:52
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-16 19:52 | 显示全部楼层
buildinghe 发表于 2022-11-29 18:18
本来路由本质上是个开源的openwrt,能进去ssh以后就有了root权限能各种折腾

新抢了个ax10000,默认的docker管理工具是simpledocker,不能挂载宿主机的任意目录了,这回卡住了
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-18 14:27 | 显示全部楼层
buildinghe 发表于 2022-11-29 16:54
可行,我之前就用这种方法开的
你可以理解为他是通过docker容器里的系统把路由里的对应文件编辑掉开机自启 ...

现在的新万兆路由器换成了simpledock,路由器的文件夹不能随意挂载了,不知道怎么通过docker突破逃逸
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-27 18:49

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表