ssh config executar automaticamente o comando remoto

6

Eu conecto ao servidor através do ssh sob o vpn. Para fazer mudanças no projeto eu sempre faço o mesmo procedimento depois de acessar server-log como project_user, pois com minha identidade eu recebo sh shell e não tenho acesso de gravação para arquivos de projeto.

No meu arquivo ~ / .ssh / config, tentei usar o parâmetro LocalCommand para automatizar o procedimento:

LocalCommand sudo -iu project_user bash

e depois

LocalCommand /bin/sh -c sudo -iu project_user bash

Mas nada disso faz qualquer alteração - depois de conectar, ainda estou em sh shell e preciso executar os comandos acima de novo e de novo.

Alguma idéia?

Atualização: desculpe, mas este parâmetro LocalCommand é destinado ao comando local e não remoto. Existe algum parâmetro ssh_config que me permita executar o comando remoto depois de conectar ao servidor?
Ou pelo menos mudar o shell para bash para que eu possa executar o meu comando através de scripts de inicialização do bash?

    
por vlad 05.07.2015 / 18:30

3 respostas

2

Como o nome indica, LocalCommand executa um comando na máquina local (cliente), não na máquina remota (servidor). O comando que é executado no servidor é o (s) argumento (s) que você passa para ssh após as opções e o nome do host.

Por padrão, um terminal não é criado quando você passa um comando, então passe a opção -t para criar um. Em vez de ssh yourserver , execute

ssh -t yourserver exec sudo -iu project_user
    
por 06.07.2015 / 01:29
5

O servidor OpenSSH permite que você associe um comando a uma chave ssh. Quando uma chave ssh específica é usada para conectar-se a um servidor, o servidor ignorará o comando solicitado pelo cliente e executará o comando associado à chave. Se você estiver usando chaves ssh para estas sessões, você pode usar este recurso para iniciar seu comando sudo.

Você configura isso por meio do arquivo "authorized_keys" da sua conta no servidor. A página do manual sshd (8) descreve o formato de arquivo authorized_keys. Resumidamente, authorized_keys é uma série de linhas que começam com algo assim:

ssh-rsa AAAAB3NzaC1yc2...

Você pode adicionar uma diretiva de comando à frente de uma linha:

command="sudo -iu project_user bash" ssh-rsa AAAAB3NzaC1yc2...

Quando a chave correspondente é usada para autenticar, o servidor SSH ignorará o comando solicitado pelo cliente SSH e executará o comando especificado. A sessão ssh irá fechar quando o processo sudo (e o shell rodando dentro dele) sair.

Eu recomendo que você configure duas chaves para ssh neste servidor: uma chave que realiza essa operação de sudo e outra que não. Você provavelmente precisará entrar no servidor sem executar a operação sudo de tempos em tempos. A chave que executa o sudo também não funcionará para executar scp ou sftp, pelo menos não sem configurar algo mais sofisticado no servidor.

    
por 07.07.2015 / 17:47
0

Se você puder efetuar login no sistema remoto, poderá alterar seu shell padrão:

chsh -s /bin/bash
    
por 05.07.2015 / 19:50

Tags