首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用sudo非交互方式通过ssh发送关机命令

使用sudo非交互方式通过ssh发送关机命令
EN

Security用户
提问于 2018-09-19 10:07:03
回答 2查看 2.5K关注 0票数 1

使用iOS 12和新的Siri快捷方式应用程序,我一直在考虑如何在应用程序中利用SSH命令功能。对于那些不知道的人,该应用程序允许您向stdin发送bash文件或字符串,并将stdout作为纯文本文件返回,使用密码身份验证进行连接(不使用令牌身份验证)。

我想要做的是创建一个快捷方式,通过SSH命令操作在远程服务器上执行sudo shutdown [...]。因为操作是非交互式的,所以我不能交互地输入密码,而且我不愿意将密码作为明文放在操作输入字符串/stdin中。另一方面,我不想将sudo -nNOPASSWD用于shutdown命令,因为这是我不想处理的安全风险。我想可能需要一个随机字符串,以便在shutdown文件中启用NOPASSWD消息(也就是说,sudo shutdown -h now需要密码,但sudo shutdown -h now japos98vh92p3hoab982hfpa不需要密码),但我不知道这是否更安全,甚至可能。

总之,how可以使用非交互式的、非tty会话安全地在SSH上发送关闭命令吗?

EN

回答 2

Security用户

回答已采纳

发布于 2018-11-25 18:35:03

我想出了如何使用NOPASSWD和随机字符串来实现它。我将以下行添加到我的sudoers文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
matt  ALL=(ALL) NOPASSWD: /sbin/shutdown -h now japos98vh92p3hoab982hfpa
matt  ALL=(ALL) NOPASSWD: /sbin/reboot japos98vh92p3hoab982hfpa

这就像我想的那样。:)

票数 0
EN

Security用户

发布于 2018-09-19 14:29:58

这里有许多不同的问题,其中有些不是安全问题(例如,“如何在非交互式SSH会话上使用sudo”实际上是一个编程/超级用户问题),而其中一些问题只有您可以回答(所谓的“安全”)。

因此,我不直接回答你的问题,而是指出与你的两项建议有关的一些安全问题。

我不想将sudo -nNOPASSWD用于shutdown命令,因为这是我不想处理的安全风险。

您可能需要详细说明安全风险是什么,以及为什么不想处理它。显然,您可以使用Siri知道您的用户名和SSH密码,如果iOS devs要构建一种处理sudo提示的机制,或者攻击者要从Siri的存储中提取您的用户名/密码,就足以在该机器上执行任何管理操作。

sudo需要密码的原因是为了防止您在火狐中下载恶意软件,然后将自己变成根。从您在问题中描述的用例来看,ssh user@machine 'sudo cmd'是否要求您输入一次或两次密码,从安全性的角度看没有区别;攻击者要么知道您的密码,要么他们不知道。

sudo shutdown -h now japos98vh92p3hoab982hfpa

我不知道你将如何做到这一点(但是如果你能在评论中解释一下,我很乐意学习)。跳过它(以及您在进程中打开的任何潜在安全漏洞),我想这将成为第二个管理密码,因此攻击者需要知道您的帐户密码和这个“管理密码”才能执行shutdown。这个“管理密码”将出现在更多的地方:在Siri应用程序中的明文中,在用户的bash历史记录中,在运行过程树中(尝试ps -u),可能还有其他地方--比如sudo通过stdin获取密码,而不是通过命令行参数。

所以假设

  1. 攻击者已经进入您的帐户--或者是通过SSH,或者是因为您在firefox中下载了恶意软件并运行了它。
  2. 您以前运行过这个命令,它在您的bash历史中

在安全性方面,我不确定这与将shutdown设置为NOPASSWD有什么区别。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/194098

