来自grunt-ssh的第 143期:
我正在尝试执行以下操作:
- 以普通用户身份通过 ssh 连接
- 切换到root用户并执行具有权限的命令,例如:ls /root
- 退出根
- 以普通用户的身份关闭连接(这可能是可选的)
我有这个配置
sshexec: {
test: {
command: [
'su', // switch to root user
'ls /root', // execute command with privileges
'exit', // exit root session
],
options: {
host: '<%= env.host %>', // host connection
username: '<%= env.username %>', // regular user
password: '<%= env.password %>', // regular user password
pty: true,
}
}
}
来自文档:
pty:布尔值/对象
设置为 true 以分配具有默认值的伪 tty,或包含特定伪 tty 设置的对象(请参阅“伪 TTY 设置”)。在处理期望从实际终端输入的远程进程(例如 sudo 的密码提示)时,设置伪 tty 可能很有用。
显然没有办法(或至少是示例)来执行我正在搜索的内容,但我认为这样的用例不会很奇怪。是否可以使用此库实现上述步骤?有人可以提供有关可能的 pty 对象配置的更多信息,以及有关它的优点/限制吗?
重要的
由于主机的安全措施,我不能:
- 直接以 root 身份通过 ssh 连接
- 将密码传递给 sudo 命令,例如:“echo | sudo -S ls /root”