ssh:处理 bash 中的嵌套字符串

ssh: dealing with nested strings in bash

我在一个有很多安全设置的系统上使用 ssh。我要运行的bash命令是:

ssh –t user@address su –c 'echo “user ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers.d/permissions'

此命令无效,因为 su 无法将其后的内容识别为命令。 ssh 默认禁用 EOF,网络中所有计算机默认禁用 EOSU。主机上的用户也禁用 Sudo。有没有一种干净的方法可以在尽可能少地调用 su 的同时做到这一点?

注意:我已经做了 keygen 的事情所以 ssh 登录是无密码的,默认情况下禁用通过 ssh 的 root 登录。

当您将命令传递给 ssh 时,它需要从本地 shell 和远程 shell.

引用

针对您的情况的解决方法是稍微移动第一个单引号,以防止本地 shell 完全混淆命令。在内部引用中,我们使用嵌套双引号,其中内部的双引号是反斜杠。

ssh –t user@address 'su –c "echo \"user ALL=(ALL) NOPASSWD:ALL\"" >> /etc/sudoers.d/permissions’