运行同一组用户的 bash 脚本,该脚本使用同一组的另一个用户的 SSH 密钥连接到服务器

运行同一组用户的 bash 脚本,该脚本使用同一组的另一个用户的 SSH 密钥连接到服务器

我制作了一个类似这样的脚本:

sync.sh
#!/bin/bash
#1st backup the file
scp user-1@ip-1:/directory/file1 /backup/location/
#2nd sync/overwrite my file to that server
scp /local/file2 user-1@ip-1:/directory/file1
#3rd restart service associated with that file
ssh -t user-1@IP-1 << EOF
  sudo systemctl restart some.service
EOF

脚本权限和特权如下:

-rwxr-x--x. 1 user-1 group-1 ~/sync.sh

user-1@local我已在到之间配置了 ssh-keys user-1@IP-1,已配置 visudo 来重新启动服务,如果我使用运行脚本,一切都会正常运行user-1

我希望任何人other_usergroup-1可以运行此脚本,但 ssh-key 无法以这种方式工作,它会尝试生成另一个密钥。我缺少什么才能做到这一点?

或者我应该使用其他方法?我已经看到我可以使用 rsync 来移动文件,但是重新启动服务怎么办?

谢谢你们。

答案1

这不是一个安全的做事方式。

密钥用于验证用户身份。

  1. 为每个用户提供他们自己的密钥,或者每个人都可以简单地使用其他用户名以其他人的身份登录。

  2. 修改您的脚本,以便从环境变量中获取每个用户名。

  3. 使用 auth-agent 来管理密钥。这样您就不必在脚本中输入密钥的路径。

  4. 有很多服务器和很多用户吗?

    • 您可能应该看看 Kerberos 和 PAM。

    • 另一种选择是编写一个脚本,将用户列表添加到 sudoers 文件中,然后通过 ssh 将该脚本传送到每台服务器上的超级用户 shell。

相关内容