Solución:
Solución 1:
Como han mencionado otros, una contraseña de línea de comandos debería ser el último recurso.
Sin embargo, si nada más es posible; uno puede ir por el pase ssh
sshpass -p <password> sftp [email protected]
Solucion 2:
Generalmente, incluir una contraseña en una línea de comando se considera un riesgo de seguridad porque se mostrará a cualquier otra persona que pueda ejecutar ps / top, y puede guardarse en el historial de su shell.
Sería una idea mucho mejor configurar la autenticación basada en claves si puede.
Además, no creo que sea posible con sftp. Está destinado a ser utilizado para transferencias seguras. Si realmente tuvo que hacer algo como esto y no tiene otra opción, entonces probablemente deba buscar la automatización con expectativa.
Solución 3:
No hagas eso: configura la autenticación de clave pública SSH para el inicio de sesión automático.
Solución 4:
Simplemente use perl, ruby o python para escribir lo que está tratando de hacer. En el caso de ruby, es solo (tomado de los documentos de la API net-sftp):
require 'net/sftp'
Net::SFTP.start('host', 'username', :password => 'password') do |sftp|
# upload a file or directory to the remote host
sftp.upload!("/path/to/local", "/path/to/remote")
end
Para obtener más información http://net-ssh.rubyforge.org/sftp/v2/api/index.html
Solución 5:
Como han indicado las otras respuestas, use la autenticación de clave pública. Existe una gran serie de IBM developerWorks, aunque un poco anticuada, que debería explicar todo lo que desea saber sobre ella, así como algunas herramientas complementarias útiles como el llavero.