Como eu sftp para um servidor se o nome de usuário contiver @ símbolo

25

Eu tenho que sftp para um servidor para uma porta específica, mas o nome de usuário contém o símbolo @.

suponha que o usuário seja "[email protected]" e o servidor ftp seja apenas "example.com"

Vou terminar com

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

o que obviamente não vai funcionar, como eu testei.

Que tipo de amador cria um nome de usuário com @? Ok, meu chefe fez.

Como eu resolvo isso?

Cao espacial
fonte
1
Tente escapar do "comercial em" dessa maneira #sftp -oPort:8777 user\@[email protected]
2121 Tim Tim
Se você remover a parte do nome de usuário e sair do domínio, ele solicitará o nome de usuário depois de inserir o comando?
ladaghini
@ladaghini - isso deve ser usado dentro de um script ... nenhum prompt disponível. Ok, eu sei as implicações de ter nome de usuário e senha em um script, mas esse nome de usuário tem uma área limitada. Tem que ser sftp porque este servidor apenas gera nomes de usuário para sftp.
SpaceDog 21/10
@ Tim ... escapar não está ajudando.
SpaceDog 21/10

Respostas:

33

Passe o nome do usuário pela -o Useropção ou pela Userdiretiva equivalente no arquivo de configuração do cliente ( ~/.ssh/config).

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

Isso se aplica a ssh, scpe sshfstambém. O uso do arquivo de configuração em vez das -oopções também tem a vantagem de trabalhar com ferramentas que chamam sshe não permitem que você passe facilmente as opções da linha de comando.

Gilles 'SO- parar de ser mau'
fonte
Este nome de usuário não tem acesso ssh, apenas sftp.
SpaceDog 21/10
@DigitalRobot s / ssh / sftp /
ladaghini
@DigitalRobot Isso funciona para ambos sshe sftp(e scptambém).
Gilles 'SO- stop be evil'
Continue. O que devemos fazer se o passwd conter também '@' ou '/'
Shicheng Guo
@ShichengGuo ??? Não há nenhum problema com @ou /na senha. Você apenas os digita. O SSH nem sequer permite passar a senha na opção de linha de comando ou em um arquivo de configuração.
Gilles 'SO- stop be evil'
6
sftp -o Port:8777 '[email protected]'@domain.com

Isso também funcionaria, embora seja realmente uma forma muito ruim de fornecer aos usuários esse tipo de nome.

Especial SFTP
fonte
0

Substituir @("comercial em") por +("sinal de mais)" pode ser aceitável em alguns servidores SFTP:

sftp -oPort:8777 [email protected]
AntonK
fonte