Atualizar: parece que o design da rede estava completamente errado e o fluxo de autenticação deveria ser o contrário. Portanto, esta questão é discutível agora.
Configuração atual: Linux VM (suponha que sejam comuns e mais atualizados como CentOS 7.1 e Ubuntu 15.04) no host Windows 7, usando Virtualbox.
Pergunta TL; DR: É possível ter o openssh rodando dentro da VM paranãousar ssh-agent local para autenticação de chave, mas usar Peagent no host Windows? Uma configuração mais complexa é aceitável.
pergunta longa: Originalmente, existem várias cópias de chaves no host e na VM - no formato Putty no host e no formato de chave openssh nas VMs por meio de pasta compartilhada, e muitas delas não são protegidas por senha por conveniência. Mas recentemente sinto necessidade de consolidá-los e adicionar mais proteção. As chaves são para administração remota e verificação do código-fonte por meio de sistemas de controle de versão, principalmente Git. Aqui estão os requisitos:
- O host do Windows pode fazer ssh para o servidor remoto e pode usar git por meio de ssh.
- Linux VM pode fazer ssh para servidor remoto e pode usar git por meio de ssh.
- As chaves são armazenadas apenas no host, não nas VMs. (O que significa que esta não será uma configuração de encaminhamento de agente ssh)
O ponto 1 (permitir que o host do Windows use pageant para autenticação) é relativamente trivial; A configuração do git consiste essencialmente em definir $GIT_SSH
a variável de ambiente correta. Não apenas o Putty, até o MinGW openssh pode se conectar ao concurso, armazenando todas as chaves dentro do gerenciador de senhas (usando KeePass 2.x) e exportando um soquete adequado para uso como $SSH_AUTH_SOCK
usando oPlug-in KeeAgent. Veresta postagem ServerFaultpara outra abordagem.
Mas até agora não houve sorte em acessar o concurso via Linux VM. Eu tentei a seguinte abordagemmas falhou:
- O servidor SSH está instalado no host Windows como um salto intermediário (estou tentandoMobasshmas a escolha não deve importar – continue lendo).
- Em seguida, tente executar remotamente
plink.exe
de dentro da VM. Isso é semelhante à abordagem ingênua,ssh host1 ssh host2
que é suficiente para o meu propósito. - No entanto, plink.exe não conseguiu acessar nenhuma chave quando executado no servidor SSH do Windows. Executar plink.exe diretamente em
cmd
obras. A maioria dos servidores SSH disponíveis em execução no Windows são baseados em Cygwin. Parece bastante semelhante a issorelatório de bug combinado putty/cygwin.
Observação:Uma pergunta possivelmente semelhante aqui, mas não estou usando o Vagrant.
Responder1
Parece que o design original estava completamente errado. Seria muito mais fácil ativar o servidor sshd em cada máquina virtual com
AllowAgentForwarding yes
E então faça ssh em cada VM. Dessa forma, todas as VMs usariam automaticamente o agente de autenticação do host sem a necessidade de ter nenhuma chave ssh instalada.