Je sais que ce n'est pas recommandé, mais est-il possible de transmettre le mot de passe de l'utilisateur à scp?
Je voudrais copier un fichier via scp dans le cadre d'un travail par lots et le serveur de réception a bien sûr besoin d'un mot de passe et, non, je ne peux pas facilement changer cela en authentification basée sur les clés.
linux
scp
io-redirection
Argelbargel
la source
la source
Réponses:
Vous pouvez l'écrire avec un outil comme expect (il existe également des liaisons pratiques, comme Pexpect pour Python).
la source
Utilisez sshpass :
ou alors le mot de passe n'apparaît pas dans l'historique de bash
Ce qui précède copie le contenu du chemin de l'hôte distant vers votre local.
Installer:
apt install sshpass
yum install sshpass
port install sshpass
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
la source
apt-get install sshpass
yum -y install sshpass
sshpass -f
listes passwdfile` scp [...]. This way, the password won't show up in
ps`, etc. et vous pouvez protéger le mot de passe avec des autorisations de fichier.il suffit de générer une clé ssh comme:
copier le contenu de
~/.ssh/id_rsa.pub
et enfin l'ajouter aux machines distantes~/.ssh/authorized_keys
assurez-vous que la machine distante dispose des autorisations
0700 for ~./ssh folder
et0600 for ~/.ssh/authorized_keys
la source
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_server>
pour copier la clé sur le serveur distantSi vous vous connectez au serveur depuis Windows, la version Putty de scp ("pscp") vous permet de passer le mot de passe avec le
-pw
paramètre.Ceci est mentionné dans la documentation ici.
la source
pscp -pw 'MyPa$$word' username@servername:/somedir/somefile ~/somedest
(je déteste utiliser du mastic comme ça, mais ça marche)curl peut être utilisé comme alternative à scp pour copier un fichier et il prend en charge un mot de passe sur la ligne de commande.
la source
scp
doit attendre 30+ secondes pour me laisser entrer un mot de passe, mais acurl
fonctionné immédiatement.Vous pouvez utiliser le script 'expect' sur unix / terminal
Par exemple, créez 'test.exp':
exécuter le script
J'espère que ça aide.
la source
Voici un exemple de la façon dont vous le faites avec l'
expect
outil:la source
Personne ne l'a mentionné, mais Putty scp (pscp) a une option -pw pour le mot de passe.
La documentation peut être trouvée ici: https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp
la source
Vous pouvez utiliser
ssh-copy-id
pour ajouter la clé ssh:S'il existe:
la source
Une fois que vous avez configuré
ssh-keygen
comme expliqué ci-dessus, vous pouvez fairescp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/
Si vous voulez réduire la frappe à chaque fois, vous pouvez modifier votre
.bash_profile
fichier et mettreEnsuite, depuis votre terminal, faites
source ~/.bash_profile
. Ensuite, si vous tapezremote_scp
votre terminal, il devrait exécuter lascp
commande sans mot de passe.la source
assurez-vous de disposer de l'outil "attendre" avant, sinon, faites-le
# apt-get install expect
créer un fichier de script avec le contenu suivant. (# vi / root / scriptfile)
spawn scp /path_from/file_name user_name_here@to_host_name:/path_to
expect "password:"
send put_password_here\n;
interact
exécuter le fichier de script avec l'outil "expect"
# expect /root/scriptfile
la source
Voici un pauvre homme de Linux / Python / Attendez -vous comme par exemple basé sur ce blog: Mise à niveau coquilles simples à TTY entièrement interactifs . J'en avais besoin pour les anciennes machines où je ne peux pas installer Expect ou ajouter des modules à Python.
Code:
Production:
la source
Une alternative serait d'ajouter la moitié publique de la clé de l'utilisateur au fichier de clés autorisées sur le système cible. Sur le système à partir duquel vous lancez le transfert, vous pouvez exécuter un démon ssh-agent et ajouter la moitié privée de la clé à l'agent. Le travail par lots peut ensuite être configuré pour utiliser l'agent pour obtenir la clé privée, plutôt que de demander le mot de passe de la clé.
Cela devrait être possible sur un système UNIX / Linux ou sur une plate-forme Windows en utilisant pageant et pscp.
la source
Toutes les solutions mentionnées ci-dessus ne peuvent fonctionner que si vous avez installé l'application ou si vous devez avoir les droits d'administrateur pour installer except ou sshpass.
J'ai trouvé ce lien très utile pour démarrer simplement le scp en arrière-plan.
https://charmyin.github.io/scp/2014/10/07/run-scp-in-background/
la source
étapes pour obtenir sshpass Pour rhel / centos 6:
source: https://community.mapr.com/thread/9040
la source
J'ai trouvé cette réponse vraiment utile ici .
Non seulement vous pouvez y passer le mot de passe, mais il affichera également la barre de progression lors de la copie. Vraiment génial.
la source