Come visualizzare i progressi con sshpass e scp in linux?


9

Nel mio terminale Linux, sto usando questo comando

sshpass -p "pass" scp -r me8@host.ca:/cmshome/me/file /home/me/Desktop

per scaricare un file con una password al suo interno. Senza lo sshpass, posso vedere l'avanzamento del download, ma con esso è solo vuoto fino al termine e non riesco a vederlo.

C'è un modo per vederlo con sshpass?

Risposte:


4

Penso che ciò che chiedi non sia facilmente realizzabile, forse addirittura impossibile con gli script bash di base.

Pertanto, quanto segue non risponde realmente alla tua domanda ma fornisce un altro approccio al tuo problema.

Invece di utilizzare sshpass, è possibile utilizzare il scpcomando plain con un'autenticazione a chiave pubblica senza password. Vedi [1] se non sai di cosa si tratta.

Se si intende utilizzare scp negli script per uso locale , questo è, IMO la strada da percorrere:

  • genera una chiave pubblica senza password
  • utilizzare ssh-copy-idper aggiungere la chiave pubblica al server

È già abbastanza per essere in grado di eseguire il comando senza alcun prompt:

scp -r me8@host.ca:/cmshome/me/file /home/me/Desktop

Per gli script che si desidera distribuire , sshpass con password chiara non è certamente una buona idea, è necessario almeno utilizzare il flag "-e" di sshpass e consentire all'utente di fornire la password come variabile di ambiente per una migliore sicurezza.

In tal caso, l'approccio publickey è un po 'meno conveniente, ma è ancora possibile. Se non puoi permetterti di chiedere all'utente dello script di creare una chiave pubblica, puoi creare una chiave pubblica al volo, copiarla sul server ed eseguire scpsenza alcun prompt:

 #!/bin/bash
 KEY="$HOME/.ssh/id_rsa_example"
 if [ ! -e "$KEY" ]; then
     ssh-keygen -t rsa -N "" -f "$KEY"
     sshpass -e ssh-copy-id -i "${KEY}.pub" me8@host.ca
 fi
 scp -r me8@host.ca:/cmshome/me/file /home/me/Desktop

Finalmente c'è ancora la possibilità di usare rsyncper fare la barra di avanzamento invece:

$ rsync -P --rsh="sshpass -p $PASSWORD ssh -l me8" host.ca:/cmshome/me/file /home/me/Desktop

[1] https://help.ubuntu.com/community/SSH/OpenSSH/Keys

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.