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.