Inicie sesión con nombre de usuario y contraseña FTP de Linux

23

¿Cuál es el comando para iniciar sesión con FTP, todo con una línea?

ftp username:[email protected]

dice:

Contraseña requerida para el nombre de usuario: contraseña

Peter Mortensen
fuente
2
Úselo man ftppara averiguarlo, o tal vez ftp --help. No olvides que ftppuede significar diferentes utilidades ...
Basile Starynkevitch
2
ftp ftp://username:[email protected]
1
También debe recordar que la línea de comandos de un proceso determinado es visible para todos los demás usuarios del sistema. Por lo tanto, dar su contraseña como parte de la línea de comandos puede ser un problema de seguridad grave.

Respuestas:

8
ftp -nv yourftpserver.com

entonces user your_username ouser anonymous


Publiqué esta respuesta ya ftp ftp://username:[email protected]que no funcionó para mí.

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
usuario391339
fuente
2
Esto no es tan útil porque requiere un uso interactivo. También podría escribir 'ftp user @ yourserver'.
smaudet
3
esto no responde la pregunta
phil294
7
ftp ftp://username:[email protected]

Sin embargo, podrías haberlo usado con bastante facilidad ftp --help.

Jack
fuente
25
El comando que se muestra produce: "Nombre o servicio desconocido". ftp -help no produce nada parecido con ftp :, // ni nombre de usuario: contraseña @.
CW Holeman II
44
¿Qué versión de Linux estás usando? También obtengo "Nombre o servicio desconocido" cuando pruebo la sintaxis anterior. Estoy usando CentOS 6.
Tim Ludwinski
77
También recibo nombre o servicio desconocido
Kevin Johnson, el
66
no funciona para mí, para mi información en un servidor remoto ubuntu
user391339
66
También me pareció ftp -help inútil y el formato que sugieres no me funciona en Ubuntu 16.
Henry
3

La mejor opción es usar un .netrc junto con algo como gpg por razones de seguridad.

He escrito un script de propósito general para esto, que puedo subir más tarde, pero se reduce a:

gpg -c .netrc

u opcionalmente con una frase de contraseña en la línea de comando y un destino de salida:

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

No se muestra aquí, pero también puede usar claves asimétricas (si las tiene configuradas) con gpg para hacerlo aún más seguro.

Luego, cuando esté listo para iniciar sesión

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

Un ejemplo .netrc:

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

De hecho, mantengo un hash local y la copia original de estos archivos en una computadora diferente a la que utilizo en los archivos .netrc, y verifico el hash del .netrc y el script que ejecuto, pero eso está arriba y más allá de la pregunta original del OP.

smaudet
fuente
Esta es la mejor respuesta, aunque se puede mejorar: (1) las credenciales de usuario dentro de una sola línea de comando se almacenarán en el historial de shell => problemas de seguridad. (2) .netrc funciona también sin problemas de seguridad gpg =>. También verifique que el archivo .netrc tenga los permisos correctos: chmod 600 .netrc(3) sería útil una función de shell como envoltorio alrededor del descifrado, la llamada ftp y la eliminación de .netrc descifrado. Gracias por tu gran respuesta!
matemáticas
Entonces, en lugar de la contraseña FTP, ¿el usuario tiene que escribir la frase de contraseña GPG? Además, si un atacante tiene acceso de escritura a sus archivos personales, hay muchas maneras de revelar sus credenciales tan pronto como los esté usando. En ese escenario, GPG solo realmente ayuda contra un atacante con acceso de solo lectura. ¿Qué es realmente raro, supongo?
Konrad
1

Use netrc . Es mejor que dar la contraseña en la línea de comando.

Nemo
fuente
Esta respuesta no merece una puntuación negativa (aunque le falta un ejemplo de cómo hacerlo).
Peter Mortensen
Estoy de acuerdo, sin embargo, nadie ha cambiado esto (y no lo rechacé).
smaudet
0

Puedes probar

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

con el que luego puedes llamar my_ftp $'ls subfolder\nanothercommand'

Esta solución no es interactiva, pero lo mejor que pude entender

phil294
fuente