Quando você executa ssh com nenhum comando, ele configura um pseudo-terminal no lado do servidor e executa um shell interativo nesse terminal. Quando você passa um comando, o comando é executado com sua entrada e saída diretamente conectadas ao canal SSH, não há terminal remoto. Se você passar a opção -t
, um terminal será criado no lado remoto e você receberá uma solicitação de senha onde poderá digitar sua senha.
ssh -t ve "cd clients/ ; git pull"
No entanto, essa não é uma maneira conveniente de fazer isso. A maneira conveniente é executar um agente SSH em sua máquina local e encaminhar a conexão desse agente.
Primeiro, você precisa usar a autenticação de chave pública, não a autenticação de senha, na segunda conexão (para o servidor git). Você já está fazendo isso, então não vou entrar em mais detalhes.
Copie a chave privada do segundo servidor ( /home/v3ed2/.ssh/id_rsa
na máquina intermediária) para a sua máquina local. Alternativamente, no servidor git, autorize uma chave pública para a qual você possui a chave privada em sua máquina local. Como alternativa, execute primeiro ssh -t ve ssh-add .ssh/id_rsa
para registrar a chave da máquina intermediária com seu agente local.
Algumas distribuições e ambientes de área de trabalho já configuram um agente SSH. Verifique se você tem um em execução com ssh-add -l
. Se isso indicar que você não tem agente em execução, será necessário iniciar um com sua sessão. Execute ssh-agent your-session-manager
em vez de chamar your-session-manager
diretamente ou execute eval $(ssh-agent)
no script de inicialização da sessão ou marque a caixa de seleção "executar o agente SSH" na configuração da GUI. Você precisa fazer duas coisas: iniciar o programa ssh-agent
e obter a variável SSH_AUTH_SOCK
que define ou imprime no ambiente da sua sessão. Os detalhes de como fazer isso são muito específicos para seu ambiente de distribuição e área de trabalho.
Depois de ter o agente SSH sendo executado localmente, verifique se ele está encaminhado. Pode ou não ser encaminhado por padrão. Execute ssh ev ssh-add -l
para verificar se o agente foi encaminhado. Se não estiver, adicione a linha ForwardAgent yes
ao seu local ~/.ssh/config
.
Se você estiver executando o Windows com o PuTTY localmente, ele também vem com um agente de chave, o Pageant. Consulte o Manual do PuTTY para obter instruções.
Quando você tiver uma configuração de agente SSH em funcionamento, registre sua (s) chave (s) com o agente uma vez por sessão, com o comando ssh-add ~/.ssh/id_rsa
(ou qualquer que seja o caminho para a chave privada). Depois disso, você pode usar a chave sem solicitar o restante da sessão.