所以我有一个脚本,需要作为根远程执行。 这对大多数Linux发行版来说不是问题,因为他们有一个root帐号。 但是由于Ubuntu没有,以root身份执行任何操作都需要两步input帐户密码两次 – 一次login,一次sudo。 启动脚本的SSH过程是自动的,所以它不能暂停第二次密码请求的用户input。
有没有人知道,短的黑客Ubuntu重新启用根(不是一个选项),如果无人值守的SSH脚本在目标机器上执行超级用户权限是可能的? 另外,Debian没有经验,Debian也是这样吗?
您可以ssh使用基于密钥的唯一身份validation,然后编辑sudoers文件不需要密码。 这将在您描述的两个步骤中消除密码。
查看基于SSH密钥的SSH访问:
ssh-keygen ssh-copy-id dest-server
而对于sudoers文件:
sudo visudo -f /etc/sudoers #uncomment the following and then add yourself to the sudo group # %sudo ALL=NOPASSWD: ALL
更好的办法是不需要sudo密码,只需要你自动执行这个特定function的命令。 在这里看到我的答案。
参考文献:
设置一个用户没有密码
你如何设置SSH来使用密钥而不是用户名/密码进行身份validation?
这对大多数Linux发行版来说不是问题,因为他们有一个root帐号。 但是因为Ubuntu没有
这是一个严重的判决吗? 我还没有看到一个没有root账户的* nix系统。
sudo su
你是根。 之后使用passwd来设置root密码。 和BAM! 你可以作为根login(但只有当你在SSH中启用RootLogin)!
更新:或使用其他人build议的ssh密钥。
默认情况下以root帐户连接。 您只需要为root帐户设置您的ssh密钥。 将您的公钥添加到/root/.ssh/authorized_keys
Tou也可以创build一个服务帐户来login,使用NOPASSWD进行sudo设置。
serviceaccount ALL = NOPASSWD: ALL
在Debian中默认情况下,root帐户将在安装过程中分配一个密码。 尽pipe如果您使用专家模式安装程序,您可以select一个选项来禁用root帐户,并像Ubuntu一样设置sudo。 我非常喜欢禁用的root帐户,因为我们有很多pipe理员,我希望人们以自己的身份login,然后使用sudo执行pipe理任务,以便创build根活动的日志。