Connectez-vous avec le nom d'utilisateur et le mot de passe FTP Linux

23

Quelle est la commande pour se connecter avec FTP avec une seule ligne?

ftp username:[email protected]

dit:

Mot de passe requis pour le nom d'utilisateur: mot de passe

Peter Mortensen
la source
2
Utilisez man ftppour découvrir, ou peut-être ftp --help. N'oubliez pas que cela ftppeut signifier différents utilitaires ....
Basile Starynkevitch
2
ftp ftp://username:[email protected]
1
Vous devez également vous rappeler que la ligne de commande d'un processus donné est visible pour tous les autres utilisateurs du système. Par conséquent, donner votre mot de passe dans le cadre de la ligne de commande peut être un grave problème de sécurité.

Réponses:

8
ftp -nv yourftpserver.com

alors user your_username ouuser anonymous


J'ai posté cette réponse car ftp ftp://username:[email protected]ne fonctionnait pas pour moi.

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
user391339
la source
2
Ce n'est pas très utile car cela nécessite une utilisation interactive. Je pourrais aussi bien taper 'ftp user @ yourserver'.
smaudet
3
cela ne répond pas à la question
phil294
7
ftp ftp://username:[email protected]

Vous auriez cependant pu facilement l'utiliser ftp --help.

Jack
la source
25
La commande affichée produit: "Nom ou service inconnu". ftp -help ne produit rien de tel qu'avec ftp :, // ni username: password @.
CW Holeman II
4
Quelle version de Linux utilisez-vous? J'obtiens également «Nom ou service inconnu» lorsque j'essaie la syntaxe ci-dessus. J'utilise CentOS 6.
Tim Ludwinski
7
Je reçois également un nom ou un service inconnu
Kevin Johnson
6
ne fonctionne pas pour moi, fyi sur un serveur distant ubuntu
user391339
6
J'ai également trouvé ftp -help inutile et le format que vous proposez ne fonctionne pas pour moi sur Ubuntu 16.
Henry
3

La meilleure option est d'utiliser un .netrc avec quelque chose comme gpg à des fins de sécurité.

J'ai écrit un script à usage général pour cela, que je pourrai télécharger plus tard, mais cela se résume à:

gpg -c .netrc

ou éventuellement avec une phrase de passe sur la ligne de commande et une destination de sortie:

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

Non illustré ici, mais vous pouvez également utiliser des clés asymétriques (si vous les avez configurées) avec gpg pour rendre cela encore plus sécurisé.

Ensuite, lorsque vous êtes prêt à vous connecter

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

Un exemple .netrc:

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

En fait, je garde un hachage local et la copie d'origine de ces fichiers sur un ordinateur différent de celui sur lequel j'utilise les fichiers .netrc et vérifie le hachage du .netrc et du script que j'exécute, mais c'est au-dessus et au-delà de la question initiale du PO.

smaudet
la source
C'est la meilleure réponse, bien qu'elle puisse être améliorée: (1) les informations d'identification de l'utilisateur dans une seule ligne de commande seront stockées dans l'historique du shell => problèmes de sécurité. (2) .netrc fonctionne également sans gpg => problèmes de sécurité. Vérifiez également que le fichier .netrc dispose des autorisations correctes: chmod 600 .netrc(3) une fonction shell comme wrapper autour du décryptage, de l'appel ftp et de la suppression du .netrc décrypté serait utile. Merci pour votre excellente réponse!
mathématiques
Donc, au lieu du mot de passe FTP, l'utilisateur doit saisir la phrase de passe GPG? De plus, si un attaquant a un accès en écriture à vos fichiers personnels, il existe de nombreuses façons de révéler vos informations d'identification dès que vous les utilisez. Dans ce scénario, GPG n'aide vraiment que contre un attaquant disposant d'un accès en lecture seule. Ce qui est vraiment rare, je suppose?
Konrad
1

Utilisez netrc . C'est mieux que de donner le mot de passe sur la ligne de commande.

Nemo
la source
Cette réponse ne mérite pas un score négatif (bien qu'il manque un exemple de comment le faire).
Peter Mortensen
Je suis d'accord - mais personne n'a jamais changé cela (et je ne l'ai pas dévalorisé).
smaudet
0

Tu peux essayer

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

avec lequel vous pouvez ensuite appeler my_ftp $'ls subfolder\nanothercommand'

Cette solution n'est pas interactive mais du mieux que j'ai pu comprendre

phil294
la source