Como listar remotamente um diretório no diretório inicial do usuário configurado

3

Noto que ao fazer one-liners via ssh em um servidor Linux, o valor de ~ permanece como o valor do diretório inicial do usuário local , não do diretório inicial do usuário remoto. Testemunhe o usuário local dotancohen e o usuário remoto atwood :

$ whoami
dotancohen

$ ssh beta whoami
atwood

$ ssh beta ls ~/.ssh
ls: cannot access /home/dotancohen/.ssh: No such file or directory

$ ssh beta ls $HOME/.ssh
ls: cannot access /home/dotancohen/.ssh: No such file or directory

$ ssh atwood@beta ls ~/.ssh
ls: cannot access /home/dotancohen/.ssh: No such file or directory

$ ssh beta ls /home/atwood/.ssh
authorized_keys

$ ssh beta ls .ssh             
authorized_keys

Observe que até mesmo especificar o nome de usuário nos detalhes da conexão e até mesmo usar $HOME no lugar de ~ não ajudou. Não que eu esperasse, mas valeu a pena tentar.

Eu não tenho nenhum problema em procurar% username para o nome de usuário quando estou fazendo one-liners, se necessário, mas a incapacidade de usar .ssh/config em scripts é bastante inconveniente. Além de analisar ~ para o nome de usuário, há alguma maneira de contornar essa limitação? O último exemplo mostra que posso supor que estamos em seu diretório pessoal e referência coisas relativas a isso, mas eu preferir explicitamente chamar o diretório, se possível.

Como posso referenciar o diretório pessoal do usuário via oneliners SSH, sem analisar ~/.ssh/config localmente para ele?

Testado no sistema local Kubuntu 14.04 e sistemas remotos Ubuntu Server 12.04, 14.04 e RHEL 6.5.

    
por dotancohen 06.10.2014 / 11:41

1 resposta

8

Você só precisa escapar para que seu shell local não o expanda:

 ssh beta ls \~/.ssh

ou

ssh beta 'ls ~/.ssh'

Isso deve funcionar.

    
por 06.10.2014 / 11:55

Tags