【问题标题】:Mask output of sudo -S when executing a remote command with ssh使用 ssh 执行远程命令时屏蔽 sudo -S 的输出
【发布时间】:2022-10-18 17:15:18
【问题描述】:
我需要在远程主机上执行命令-无需登录- 使用需要sudo 身份验证的ssh:
ssh user@192.168.1.10 "sudo -S rm /mnt/log/test.txt"
然而:使用sudo -S时,密码以明文形式打印到屏幕上;不理想。
尽管通过cat从文件中提供密码是一种选择,但通过将密码写入文件来解决安全问题似乎就像用蜂蜜遮住自己躲避蜂群一样明智;-)
如何使用sudo -S 进行身份验证以执行远程命令,但将其从打印到屏幕上屏蔽?
【问题讨论】:
标签:
ssh
sudo
password-protection
【解决方案1】:
解决方案
考虑到在屏幕上以明文形式显示密码的风险,我认为这个问题必须有无数的解决方案,但我找不到任何解决方案。
下面是我可以设计的最优雅的技巧,可以绕过将密码打印到标准输入,而无需将密码写入文件并cating 它:
read -s -p PASSWORD;echo ${REPLY} | ssh user@192.168.1.10 "sudo -S rm /mnt/log/test.txt"
在哪里:
手术:
您在本地输入密码,它在 ${REPLY} 中被捕获并通过管道传送到 ssh 命令,该命令现在无需将密码打印到标准输入即可进行身份验证。