Accedi con nome utente e password FTP Linux


23

Qual è il comando per accedere con FTP tutto con una riga?

ftp username:password@my.domain.com

dice:

Password richiesta per il nome utente: password


2
Usa man ftpper scoprirlo, o forse ftp --help. Non dimenticare che ciò ftppuò significare diverse utilità ...
Basile Starynkevitch

2
ftp ftp://username:password@my.domain.com

1
Dovresti anche ricordare che la linea di comando di un determinato processo è visibile a tutti gli altri utenti sul sistema. Pertanto, fornire la password come parte della riga di comando può essere un grave problema di sicurezza.

Risposte:


8
ftp -nv yourftpserver.com

allora user your_username ouser anonymous


Ho pubblicato questa risposta poiché ftp ftp://username:password@my.domain.comnon ha funzionato per me.

Usage: { ftp | pftp } [-46pinegvtd] [hostname]
   -4: use IPv4 addresses only
   -6: use IPv6, nothing else
   -p: enable passive mode (default for pftp)
   -i: turn off prompting during mget
   -n: inhibit auto-login
   -e: disable readline support, if present
   -g: disable filename globbing
   -v: verbose mode
   -t: enable packet tracing [nonfunctional]
   -d: enable debugging

2
Questo non è così utile perché richiede un uso interattivo. Potrei anche digitare "ftp user @ yourserver".
smaudet,

3
questo non risponde alla domanda
phil294

7
ftp ftp://username:password@my.domain.com

Avresti potuto facilmente usarlo ftp --helpperò.


25
Il comando visualizzato produce: "Nome o servizio non noti". ftp -help non produce nulla di simile a ftp :, // né nome utente: password @.
CW Holeman II,

4
Quale versione di Linux stai usando? Ricevo anche "Nome o servizio non noto" quando provo la sintassi sopra. Sto usando CentOS 6.
Tim Ludwinski il

7
Ricevo anche il nome o il servizio sconosciuto
Kevin Johnson,

6
non funziona per me, amico su un server remoto Ubuntu
user391339

6
Ho anche trovato ftp -help inutile e il formato che suggerisci non funziona per me su Ubuntu 16.
Henry,

3

L'opzione migliore è usare un .netrc insieme a qualcosa come gpg per motivi di sicurezza.

Ho scritto uno script per questo scopo generico, che potrò caricare in seguito, ma si riduce a:

gpg -c .netrc

o facoltativamente con una passphrase sulla riga di comando e una destinazione di output:

gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc

Non mostrato qui, ma potresti usare anche chiavi asimmetriche (se le hai configurate) con gpg per renderlo ancora più sicuro.

Quindi quando sei pronto per accedere

gpg .netrc.gpg
# or
gpg --passphrase <secretphrase> -o .netrc .netrc.gpg
ftp yourservername
rm .netrc

Un esempio .netrc:

machine google.com
login <username>
password <secretpassword>

In realtà mantengo un hash locale e la copia originale di questi file su un computer diverso da quello su cui utilizzo i file .netrc e verifico l'hash di .netrc e lo script che eseguo, ma è sopra e oltre la domanda originale del PO.


Questa è la risposta migliore, sebbene possa essere migliorata: (1) le credenziali dell'utente all'interno di una singola riga di comando verranno archiviate nella cronologia della shell => problemi di sicurezza. (2) .netrc funziona anche senza problemi di sicurezza gpg =>. Controlla anche che il file .netrc abbia i permessi corretti: chmod 600 .netrc(3) sarebbe utile una funzione shell come wrapper attorno a decrypt, chiamata ftp e rimozione di .netrc decriptato. Grazie per la tua grande risposta!
matematica

Quindi, invece della password FTP, l'utente deve digitare la passphrase GPG? Inoltre, se un utente malintenzionato ha accesso in scrittura ai tuoi file personali, ci sono molti modi per rivelare le tue credenziali non appena le usi. In quello scenario GPG aiuta davvero solo contro un attaccante con accesso di sola lettura. Il che è davvero raro, immagino?
Konrad

1

Usa netrc . È meglio che fornire la password dalla riga di comando.


Questa risposta non merita un punteggio negativo (anche se manca un esempio di come farlo).
Peter Mortensen,

Sono d'accordo - comunque nessuno lo ha mai cambiato (e non l'ho votato in basso).
smaudet,

0

Puoi provare

my_ftp() {
  ftp -i -n <<EOF
    open $HOST
    user "$USER" "$PASS"
    $@
EOF
}

con cui puoi chiamare my_ftp $'ls subfolder\nanothercommand'

Questa soluzione non è interattiva ma è la migliore che ho potuto capire

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.