La mejor opción es usar un .netrc junto con algo como gpg por motivos de seguridad.
He escrito un script de propósito general para esto, que puede que suba más tarde, pero se reduce a:
gpg -c .netrc
u opcionalmente con una frase de contraseña en la línea de comandos y un destino de salida:
gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc
No se muestra aquí, pero podría utilizar adicionalmente claves asimétricas (si las tiene configuradas) con gpg para hacer esto 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 de .netrc:
machine google.com
login <username>
password <secretpassword>
En realidad, mantengo un hash local y la copia original de estos archivos en una computadora diferente a la que uso los archivos .netrc, y verifico el hash del .netrc y el script que ejecuto, pero eso está por encima de la pregunta original del OP.