Escape dos espaços de nome de usuário no SCP

4

Estou brincando com o SCP há algum tempo e consegui transferir arquivos de um lugar para outro. Tudo funcionou bem até que eu precisei copiar um arquivo do Ubuntu para um usuário do Windows que tinha espaços em seu nome de usuário (* gemido *)

Enquanto eu consegui trabalhar para o SSH assim:

ssh "User Name Spaces"@192.168.0.42

Não funcionou com o SCP:

scp "myfile.txt" "User Name Spaces"@192.168.0.42:folder

Como ele retorna:

User Name Spaces: invalid user name

Eu tentei todos os tipos de coisas:

scp "myfile.txt" "User Name Spaces"@192.168.0.42:folder
scp "myfile.txt" "User\ Name\ Spaces"@192.168.0.42:folder
scp "myfile.txt" "User\ Name\ Spaces"@192.168.0.42:folder
scp "myfile.txt" "User\\ Name\\ Spaces"@192.168.0.42:folder
scp "myfile.txt" "'User Name Spaces'"@192.168.0.42:folder
scp "myfile.txt" "'User\ Name\ Spaces'"@192.168.0.42:folder
scp "myfile.txt" "'User\ Name\ Spaces'"@192.168.0.42:folder
scp "myfile.txt" "'User\\ Name\\ Spaces'"@192.168.0.42:folder
scp "myfile.txt" "'User Name Spaces'@192.168.0.42":folder

E assim por diante ... mas nada parece funcionar

Alguém tem alguma ideia?

    
por cavpollo 20.05.2016 / 01:19

1 resposta

4

Você pode usar ~/.ssh/config . É o arquivo de configuração por usuário para SSH (e comandos baseados em SSH como scp e sftp ). Crie-o, se não existir, e adicione:

Host 192.168.0.42
    User "User Name Spaces"

Por exemplo:

Host localhost
    User "foo bar"

Então:

$ scp test.txt  localhost:
foo bar@localhost's password: 

(Eu não tenho um usuário chamado foo bar , então não consegui terminar o teste.)

Você também pode criar um alias em .ssh/config :

Host foo
    Hostname 192.168.0.42
    User "User Name Spaces"

Então você pode fazer convenientemente:

ssh foo
scp file foo:

E evite digitar o endereço IP inteiro.

Uma alternativa, se você tiver tar disponível nos dois lados:

tar c myfile.txt | ssh "User Name Spaces"@192.168.0.42 tar x

tar cria um arquivo tar, salvo na saída padrão e canalizado para o SSH, onde se torna a entrada para tar x , que extrai o arquivo. Você pode usar opções como -C para alterar o diretório (ou fazer isso como um comando shell antes de tar : ssh … 'cd foo; tar x ). Você também pode usar a compactação e economizar um pouco em bandwitdh de rede:

tar zc myfile.txt | ssh "User Name Spaces"@192.168.0.42 tar zx
    
por muru 20.05.2016 / 01:25

Tags