2016-10-28 4 views
-1

J'ai 2 serveurs différents qui im ​​accéder à distance via SSH. J'écris actuellement un script bash qui va déplacer certaines archives du serveur A vers le serveur B chaque semaine via crontab. Le script va fonctionner à partir du serveur A. à un moment donné, il doit se connecter au serveur B. J'ai configuré les clés RSA et elles fonctionnent correctement (j'ai lancé l'utilisateur ssh @ A de B et il ne demande plus de mot de passe juste à).connexion à distance à distance via ssh

Le problème est l'utilisateur @ B je n'ai pas les permissions d'écriture (la connexion root de ssh est désactivée sur B). afin d'obtenir un accès root, je dois me connecter avec mon utilisateur habituel @ B, puis tapez su - et entrez le mot de passe root, ce que j'ai et cela fonctionne directement depuis B. Ma question est la suivante: Puis-je programmer le script pour ce faire (tapez su - et entrez le mot de passe root) automatiquement après vous être connecté à B en tant qu'utilisateur habituel @ B via RSA? puis continuez à scp les fichiers dans le dossier de destination sur B?

grâce

+0

Ce Q ne concerne pas la programmation telle que définie pour StackOverflow. Il ** peut être plus approprié sur le S.E. site similaire http://superuser.com. Pensez à utiliser le lien 'flag' au bas de votre Q et demandez au modérateur de le déplacer. Merci de ne pas poster le même Q sur 2 sites différents. Veuillez lire http://stackoverflow.com/tour, http://stackoverflow.com/help/how-to-ask, http://stackoverflow.com/help/dont-ask et http://stackoverflow.com/help/mcve avant de poster plus de Qs ici. Merci et Bonne chance. – shellter

+0

Pouvez-vous simplement modifier les autorisations sur le dossier de destination, permettant à votre utilisateur d'y placer des fichiers? – Robert

Répondre

0

Oui, vous pouvez le faire avec sudo. En configurant sudo (en utilisant visudo comme décrit dans "man 5 sudoers"), vous pouvez permettre à un utilisateur sans privilège d'exécuter certaines commandes en tant que root sans nécessiter de mot de passe.

Ensuite, vous pouvez exécuter « nom d'hôte ssh sudo sometask »

Donc, pour votre scénario, première copie sur les fichiers à la destination avec « scp », puis exécuter un script avec priviledges élevé sur l'hôte cible en utilisant sudo.

Si vous voulez faire les deux en une seule fois ce que vous pouvez tuyau faire est de lancer le goudron localement, dans ssh hostB sudo tar -C directory xf - si un goudron en tant que root sur hôteB sera en mesure de le décompresser avec les permissions root:

tar cf - directory | ssh hostB sudo tar -C directory xf -# 

(non testé)

+0

Donc, fondamentalement, je peux permettre à mon utilisateur @ B de lancer scp sans avoir les privilèges root .. d'accord, merci de répondre, je vais y jeter un coup d'oeil. – heronpilot

+0

non, scp fonctionnera en tant qu'utilisateur sur la machine distante. Si vous souhaitez créer directement les fichiers avec privilèges privilégiés, utilisez la solution "tar" avec "sudo" que j'ai ajouté à la solution. – neuhaus