我想在远程服务器上执行 shell 脚本,并且该脚本应该由 root 运行,不需要密码(或sudo
在脚本中使用)。有人可以给我一些建议吗?
答案1
答案2
您不需要将 root 密码放入脚本中。
方案A
suid 服务器上的脚本,并使其仅由 root 或您的用户组读取/可执行。
chmod 4750 script.sh
chgrp your_group script.sh
不要忘记将您的用户加入该组。
然后您就ssh user@XXXX '/path/to/script.sh'
可以执行该脚本了。
方案B
创建 SSH 密钥,并将公钥复制到远程服务器。这样您就必须以 root 身份登录,但也无需密码。 (记得用openssl解密你的私钥)
如果你丢失了私钥,那是非常危险的。
答案3
无需root用户的保存方案
在客户端生成 ssh-key
客户: ssh-keygen
将其复制到服务器
服务器:mkdir ~/.ssh
客户:scp ~/.ssh/id_rsa.pub serveruser@server:~/.ssh/authorized_keys
允许您的用户使用 sudo 而不需要密码
服务器:
visudo
serveruser ALL=(ALL) NOPASSWD: /usr/bin/foo /usr/sbin/bar
现在你可以运行这样的命令
客户:ssh serveruser@server 'sudo foo && bar'
//有些服务器我需要ssh -t ...
使用sudo