11
votes

Comment répondre à l'invite de mot de passe lorsque vous utilisez SCP dans un script shell?

Tout d'abord, je suis bien conscient de cela, il y a beaucoup de questions concernant ce sujet. Je les ai lus, mais cela pourrait toujours comprendre une réponse appropriée pour ma situation.

Je voudrais SCP Toute l'ensemble ~ / CS ### / assign1 DIR de la section locale à l'école d'accueil avec un script shell. Ma question est que votre script est une solution dans mon script d'attendre l'invite de mot de passe, puis simulez l'événement de la carte de clé à «Type» dans mon mot de passe?


ici est un guide vraiment détaillé de la configuration de la clé


5 commentaires

Cette question ressemble exactement à votre situation: Stackoverflow. COM / Questions / 50096 / How-Pass-Password-To-SC P


Notez que les réponses à la question duplication putative ne mentionnent pas «SSH Keys» comme mentionné par BZ.


J'espérais qu'il pourrait y avoir une solution utilisant uniquement des commandes simples shell ou unix.


Dupliqué possible de Comment passer de mot de passe sur SCP?


Le lien dans "ICI" n'est pas valide qu'aujourd'hui.


12 Réponses :


11
votes

sont des clés SSH non autorisées? Ce serait une meilleure solution.


0 commentaires

4
votes

Je ne pense pas que vous puissiez facilement faire cela. Ce que vous peut faire est d'utiliser une authentification de clé publique à la place.

quelque chose sur ces lignes xxx

(ou DSA ).

Mais hé, ce n'est pas serveurfault, n'est-ce pas? ; -)


2 commentaires

Le serveur et tout a été configuré par l'école, je n'ai aucun contrôle du réglage à cette fin


Ces paramètres sont dans votre répertoire personnel.



4
votes

envisager d'utiliser des clés ou une bibliothèque externe.

Je ne pense pas que ce soit possible, sinon (j'espère que je ne suis pas tort), car il impose une intrusion automatique de force brute et renifler des mots de passe.

Il existe des bibliothèques qui peuvent faire ce que vous voulez (utiliser le protocole SFTP, ne pas appeler SCP), tels que libsssh < / a>.

Encore une fois, je recommande fortement des clés.


1 commentaires

Allez, automatisation des attaques de force brute peut être faite à l'aide de bibliothèques ;-)




0
votes

Pourquoi pas simplement utiliser l'option "-r" pour la copier récursivement? Ou utiliser rsync à la place?

Vous pouvez également utiliser l'authentification de clé publique, ce qui ne nécessite aucune aide à leur extrémité tant que vous avez un compte d'utilisateur réel. Voir Ceci


0 commentaires


0
votes

Vous ne dites pas quelle plate-forme vous utilisez à la maison et à l'école. En supposant que Linux, Cygwin ou OS / X, vous avez plusieurs options:

  1. authentification clé publique si elle n'a pas été désactivé sur le serveur
  2. SSH-Agent et SSH-Ajouter Pour entrer votre mot de passe une fois par session

    pour l'option (1), vous seriez

    1. génère un keypair à la maison en utilisant ssh-keygen, sans passephrase sur la clé privée. Notez que l'omission que l'omission d'une phrase secrète n'est probablement pas une bonne idée si d'autres personnes utilisent le même ordinateur, mais votre objectif était de se déplacer dans le mot de passe.
    2. Téléchargez la clé publique de votre école compte et placer-le dans ~ / .SSH / Authorisé_keys
    3. Utilisez SCP avec le "-i identityfile" option, où l'identité est la chemin complet de votre clé privée. Ou ajouter une entrée à .ssh / config (voir les pages de l'homme)

      Pour la deuxième option, SSH-Agent vous permet de mettre en cache votre mot de passe dans un processus local une fois par session. Vous définissez une heure d'expiration


0 commentaires

3
votes

Je conviens que vous devriez utiliser des clés. Mais Attendez-vous à peut automatiser l'aspect interactif du processus si vous souhaitez coder votre mot de passe dans un script de texte brut Fichier.


0 commentaires

13
votes

Utilisez "SSHPASS"!

#!/bin/bash
sshpass -p "password" scp -r /some/local/path user@example.com:/some/remote/path


1 commentaires

sshpass semble intéressant. Travailler sur un système qui ne fonctionnera pas bien avec les clés SSH afin que cela puisse faire. Merci!



0
votes

Autant que beaucoup ont déjà dit que l'utilisation des touches SSH serait la meilleure façon la plus sûre et la meilleure possible. Si quelqu'un d'autre se demande toujours autour de l'aide et à la recherche de l'aide, l'aide d'Ubuntu est rapide et simple Way pour utiliser les touches SSH.


0 commentaires

1
votes

Une fois que vous avez configuré ssh-keygen comme expliqué ici , vous pouvez faire

SCP -I ~ / .ssh / id_rsa / local / chemin / to / to / fichier à distance@ip.com: / chemin / in / distance / serveur /

id_rsa est la clé locale générée dans le ssh-keygen Configuration.

Si vous souhaitez réduire la frappe à chaque fois, vous pouvez modifier votre fichier .bash_profile et mettre xxx

puis de votre Terminal do source ~ / .bash_profile . Ensuite, si vous tapez à distance_scp dans votre terminal, il doit exécuter la commande scp sans mot de passe.


0 commentaires

0
votes

Je n'ai trouvé aucun moyen de le faire sur nos systèmes automatiquement - i ssh dans un seul périphérique, puis SSH sur le périphérique suivant, et sur les deux, je ne peux pas installer aucun autre logiciel. Je ne peux donc utiliser que les commandes de script shell existantes. Je peux soit copier tous les fichiers d'un type avec, telle que * .png ou un par un dans mon fichier de script, vous devez entrer le mot de passe pour chaque fichier individuel. La seule chose que j'ai faite qui a été utile était de taper le mot de passe dans un fichier, de le couper et de la coller à chaque invite pour chaque fichier.


0 commentaires