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 "user@example.com" e o servidor ftp seja apenas "example.com"

Vou terminar com

sftp -oPort:8777 user@example.com@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?


1
Tente escapar do "comercial em" dessa maneira #sftp -oPort:8777 user\@domain.com@domain.com
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 User=user@example.com 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.


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 'user@domain.com'@domain.com

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


0

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

sftp -oPort:8777 user+example.com@example.com
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.