Azure DevOps: ssh
Assim como no GitHub, no Azure DevOps existem dois protocolos possíveis para se manejar (push/pull) os repositórios:
- SSH
- HTTPs
No GitHub é possível usar SSH na porta HTTPS, ou seja, através do protocolo SSH (que utiliza a porta 22), alternar para a porta 443! Essa possibilidade é excelente para superar bloqueios de firewalls corporativos.
Contudo, o AzureDevOps não conta com essa possibilidade, sendo necessário usar o SSH na porta 22 ou HTTPs na porta 443 e fim de papo. Considerando que o firewall corporativo me bloqueia na porta 22, não me resta outra opção a não ser usar a porta 443, ou seja, protocolo HTTPS!
Para fins de teste, seguem dois comandos para testar o SSH na porta 22. Veja a diferença de resultados entre o GitHub e o AzureDevOps.
# GitHub
ssh -T -p 443 git@ssh.github.com
# AzureDevOps
ssh -T -p 443 git@ssh.dev.azure.com
Quando utilizamos o protocolo HTTPs perdemos a praticidade e segurança proporcionada pelo ssh-agent e faz-se necessário buscar alternativas.
Senha versus PAT
Importante destacar que ao optar pelo protocolo HTTPs, é necessário o uso de senha. Contudo, a “senha” que o AzureDevOps usa não é a senha do usuário. Trata-se, na realidade, de um Personal Access Token (PAT). Para mais informações sobre a gestão dos PATs, ler o artigo Learn: Use personal access tokens
Git Manager Credentials
O Git Manager Credentials é um recurso que permite aos usuários armazenar suas credenciais de login do Git em um local seguro e confiável. Com o Git Manager Credentials, os usuários não precisam inserir suas credenciais de login toda vez que se conectam a um repositório Git remoto.
Em vez disso, as credenciais são armazenadas em um arquivo de configuração localizado em um diretório específico. Isso torna mais fácil para os usuários gerenciarem suas credenciais de login do Git, ao mesmo tempo em que mantêm suas informações seguras e protegidas.
Para ver se o Git Manager Credentials está instalado basta dar o seguitnte comando:
# Avaliar se o programa está instalado
git credential-manager
No artigo git-credential-manager/credstores descobri que eu poderia definir onde guardar as chaves.
# Define que o password está em um arquivo
git config --global credential.credentialStore plaintext
# Define que o password é cached
git config --global credential.cacheOptions "--timeout 300"
Apesar de interessante, eu não tenho permissão para instalar o Git Manager Credentials, para explorar outras possibilidades para armazenamento seguro da senha.
Apenas para complementar, descobri alguns comandos lendo o post How to fix duplicate account in git credential manager quando eu passei a ter dois logins habilitados no git credential-manager. Curiosamente, um dos logins era um número! e eu desconfiava que tratava-se do id do meu perfil no github. Acessando a API do GitHub, esclareci que era, de fato, o id do meu GitHub.
# Lista Credenciais que estão no git credential-manager
git credential-manager github list
# Faz logout em um perfil
git credential-manager github logout 10374538
Git Tools Credential Storage
O Git Tools Credential Storage é um conjunto de ferramentas nativas do Git que permitem aos usuários gerenciar suas credenciais de login do Git. Essas ferramentas são projetadas para armazenar de forma segura e confiável as informações de autenticação do usuário, incluindo nome de usuário e senha. O Git Tools Credential Storage fornece várias opções de armazenamento, como o armazenamento em cache, que armazena temporariamente as credenciais em memória ou em disco, e o armazenamento em arquivo, que armazena as credenciais em um arquivo seguro no disco.
# Define que o password está em um arquivo
git config --global credential.helper 'store --file ~/.my-credentials'
# Define que o password é cached (padrão 15 min)
git config --global credential.helper cache
# Define que o password é cached (um ano)
git config --global credential.helper 'cache --timeout 31536000'
A grande vantagem é que essa opção está no conjunto de ferramentas nativas, não sendo necessário instalar nenhum pacote extra!
Deixe um comentário