¿Cómo puedes hacer un one liner con sftp para iniciar sesión con la contraseña en la misma línea?

16

¿Existe una opción para poner la contraseña en la línea también con sftp?

linux~ $ sftp [email protected]:/DIRECTORY_TO_GO_TO/ 

Me gusta esto

linux~ $ sftp [email protected]:/DIRECTORY_TO_GO_TO/ -p PASSWORD? 
Daniel
fuente

Respuestas:

13

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 considerar la automatización con la expectativa .

Zoredache
fuente
Punto interesante!
Daniel
Sería una idea mucho mejor configurar la autenticación basada en claves si puede. Eso tiene sentido.
Net Runner
Esta url de espera está rota
André Perazzi
44
No puedo entender por qué la gente vota una respuesta que no proporciona una solución.
itoctopus
33

Como otros han mencionado, 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 a pasar ssh

sshpass -p <password> sftp user@host
Yogesh Nachnani
fuente
2
Esto debería ser votado masivamente. Es realmente útil tener sshpass. Algunos proveedores no le permiten crear una carpeta .ssh y scp tampoco está permitido.
NetSquirrel
2
Es bueno que algunas herramientas te respalden: brew search sshpass- "No agregaremos sshpass porque hace que sea demasiado fácil para los usuarios novatos de SSH arruinar la seguridad de SSH".
Oliver
44
Esta debería ser la solución aceptada. El OP preguntó cómo hacer esto específicamente, no por consejos de seguridad (aunque bien intencionados y correctos).
ebr
6

No haga eso: configure la autenticación de clave pública SSH para el inicio de sesión automático.

MikeyB
fuente
¿Puede sftp hacer esto igual que scp?
Daniel
1
@Daniel, tanto sftp como scp están construidos en SSH que permite la autenticación basada en claves.
Zoredache el
5

Solo usa perl, ruby ​​o python para escribir lo que estás 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 más información http://net-ssh.rubyforge.org/sftp/v2/api/index.html

monomito
fuente
Paramiko es Python puro (sin libs adicionales) y funciona muy bien
qwertzguy
3

Como han dicho las otras respuestas, use la autenticación de clave pública. Hay una gran serie de IBM developerWorks , aunque un poco anticuada, que debería explicar todo lo que desea saber al respecto, así como algunas herramientas complementarias útiles como el llavero.

rvf
fuente
2

Para los buscadores que no les importa que la contraseña se pueda ver en el comando de línea de comandos:

sftp userid:password@remoteHostes cómo incluir la contraseña en el sftpcomando de conexión.

ACTUALIZACIÓN: esto resultó ser incorrecto ... ver comentarios

ashnazg
fuente
OpenSSH v5.3p1 y v4.3p2, ambos en Red Hat Enterprise ...
ashnazg
1
Esto resultó ser incorrecto ... este método parecía funcionar para mí porque PHP y su extensión ssh2 se usaban anteriormente en mi código para hacer una autenticación independiente real ... y el comando sftp se ejecutaba más tarde. Fue en esta última pieza donde la sintaxis pareció tener éxito.
ashnazg
1
No se pudo resolver el usuario del nombre de host: no se conoce dicho host. Está considerando ":" en el nombre de usuario, que no es el caso en FileZilla CLI
P Satish Patro
1

Sospecho que hay tantas respuestas como clientes FTP. Un servidor SFTP no debe aceptar información de autenticación hasta que se establezca el cifrado, de modo que el usuario y la contraseña estén protegidos.

Creo que el cliente FileZilla permitirá el paso de la línea de comandos del usuario y la contraseña ... consulte la documentación aquí . Dada la reputación del proyecto FileZilla, esperaría que funcione de forma segura.

tomjedrz
fuente