Linux:ssh来托管和使用sudo来运行脚本,运行但脚本的一部分失败
我已经搜索了高低,以获得答案.
我有密钥设置所以ssh进入远程主机不需要密码. 我有sudo设置与该用户,以便我可以以root身份运行所需的命令,没有密码. 我只使用ssh执行远程命令几天(这是一个光荣的发现!). 一点背景: 现在,情况: /usr/bin/ssh username@remotehost sh -c sudo "/etc/rc3.d/S99script start" /usr/bin/ssh username@remotehost sh -c sudo "/etc/rc3.d/S99script start" /usr/bin/ssh username@remotehost 'sh -c sudo "/etc/rc3.d/S99script start"' /usr/bin/ssh username@remotehost sudo /etc/rc3.d/S99script start /usr/bin/ssh username@remotehost "sudo /etc/rc3.d/S99script start" /usr/bin/ssh username@remotehost sudo "/etc/rc3.d/S99script start" /usr/bin/ssh username@remotehost 'sudo "/etc/rc3.d/S99script start"' /usr/bin/ssh username@remotehost sudo su - -c "/etc/rc3.d/S99script start" /usr/bin/ssh username@remotehost 'sudo su - -c "/etc/rc3.d/S99script start"' 我知道我还尝试过其他的东西,但我没有记录下来. 运行这些时我注意到的是,如果我为脚本名称执行了ps -ef | grep,它会显示以下内容: [username's UID] 3070 3069 0 14:42 ? 00:00:00 bash -c /etc/rc3.d/S99script start 那甚至是我做“sh -c sudo”的那些. **添加:我还尝试在“用户名”的主目录中创建一个脚本: 解决方法
首先,更改基于密钥的身份验证,以便您登录到远程系统是有问题的用户 – 然后就不需要使用sudo(因为您已经表明服务没有以root身份运行,所以应该没有安全性关注基于自动密钥的登录).
其次,看看sshd_config(5)中的ForceCommand – 如果你正在使用一个只能做一件事的服务帐户,这会提供额外的安全性.请注意Match指令的引用. 最后,当执行同时涉及系统上文件修改的命令时,sudo会产生意想不到的结果 – 这就是为什么“sudo echo foobar>> / etc / passwd”这样的东西不会像你认为的那样工作.这很可能(虽然我不能确定没有看到有问题的实际脚本)是你当前情况的一个因素.按照我上面的第一个建议,你将完全绕过这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |