
Eu tenho um repositório mercurial remoto (gerenciado pelo hg-gateway) em um servidor. O acesso a esse servidor não está aberto ao público em geral; entretanto, o firewall permite proxy ssh.
Como configuro um cliente Windows para acessar esse repositório com o tortoisehg?
Observe que é diferente deesse, já que nessa questão não há proxy envolvido. Estou procurando o equivalente do Windows
Host remote-dev
user mercurialuser
ProxyCommand ssh -q firewalluser@firewall
para acessar um repositório mercurial como
hg clone ssh://remote-dev/repo
Encontrei uma solução funcional e a postarei abaixo nas respostas para o benefício da comunidade.
Responder1
As suposições de administração do sistema estão no final desta postagem.
- baixe e instale putty, plink, pageant e puttygen deaqui
- se você não tiver uma chave ssh, inicie o puttygen e:
- se já tiver uma chave gerada pelo Linux:
- selecione 'carregar um arquivo de chave privada existente'
- selecione o arquivo apropriado (deve alterar o filtro de extensão de arquivo)
- inserir senha
- selecione 'salvar chave privada'
- outro,
- selecione 'gerar chave'
- mova o mouse aleatoriamente
- selecione 'salvar chave privada'
- selecione 'salvar chave pública'
- se já tiver uma chave gerada pelo Linux:
- envie ao seu administrador de sistema a CHAVE PÚBLICA e não a chave privada! (administradores de sistemas: leia abaixo)
- execute um prompt de comando do Windows (iniciar> executar e digite 'cmd') e inicie 'pageant.exe'
- clique com o botão direito no ícone na barra de ícones, 'adicionar chave'
- selecione sua chave PRIVADA que você salvou antes, insira a senha
massa de lançamento
- into hostname put: o endereço IP do seu servidor de repositório
- salve a sessão como '
remote-dev
' (qualquer nome está ok) - vá em conexão > proxy
- selecione 'local' para o tipo de proxy
- nome de host do proxy: sua entrada DNS do firewall ou endereço IP
- porta:
22
(ou o que for apropriado para fazer ssh no firewall) - nome de usuário:
hg
(ou qualquer usuário no firewall que tenha sua chave ssh pública em .ssh/authorized_files) - em 'comando telnet ou proxy local' substitua o conteúdo por '
FULLPATH\plink.exe -v -nc %host:%port %user@%proxyhost
' (observe o caminho COMPLETO do executável plink.exe. Como c:\plink.exe) - vá em conexão > dados
- nome de usuário de login automático: hg (ou qualquer usuário no servidor do repositório que tenha o hg-gateway em execução)
- voltar para 'sessão'
- clique em 'salvar' para salvar a sessão
- clique em 'abrir'
você deveria ver algo como
Using username "hg". Authenticating with public key "imported-openssh-key" from agent Welcome to XXX code repository server! Your SSH access is restricted by hg-gateway. Summary of repos you have access to:
agora baixe e instaletartarugahg
- lançar bancada de trabalho tartaruga
- arquivo> clone repositório
- fonte: ssh: //
remote-dev
/repo-name
(remote-dev deve corresponder ao que você chamou de sessão no PuTTY!) - destino: escolha seu destino local
- clique em 'clonar'
- é isso.
Para permitir que um usuário acesse o repositório remoto:
- adicione a chave ssh pública
.ssh/authorized_keys
do usuáriohg
no firewall - use
hg-gateway
para adicionar a chave desse usuário aohg
usuário no servidor
Uma observação: o putty tende a gerar chaves no formato .ppk; eles precisam ser convertidos em uma chave ssh de uma linha. O Google é seu amigo aqui.
Premissas:
- no firewall existe um usuário chamado '
hg
' cujo.ssh/autorhized_keys
arquivo contém as chaves públicas de todos os usuários que devem acessar o repositório o arquivo /etc/ssh/sshd_config do firewall contém uma linha semelhante a:
Match Group dev ForceCommand nc -q0 reposerver_ip 22
para que o usuário NÃO possa especificar a quais hosts se conectar. O usuário '
hg
' obviamente pertence ao grupo unix 'dev
'.