Rsync senza password su SSH senza autenticazione chiave [non sicuro]


12

Voglio impostare un lavoro RSync che si connetterebbe tramite SSH.

Ho il mio computer (backup @ myhost) e l'host remoto (test @ remhost) e ho bisogno di eseguire il backup della cartella ~ / qualcosa con tutto il suo contenuto. Il test utente ssh ha accesso READ solo a tutti i file e cartelle nella cartella ~ /. Voglio usare rsync per copiare la cartella test @ remhost: ~ / qualcosa nella cartella backup @ myhost: ~ / bak.

A tale scopo utilizzo il seguente comando tramite BASH su Ubuntu 11.10 (Oneiric):

rsync -avz -e ssh test@remhost:~/something/ ~/bak/

Dopo aver premuto invio ottengo questo:

test@remhost's password:

Digito la password e rsync funziona.

Voglio fare il comando sopra per inserire automaticamente la password e passarla come parametro o per inserirla automaticamente e iniziare il lavoro.

Ho provato a eseguire rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/ma richiede ancora la password ed è fastidioso.

Non voglio conoscere alcun tipo di chiave (RSA, DSA o qualsiasi altra). Voglio solo un semplice comando che mi acceda e faccia il lavoro.

EDIT: un possibile scenario potrebbe essere, se l'autenticazione con chiave pubblica è disabilitata e non è possibile modificarla. Ad esempio, se usi OpenSSH, avresti bisogno dei privilegi di root sul server per modificare il file sshd_confige aggiungere PubkeyAuthentication yes.

EDIT: Questo è ciò che finalmente ha funzionato per me:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

Si noti che questo metodo non è considerato sicuro in quanto invia la password in testo normale ed è vulnerabile agli attacchi man-in-the-middle. Si consiglia di utilizzare la chiave di autenticazione per una maggiore sicurezza.


3
Non otterrai alcuna risposta se dici alle persone di non dirti la risposta.
Mike Scott,

7
Questo è inutile. Qual è il problema con l'autenticazione con chiave? Se è configurata l'autenticazione basata su chiave, da quel momento in poi hai solo un semplice comando che fa il lavoro, automaticamente, esattamente quello che vuoi. Quindi non riesco a vedere qual è il problema con questo. Memorizzare la password da qualche parte per specificarla "automaticamente" è una delle più grandi falle di sicurezza che posso immaginare, che senso ha farlo?
LGB,

Non ho bisogno di nessuno che mi dia lezioni di sicurezza. Conosco già le implicazioni. Devo solo lasciare tutto sul server così com'è e non cambiare nulla. Per tua informazione l'ho già provato con le chiavi e mi chiede ancora la password, quindi il tuo argomento non è valido!
Sorin-Mihai Oprea,

1
No, per buoni motivi non esiste un parametro simile per impostazione predefinita. Guarda la risposta di Migs se vuoi un tale parametro.
lumbric

2
@Sorin Mihai Oprea: Beh, se non funziona per te, è male? Interessante. Per tua informazione: come ingegnere di sistemi Internet che lavora presso un ISP utilizziamo l'autenticazione basata su chiave con ssh su oltre 100 server. Funziona per noi, interessante. Non chiamare qualcosa di brutto solo perché non capisci come funziona e come deve essere configurato. Se hai ragione, non funzionerebbe per nessuno che attirerebbe un po 'di attenzione come un importante bug di implementazione del server SSH :) Quindi il mio agrument non è invalido, non puoi configurarlo bene per qualche motivo. Non è lo stesso, scusa.
LGB,

Risposte:


29

forse prova sshpass .

sembra abbastanza semplice da usare ... è disponibile anche tramite apt.

Stavo cercando qualcosa del genere prima di copiare le mie chiavi, ma dato che ho la mia chiave ovunque ho già bisogno comunque, non ho avuto il tempo di provare questo.

Nota però la dichiarazione di non responsabilità su quel tutorial lì per quanto riguarda la visibilità della tua password.


Per tutti coloro che devono fare questo:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

Sei il benvenuto. Mentre sono d'accordo con il resto della gente qui che l'autenticazione a chiave pubblica è la soluzione migliore per questa faccenda, a volte sono necessari metodi alternativi, a condizione che siamo consapevoli dei compromessi quando si usano alternative.
Migs

Anzi ... ma è per questo che si chiama open source giusto? Aromi multipli ... stesso risultato!
Sorin-Mihai Oprea,

1
GRAZIE per non aver semplicemente detto che le password sono sbagliate, non usarle, alcuni di noi su apparecchiature legacy OLDDDD hanno solo bisogno di queste per arrivare fino all'arrivo della nuova attrezzatura :)
Theodore Howell

6

Una variante della tua soluzione più sicura per le minacce alla sicurezza è quella di archiviare la tua password in un file con permessi stretti e usare il -fflag con shpass:

sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/

La differenza è che l'elenco dei processi in esecuzione non mostrerà la tua password nella riga di comando, ora mostrerà solo il percorso del file in cui si trova la tua password.


Questa risposta è migliore della risposta accettata.
vietnguyen09,

1

Non riesco a immaginare alcuna situazione in cui l'autenticazione a chiave pubblica senza passphrase non sarebbe la soluzione migliore per gli accessi ssh / rsync autmated.

Comunque expectdovrebbe essere un modo per ottenere ciò che vuoi fare. Non puoi reindirizzare la password a ssh, ma questo è qualcosa di molto simile. Come farlo, si risponde qui su StackOverflow .


Grazie per il suggerimento, ma in realtà ho trovato sshpass molto più semplice!
Sorin-Mihai Oprea,

1

Ho scoperto che sshpass funziona, ma poiché il terminale dice che SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':è necessario eseguirlo in questo modo:

sshpass -P passphrase -p 'password' rsync /path/to hostname:/destination/path -av --progress -e ssh

Dove -Pspecifica quale prompt cercare ho scoperto che eseguendo sshpass -ve scoprendo che sta cercando la frase passwordche non c'è.


0

la prima cosa è fare ssh senza passowrd/bypassla password di accesso, come puoi vedere come ssh-copy-id -i ./ssh/id_rsa.pubtarget per la macchina.

Dopo quel test la macchina può essere in remoto tramite ssh senza password, quindi risincronizzarsi sulla via successiva, naturalmente dalla macchina locale alla target/servermacchina

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.