复制
相关文章
Linux 非交互式SSH
ssh是linux管理时常用的一个服务,ssh有个特点,属于交互式操作,就是当你执行ssh时,他会要求你手动输入密码 这就给shell脚本带来了麻烦,如果想在脚本中使用ssh进行自动化远程操作,非常不方便 ssh支持双方配置后的免密码操作,但比较麻烦 还有一种常用的方式:expect,把密码放入脚本,执行expect,他可以帮助我们自动完成输入密码的这个交互,expect实质是进行模拟操作,执行脚本时会感觉到这个动作 下面介绍下 sshpass,以非交互式操作ssh,可以直接在命令行指定密码,方便了
dys
2018/04/03
4.1K0
Sudo 权限问题:用户无法使用 sudo 命令
是山河呀
2025/02/04
2020
pexpect模块实现ssh交互命令
new_connection = 'Are you sure you want to continue connecting'
py3study
2020/01/14
1K0
使用python通过接口方式发送钉钉消息
目前钉钉支持群聊消息的通过接口发送,需要建立群聊: 1、创建群聊 2、群聊设置自定义机器人: 根据提示自定义设置,最后获取webhook地址 相关说明文档 3、发送消息实现: def
JQ实验室
2022/01/11
2K0
使用python通过接口方式发送钉钉消息
Linux sudo 命令使用简介
#编辑/etc/sudoers (注意,这里使用 visudo 而不是 vi 来设置。)
授客
2019/09/11
2.4K0
Linux命令su、sudo、sudo su、sudo -i使用和区别
sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。另外一个区别是其默认行为。sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。
杰哥的IT之旅
2020/09/22
16.1K0
Linux命令su、sudo、sudo su、sudo -i使用和区别
sudo 命令
sudo 命令使用 第一步:创建普通用户(原始还有一个root 用户) 使用普通用户临时使用超级管理员权限
云缓缓知我意
2021/04/15
1.4K0
Linux中su,sudo,sudo su,sudo -i命令的使用和区别
sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。
杰哥的IT之旅
2021/10/26
10K0
github添加ssh密钥,通过ssh方式推送代码
很多人在使用github的时候,如果还是使用https的方式推送代码的话,可能会发现推送不上去,官方会建议你使用ssh的方式进行代码推送。通过ssh方式推送代码,速度更快,更高效,而且还不用每次输密码,缺点就是要在你自己的本机以及github上面做一些配置。这些配置并不难,很简单,前期花一点点时间,可以避免很多繁琐的事情。
一点sir
2024/08/05
1230
github添加ssh密钥,通过ssh方式推送代码
设置非root账号不用sudo直接执行docker命令
环境信息 操作系统:Ubuntu 20.04 LTS 桌面版 Docker:19.03.10 现状 当前账号是willzhao,直接执行docker xxx命令会报以下错误: willzhao@ideapad:~$ docker images Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdo
程序员欣宸
2022/05/09
7460
设置非root账号不用sudo直接执行docker命令
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 环境信息 操作系统:Ubuntu 20.04 LTS 桌面版 Docker:19.03.10 现状 当前账号是willzhao,直接执行docker xxx命令会报以下错误: willzhao@ideapad:~$ docker images Got permission denied while trying to connect to the Docker d
程序员欣宸
2021/04/25
2.8K0
设置非root账号不用sudo直接执行docker命令
计算机定时关机命令,定时关机命令,小编教你怎么使用命令行定时关机
大家好,又见面了,我是你们的朋友全栈君。 当我们在操作电脑的时候,有时会有需要定时关机,或者不在电脑前操作是需要过段时间自动关机,但是没有自带的定时关机软件,很多电脑用户又不喜欢安装第三方软件来完成该
全栈程序员站长
2022/08/28
1.7K0
计算机定时关机命令,定时关机命令,小编教你怎么使用命令行定时关机
sudo命令使用的几个场景
在linux系统下,普通用户无法直接执行root用户权限下的命令,如果想让普通用户执行只有root用户才能执行的操作命令。 下面罗列下经常使用sudo命令的几个场景: 1.用户无权限执行root命令 普通用户登录 shell 之后,如果自身没有权限访问某个文件或执行某个命令时,若该用户获得root授权,那么就可以在需要执行的命令之前加上 sudo,临时切换到root用户的权限,完成相关的操作。在sudo于1980年前后被写出之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须
洗尽了浮华
2018/01/22
1.5K0
3.8 sudo命令
sudo命令,可以不切换用户就可以获取其他用户的权限来执行相关命令。(通常情况就是,给普通用户授权root用户的身份)
运维小白
2022/01/06
9660
Linux使用shutdown命令:关机和重启
在早期的 Linux 系统中,应该尽量使用 shutdown 命令来进行关机和重启。因为在那时的 Linux 中,只有 shutdown 命令在关机或重启之前会正确地中止进程及服务,所以我们一直认为 shutdown 才是最安全的关机与重启命令。 而在现在的系统中,一些其他的命令(如 reboot)也会正确地中止进程及服务,但我们仍建议使用 shutdown 命令来进行关机和重启。 shutdown 命令的基本信息如下。
用户9042463
2021/09/30
8.7K0
如何以非交互方式将参数传递给交互式脚本
我有一个 Bash 脚本,它使用 read 命令以交互方式读取命令参数,例如 yes/no 选项。是否有一种方法可以在非交互式脚本中调用这个脚本,并将默认选项值作为参数传递?
程序熵
2024/03/06
1380
如何以非交互方式将参数传递给交互式脚本
Hue中使用Oozie创建Ssh工作流时sudo命令执行失败问题分析
在使用Hue创建Ssh的Oozie工作流,在Shell脚本中执行sudo命令失败,异常如下:
Fayson
2018/03/29
1.6K0
Hue中使用Oozie创建Ssh工作流时sudo命令执行失败问题分析
计算机定时关机命令,电脑定时关机怎么设置_电脑定时关机命令
电脑定时关机怎么设置的步骤是这样的:例如,要使电脑在23:00的时候定时自动关机,单击“开始”-“运行”命令,在打开的“运行”对话框中输入at 23:00 shutdown -s,单击”确定”按钮关闭“运行”对话框即可。这样,您就可以在23:00点时电脑就会弹出“系统关机”对话框,默认30秒钟倒计时并提示保存工作。(当你不想它运行时:shutdown -a)
全栈程序员站长
2022/08/28
2.8K0
计算机定时关机命令,电脑定时关机怎么设置_电脑定时关机命令
windows自动关机命令_windows取消自动关机命令
2.打开记事本,输入 shutdown -s -t 1260 ;1260是指1260秒,即21分钟内关机。可以修改成别的时间。
全栈程序员站长
2022/09/20
2.3K0
windows自动关机命令_windows取消自动关机命令
linux下su和sudo命令如何使用?
  su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有。解决办法无法有两个,一是退出beinan用户,重新以root用户登录,但这种办法并不是最好的;二是我们没有必要退出beinan用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root。我们可以看到当然通过su 切换是一种比较好的办法;
会长君
2023/04/25
3.1K0

相似问题

通过无密码SSH进行身份验证时的Sudo密码

20

作为特权用户,ssh比ssh和sudo更安全吗?

40

在非tty外壳程序的一行中执行sudo命令

20

在使用ssh键时允许sudo访问的最佳方法

10

通过非HTTPS连接发送明文密码

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文