SSH usando o Agente de Encaminhamento com o sistema operacional Windows Host, o sistema operacional Vagrant Ubuntu Guest e o Keepass / Keeagent

2

Intenção : poder implantar em lan-example.com de qualquer ambiente de desenvolvimento; seja diretamente a partir do sistema operacional virtual, ou de qualquer sistema de sistema operacional único, ou mesmo através da Internet usando uma chave SSH armazenada no Keepass. Atualmente, não consigo fazer isso a partir do sistema operacional do Vagrant, a menos que eu gere explicitamente sua própria chave e autorize-a em cada um dos meus servidores de implantação. Eu acredito que a maneira de fazer o que eu quero é através do encaminhamento de agente do usuário, sim?

Sistema operacional do host

  • Windows 7 x64
  • Chave SSH gerada por puttygen: C:\Users\Administrator\.ssh\id_rsa.ppk
  • Keepass com Keeagent armazenando minha chave SSH. Keeagent está definido para o modo "Agente"
  • pageant.exe está instalado mas não está em execução
  • Se eu quiser conectar-me a servidores LAN externos / internos usando minha chave, o Putty adia para o Keeagent - O Putty não armazena os locais da chave privada em sua configuração.

C: \ Users \ Administrator.ssh \ config

Host 192.168.55.2
  ForwardAgent yes

Vagrantfile

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.network :private_network, ip: '192.168.55.2'
  config.ssh.forward_agent = true
  # Why would I need to set this if Keeagent is handling things?
  config.ssh.private_key_path = '~/.ssh/id_rsa_jake_mitchell.ppk'
end

Sistema de convidado (Vagrant)

  • Ubuntu x64
  • 192.168.55.2, acessível somente por host
  • Não existem chaves SSH em /home/vagrant/.ssh (removi-as). A intenção é permitir que o User Agent Forwarding através do sistema operacional host (Keeagent) cuide do uso da chave

LAN Web Host (sites da intranet)

  • Digamos que seu domínio seja lan-example.com
  • Permite login sem senha do SSH usando apenas a chave pública id_rsa.ppk
  • 192.168.0.2
  • O encaminhamento do agente de usuário está ativado em sshd

Problema:

O que funciona (usando o Host OS): Putty, conectando-se a lan-example.com sem a necessidade de referenciar explicitamente a chave SSH.

O que não funciona (usando o sistema operacional convidado): ssh -v [email protected] , pois mostra que não há chaves para usar.

Eu notei algo sobre a versão beta do Keeagent que me permite definir o SSH_AUTH_SOCK. Eu fiz isso e configurei um compartilhamento NFS que permite que o sistema operacional convidado leia o arquivo; no entanto isso não muda nada. Como o encaminhamento de agentes funciona mesmo nesse tipo de ambiente? O que há de diferente no Windows que faz com que isso falhe?

    
por JakeTheSnake 27.01.2015 / 23:13

1 resposta

1

O compartilhamento de arquivos de soquete através do sistema de arquivos de rede não funcionará, já que o soquete do Windows e o soquete do Linux são bestas completamente diferentes - o Linux dentro da VM não saberia como usar soquetes do Windows. Para garantir que a VM possa utilizar o agente de autenticação no host, é necessário ativar o encaminhamento do agente no both ssh client e server e, em seguida, ssh na VM via host (não fazer login diretamente no console da VM). p>

Assumindo:

  1. A configuração de encaminhamento do agente do servidor SSH é feita, de acordo com o post original (não usei o Vagrant, portanto, não posso dizer);
  2. A configuração do Keeagent está concluída e em execução (tentei o modo de cliente, mas existem alguns problemas ao lidar com chaves que não são RSA / DSA, portanto, o modo de agente é mais seguro);

Em putty profile setup, marque a opção "Allow agent forwarding" em Connection → SSH → Auth para ativar o encaminhamento de agentes para o cliente. Alternativamente, se o Cygwin ssh é usado no host, existem duas opções:

  1. Instale o ssh-pageant e faça-o iniciar automaticamente com o cygwin (em ~/.profile e afins).
  2. Especifique a localização desejada do arquivo de soquete do Windows na configuração do Keeagent e defina a variável $SSH_AUTH_SOCK no cygwin para o local correspondente.

Para verificar se o encaminhamento do agente está funcionando ou não, ssh na VM e verifique a variável $SSH_AUTH_SOCK . Se não estiver vazia e estiver apontando para um arquivo de soquete do Linux que existe, então tudo deve estar bem. Se a variável estiver vazia, então algo está faltando.

    
por 04.07.2015 / 00:45