Executando um comando remoto

4
  1. Não consigo editar o .bashrc dos fs aos quais estou me conectando

  2. Eu tenho que usar o arquivo ~/.ssh/config

Aqui está minha configuração atual:

Host my-ssh
HostName <ip>
User <user>
IdentityFile <file location>
Compression yes
RemoteCommand cd <path to folder>

Quando executo ssh my-ssh , nada acontece. A conexão parece fechar automaticamente. Se eu remover a linha RemoteCommand , ela se conectará sem um problema.

Isso é algo na configuração do servidor? É uma instância do EC2, seja CentOS ou RHEL e o bash é o shell.

    
por Robbie Milejczak 23.01.2018 / 22:49

3 respostas

7

Se você especificar um comando remoto, a conexão ssh será fechada assim que o comando remoto sair. Um comando cd sairá quase imediatamente.

Uma maneira comum de fazer o que você quer é:

RemoteCommand cd /some/path && bash

(Substitua seu shell desejado no lugar de "bash"). Este cd é para o caminho e depois invoca uma subshell se a operação de cd for bem sucedida. A conexão ssh irá fechar quando a sub-ssh sair.

Você também desejará forçar o ssh a alocar um PTY para a sessão:

RequestTTY yes

Se você não fizer isso, o ssh não solicitará um por padrão e você receberá uma sessão de shell não interativa. Notavelmente, você não receberá um prompt de comando.

    
por 23.01.2018 / 23:14
3

Se você tem um RemoteCommand especificado, é o mesmo que o seguinte:

ssh user@host <command>

O que acontece é que ssh se conecta ao host, executa o comando e sai e retorna o status de saída do comando como o status de saída de ssh .

Da página do manual:

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

Então, você está efetuando login no host, alterando o diretório e, em seguida, ssh está saindo. Eu duvido que isso seja o que você quer. O comando remoto não é interativo, ou seja, para executar um comando específico em uma máquina remota.

    
por 23.01.2018 / 23:05
-2

Tente executar ssh -t my-ssh . Você pode precisar forçar a alocação pseudo-terminal que é omitida pela configuração em ~ / .ssh / config.

    
por 23.01.2018 / 23:10