linux - 如何sudo通过ssh运行本地脚本

标签 linux shell server

我尝试通过 ssh sudo 运行本地脚本,

ssh $HOST < script.sh

我试过了

ssh -t $HOST "sudo -s && bash" < script.sh

其实,我在google上搜索了很多,找到了一些类似的问题,但是,我没有找到可以sudo运行本地脚本的解决方案。

最佳答案

读取的错误信息

$ ssh -t $HOST "sudo -s && bash" < script.sh
Pseudo-terminal will not be allocated because stdin is not a terminal.

非常清楚这里出了什么问题。

在将脚本重定向到远程 session 的 bash 标准输入时,您不能使用 ssh 参数 -t(sudo 需要输入密码)。

如果您可以接受,您可以通过 scp 将本地脚本传输到您的远程机器,然后在不需要 I/O 重定向的情况下执行脚本:

scp script.sh $HOST:/tmp/ && ssh -t $HOST "sudo -s bash /tmp/script.sh"

另一种解决问题的方法是在非交互模式下使用 sudo -n 但是为此你需要在 NOPASSWD 中设置执行用户的远程机器的 sudoers 文件。然后你可以使用

ssh $HOST "sudo -n -s bash" < script.sh

关于linux - 如何sudo通过ssh运行本地脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44916319/

相关文章:

linux - 将视频流 (/dev/video0) 从 Linux 设备传输到 Windows 设备

c++ - openssl libcrypto.a 和 libmysqlclient.a 关于 `ERR_remove_thread_state' 的多重定义

linux - 允许用户仅选择一组显示的 ID

linux - 如何检查字符串是否包含特殊字符(!@#$%^&*()_+)

java - 如何在Java中关闭来自服务器的TCP连接

node.js - 使用 Nodejs 的服务器和使用 XMLHttpRequest 的客户端

rest - POST 和 PUT 请求

android - 如何在 Android 设备上使用 inotifyd 持续监控目录

python - 将命令输出保存到文件并在终端上查看

iphone - 在 bash 中解析 mobileprovision 文件?