SSH sem invocar o shell

3

Eu consegui bagunçar algumas bibliotecas compartilhadas no meu sistema, e agora meu shell não pode ser executado, bloqueando-me do sistema. Tanto ssh , sftp , e scp , como configurado no sistema remoto, parecem confiar no shell, então essas alternativas estão fora. Realmente, não é um grande problema, porque eu tenho algumas mãos remotas que podem mudar meu shell para sh via console.

No entanto, estou curioso, chegando à mecânica do protocolo SSH, se é possível autenticar e executar algumas manipulações no sistema remoto (por exemplo, modificando /etc/passwd ), sem nunca invocar o shell?

EDITAR

Para ser justo, para o colega que sugeriu especificar o comando / shell alternativo depois da string de comando ssh (por exemplo, ssh myhost /bin/sh ): a página man faz estado:

If command is specified, it is executed on the remote host instead of a login shell.

que definitivamente poderia ser confuso.

    
por A__A__0 12.08.2014 / 18:47

1 resposta

1

[apenas para o registro - no momento em que este artigo foi escrito, o problema foi corrigido, esperamos que]

Com openssh , qualquer comando executado por sshd é executado através do seu shell de login com a opção -c :

  • comando passado na linha de comando ssh (por exemplo, ssh user@host command )
  • comando configurado no arquivo .authorized_keys (por exemplo, command="..." ssh-rsa AAAA... )
  • comando especificado pela opção ForceCommand em sshd_config
  • a execução do script ~/.ssh/rc (via /bin/sh ~/.ssh/rc )
  • até mesmo os comandos scp locais para um servidor executados em resposta a um controle remoto scp

Portanto, se seu shell de login for falso ( /bin/false ou nologin ) ou estiver quebrado, não será possível executar nada remotamente com ssh . É também por isso que nenhuma alternativa é possível.

No entanto, ainda é possível corrigir coisas com sftp .

    
por 30.12.2016 / 22:05