¿Cómo hago sftp a un servidor si el nombre de usuario contiene el símbolo @

25

Tengo que enviar a un servidor a un puerto específico, pero el nombre de usuario contiene el símbolo @.

supongamos que el usuario es "[email protected]" y el servidor ftp es solo "ejemplo.com"

Terminaré con

sftp -oPort:8777 [email protected]@example.com

lo que obviamente no funcionará, como lo he probado.

¿Qué tipo de aficionado crea un nombre de usuario con @? Ok, mi jefe lo hizo.

¿Cómo resuelvo eso?

Perro espacial
fuente
1
Intenta escapar del "comercial a las" asísftp -oPort:8777 user\@[email protected]
Tim
Si elimina la parte del nombre de usuario y simplemente abandona el dominio, ¿le solicitará el nombre de usuario una vez que haya ingresado el comando?
ladaghini
@ladaghini: esto se debe usar dentro de un script ... no hay avisos disponibles. Ok, sé las implicaciones de tener un nombre de usuario y contraseña en un script, pero este nombre de usuario tiene un área limitada. Tiene que ser sftp porque este servidor solo genera nombres de usuario para sftp.
SpaceDog
@Tim ... escapar no ayuda.
SpaceDog

Respuestas:

33

Pase el nombre de usuario a través de la -o Useropción, o a través de la Userdirectiva equivalente en el archivo de configuración del cliente ( ~/.ssh/config).

sftp -o Port:8777 -o [email protected] example.com

Esto se aplica a ssh, scpy sshfstambién. Usar el archivo de configuración en lugar de las -oopciones tiene la ventaja de trabajar también con herramientas que llaman sshy no le permiten pasar fácilmente las opciones de la línea de comandos si es que lo hace.

Gilles 'SO- deja de ser malvado'
fuente
Este nombre de usuario no tiene acceso ssh, solo sftp.
SpaceDog
@DigitalRobot s / ssh / sftp /
ladaghini
@DigitalRobot Esto funciona para ambos sshy sftp(y scptambién).
Gilles 'SO- deja de ser malvado'
Seguir. ¿Qué debemos hacer si el passwd también contiene '@' o '/'?
Shicheng Guo
@ShichengGuo ??? No hay problema con @o /en la contraseña. Simplemente los escribes. SSH ni siquiera permite pasar la contraseña en la opción de línea de comando o en un archivo de configuración.
Gilles 'SO- deja de ser malvado'
6
sftp -o Port:8777 '[email protected]'@domain.com

Esto también funcionaría, aunque en realidad es una forma bastante pobre para que proporcionen a los usuarios este tipo de nombre.

SFTP Special
fuente
0

Reemplazar @("comercial en") con +("signo más") podría ser aceptable en algunos servidores SFTP:

sftp -oPort:8777 [email protected]
AntonK
fuente