ssh: executa um comando antes do login

4

Estou procurando uma maneira de executar um comando local ao fazer login em uma máquina remota via SSH. (Eu quero ficar logado após o término do comando). Em outras palavras, eu quero especificar o comando na minha linha de comando. Ele deve ser executado na máquina remota e, em seguida, devo pegar o shell, como se eu tivesse logado normalmente.

Por exemplo, digamos que eu queira montar /home na máquina remota antes de obter o shell. Eu faria algo assim (o que não funciona bem)

ssh mymachine.example.com 'mount /home ; /bin/bash'

Na verdade, estou procurando uma maneira de condensar os dois comandos a seguir em um só:

ssh mymachine.example.com 'mount /home'
ssh mymachine.example.com

Alguém tem alguma ideia de como fazer isso?

IMPORTANTE : não quero armazenar o comando a ser executado na máquina remota. Ele deve ser armazenado localmente (talvez ele contenha minha senha para descriptografar a página inicial criptografada).

    
por Martin Vegter 27.08.2013 / 12:50

3 respostas

7

Provavelmente você está procurando a opção -t para ssh que força a alocação pseudo-terminal - sem isso, você está conectando diretamente seu terminal à entrada / saída / erro padrão dos programas em execução remotamente. Daí seu comando deve ficar assim:

ssh -t mymachine.example.com 'mount /home ; /bin/bash'
    
por 27.08.2013 / 13:10
2

Eu recomendo uma abordagem alternativa: use uma conexão principal . Primeiro inicie uma conexão mestre que execute a montagem e então durma para sempre, então use conexões escravas que não requerem autenticação e, portanto, são muito rápidas.

ssh -M mymachine.example.com 'mount -o password=swordfish …; exec sleep 999999999'
ssh mymachine.example.com ls
    
por 28.08.2013 / 00:00
1

Você pode usar os arquivos rc do ssh.

O arquivo ~ / .ssh / rc é executado antes que a casa do usuário se torne disponível, assim você pode colocar todas as suas coisas lá.

A ressalva é que esses arquivos residem no servidor.

man sshd pode ajudar.

    
por 11.11.2013 / 23:28