Comment puis-je sftp vers un serveur si le nom d'utilisateur contient le symbole @


25

Je dois sftp vers un serveur vers un port spécifique mais le nom d'utilisateur contient le symbole @.

supposons que l'utilisateur soit "user@example.com" et que le serveur ftp soit simplement "example.com"

Je terminerai avec

sftp -oPort:8777 user@example.com@example.com

ce qui ne fonctionnera évidemment pas, comme je l'ai testé.

Quel type d'amateur crée un nom d'utilisateur avec @? D'accord, mon patron l'a fait.

Comment résoudre ça?


1
Essayez d'échapper à la "publicité à" comme çasftp -oPort:8777 user\@domain.com@domain.com
Tim

Si vous supprimez la partie du nom d'utilisateur et que vous quittez simplement le domaine, cela vous invite-t-il à saisir le nom d'utilisateur une fois que vous avez entré la commande?
ladaghini

@ladaghini - ceci doit être utilisé dans un script ... aucune invite disponible. Ok, je connais les implications d'avoir un nom d'utilisateur et un mot de passe dans un script, mais ce nom d'utilisateur a une zone limitée. Il doit être sftp car ce serveur ne génère que des noms d'utilisateur pour sftp.
SpaceDog

@Tim ... y échapper n'aide pas.
SpaceDog

Réponses:


33

Transmettez le nom d'utilisateur via l' -o Useroption ou via la Userdirective équivalente dans le fichier de configuration client ( ~/.ssh/config).

sftp -o Port:8777 -o User=user@example.com example.com

Cela vaut pour ssh, scpet sshfsaussi bien. L'utilisation du fichier de configuration au lieu des -ooptions présente l'avantage de travailler également avec des outils qui appellent sshet ne vous permettent pas de passer facilement les options de ligne de commande, le cas échéant.


Ce nom d'utilisateur n'a pas d'accès ssh, juste sftp.
SpaceDog

@DigitalRobot s / ssh / sftp /
ladaghini

@DigitalRobot Cela fonctionne pour les deux sshet sftp(et scpaussi).
Gilles 'SO- arrête d'être méchant'

Continue. Que devons-nous faire si le mot de passe contient également '@' ou '/'
Shicheng Guo

@ShichengGuo ??? Il n'y a aucun problème avec @ou /dans le mot de passe. Vous venez de les taper. SSH ne permet même pas de transmettre le mot de passe sur l'option de ligne de commande ou dans un fichier de configuration.
Gilles 'SO- arrête d'être méchant'

6
sftp -o Port:8777 'user@domain.com'@domain.com

Cela fonctionnerait également, bien que ce soit une forme très médiocre pour eux de fournir aux utilisateurs ce type de nom.


0

Le remplacement de @("commercial at") par +("signe plus)" peut être acceptable sur certains serveurs SFTP:

sftp -oPort:8777 user+example.com@example.com
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.