Question

Tout d'abord, je suis bien conscient qu'il ya beaucoup de questions sur ce sujet. Je les ai lu, mais je ne pouvais toujours trouver une réponse appropriée à ma situation.

Je voudrais scp l'ensemble ~/cs###/assign1 dir du local à la maison avec l'école dir un script shell. Ma question est, est-il un moyen dans mon script d'attendre l'invite de mot de passe, puis simuler l'événement clé du conseil d'administration à « type » dans mon mot de passe?


est un guide très détaillé de la façon de mettre en place la touche

Était-ce utile?

La solution

sont les clés ssh ne peuvent pas? Ce serait une meilleure solution.

Autres conseils

Utilisez "sshpass"!

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

Je ne pense pas que vous pouvez facilement le faire. Qu'est-ce que vous peut faire est d'utiliser à la place l'authentification par clé publique.

Quelque chose le long de ces lignes

ssh-keygen -t rsa
ssh school mkdir .ssh/
cat ~/.ssh/id_rsa.pub | ssh school "cat >>.ssh/authorized_keys"

(ou dsa).

Mais bon, il est ServerFault pas, est-il? ; -)

Pensez à l'aide des touches, ou une bibliothèque externe.

Je ne pense pas qu'il soit possible autrement (je l'espère, je ne me trompe pas), car elle impose l'intrusion de la force brutale et automatique renifler des mots de passe.

Il existe des bibliothèques qui peuvent faire ce que vous voulez (utilisez le protocole SFTP, ne pas appeler scp), comme libssh .

Encore une fois, je vous recommande vivement les clés.

Quelque chose comme ça - http://code.google.com/p/enchanter/?

Je suis d'accord que vous devez utiliser les clés. Mais attendent peut automatiser l'aspect interactif du processus si vous voulez coder votre mot de passe dans un script texte brut fichier.

Si vous pouvez monter le répertoire à partir d'une machine Windows (par exemple via AFS, NFS ou SMB qui ont tous fait les laboratoires de Windows de mon université), vous pouvez utiliser pscp avec le commutateur -pw.

Pourquoi ne pas simplement utiliser l'option « -r » pour le copier récursive? Ou plutôt utiliser rsync?

Vous pouvez également utiliser l'authentification par clé publique, qui ne nécessite aucune aide à leur fin aussi longtemps que vous avez un compte utilisateur réel. Voir cette

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

  1. l'authentification par clé publique si elle n'a pas été désactivé sur le serveur
  2. ssh-agent et ssh-add entrer votre mot de passe une fois par session

Pour l'option (1), vous

  1. générer une paire de clés à la maison en utilisant ssh-keygen, sans mot de passe sur la clé privée. Notez que l'omission d'un mot de passe est probablement pas une bonne idée si d'autres personnes utilisent le même ordinateur, mais votre objectif était de se déplacer d'avoir à taper le mot de passe.
  2. télécharger la clé publique à votre école compte et le placer dans ~ / .ssh / authorized_keys
  3. Utilisez scp avec le "-i IdentityFile" option où IdentityFile est le chemin complet à votre clé privée. Ou, ajoutez une entrée à .ssh / config (voir les pages de manuel)

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

Comme beaucoup l'ont déjà dit que l'aide des touches de ssh serait le plus sûr et le meilleur. Si quelqu'un d'autre se demande toujours là et chercher de l'aide, dans l'aide Ubuntu il y a un moyen rapide et simple façon d'utiliser des clés ssh.

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

scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

id_rsa est la clé locale générée dans la configuration du ssh-keygen.

Si vous voulez réduire en tapant chaque fois, vous pouvez modifier votre fichier .bash_profile et de mettre

alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

Ensuite, à partir de votre terminal ne source ~/.bash_profile. Par la suite, si vous tapez remote_scp dans votre terminal, il doit exécuter la commande scp sans mot de passe.

J'ai trouvé aucun moyen de le faire sur nos systèmes automatiquement - je ssh dans un seul appareil, puis ssh à l'appareil suivant, et à la fois, je ne peux pas installer tout autre logiciel. Je ne peux donc utiliser les commandes de script shell existants. Je peux soit copier tous les fichiers d'un type avec, comme * .png ou un par un dans mon fichier de script, avoir à saisir le mot de passe pour chaque fichier. La seule chose que je l'ai fait cela a été utile était de taper le mot de passe dans un fichier, couper, et être en mesure de le coller à chaque invite pour chaque fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top