Exécution du script bash d'un utilisateur du même groupe qui se connecte à un serveur à l'aide de la clé SSH d'un autre utilisateur du même groupe

2

J'ai fait un script comme celui-ci:

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

la permission et les privilèges du script sont les suivants:

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

J'ai des clés ssh configurées entre user-1@localto user-1@IP-1, j’ai configuré visudo pour redémarrer le service et tout fonctionne très bien si je lance le script avec user-1.

Je veux tout other_useren group-1être en mesure d'exécuter ce script, mais la clé ssh ne fonctionne pas de cette façon, il essaie de générer une autre clé. Qu'est-ce qui me manque pour faire ça?

Ou devrais-je utiliser une approche différente? J'ai vu que je pourrais utiliser rsync pour déplacer des fichiers, mais qu'en est-il du redémarrage du service?

Merci à tous.

kgtr
la source

Réponses:

0

Ce n'est pas une façon sécurisée de faire les choses.

Une clé est ce qui authentifie les utilisateurs.

  1. Donnez à chaque utilisateur sa propre clé, ou tout le monde peut simplement se connecter en tant que personne simplement en utilisant un autre nom d'utilisateur.

  2. Modifiez votre script pour que chaque nom d'utilisateur soit extrait de la variable d'environnement.

  3. Utilisez auth-agent pour gérer les clés. De cette façon, vous ne devrez pas mettre de chemin d'accès aux clés dans votre script.

  4. Beaucoup de serveurs et beaucoup d'utilisateurs?

    • Vous devriez probablement regarder Kerberos et PAM.

    • Une autre option consiste à créer un script pour ajouter votre liste d'utilisateurs au fichier sudoers et à le diriger vers un shell superutilisateur sur chaque serveur via ssh.

svin83
la source
oui je suis d'accord, c'est pourquoi c'est seulement chez les utilisateurs du même groupe. de toute façon, ma seule option est de créer un seul utilisateur à partager entre les groupes. (pas la meilleure solution pour être honnête). si je modifie le script pour que chaque nom d'utilisateur soit récupéré, je devrai également modifier les autres serveurs et les ajouter à la liste sudoers chaque fois qu'un nouvel utilisateur de ce groupe est inclus et semble nécessiter beaucoup de travail pour un simple script de petite taille.
kgtr
@kgtr Aahh. D'accord. Mise à jour de ma réponse avec quelques informations supplémentaires :)
svin83