Você pode gerenciar chaves SSH em seus servidores ao automatizar scripts de implantação usando o encaminhamento do agente SSH, HTTPS com tokens do OAuth, chaves de implantação ou usuários de máquina.
Encaminhamento de agente SSH
Em muitos casos, especialmente no início de um projeto, o encaminhamento de agentes SSH é o método mais rápido e simples de utilizar. O encaminhamento de agentes usa as mesmas chaves SSH que o seu computador de desenvolvimento local.
Prós do encaminhamento de agente SSH
- Você não tem que gerar ou monitorar nenhuma chave nova.
- Não há gerenciamento de chaves; os usuários têm as mesmas permissões no servidor e localmente.
- Não há chaves armazenadas no servidor. Portanto, caso o servidor esteja comprometido, você não precisa buscar e remover as chaves comprometidas.
Contras do encaminhamento de agente SSH
- Os usuários precisam usar o SSH para fazer a implantação: processos de implantação automatizados não podem ser usados.
- Pode ser problemático executar o encaminhamento de agente SSH para usuários do Windows.
Configurar o encaminhamento do agente SSH
- Ativar o encaminhamento do agente localmente. Confira nosso guia sobre o encaminhamento do agente SSH para obter mais informações.
- Defina seus scripts de implantação para usar o encaminhamento de agentes. Por exemplo, em um script do Bash, a habilitação do encaminhamento do agente será algo assim:
ssh -A serverA 'bash -s' < deploy.sh
Clonagem de HTTPS com tokens do OAuth
Se você não quiser usar chaves SSH, você poderá usar HTTPS com tokens OAuth.
Prós da clonagem de HTTPS com tokens OAuth
- Qualquer pessoa com acesso ao servidor pode implantar o repositório.
- Os usuários não precisam alterar suas configurações SSH locais.
- Não são necessários vários tokens (um para cada usuário); um token por servidor é suficiente.
- Um token pode ser revogado a qualquer momento, transformando-o, basicamente, em uma senha de uso único.
Contras da clonagem de HTTPS com tokens OAuth
- Você deve certificar-se de configurar seu token com os escopos de acesso corretos.
- Os Tokens são, basicamente, senhas e devem ser protegidos da mesma maneira.
Configurar a clonagem de HTTPS com tokens OAuth
Confira o guia sobre a criação de um personal access token.
Chaves de implantação
É possível iniciar projetos por meio de um repositório no GitHub.com ao servidor usando uma chave de implantação, que é uma chave SSH que concede acesso a um só repositório. GitHub anexa a parte pública da chave diretamente ao repositório em vez de uma conta pessoal, e a parte privada da chave permanece no seu servidor. Para obter mais informações, confira "Entregar implantações".
As chaves de implantação com acesso de gravação podem realizar as mesmas ações que um integrante da organização com acesso de administrador ou um colaborador em um repositório pessoal. Para obter mais informações, confira "Funções de repositório para uma organização" e "Níveis de permissão para um repositório da conta pessoal."
Para maior segurança e controle refinado sobre o acesso e as permissões do repositório, recomendamos usar um aplicativo GitHub. Confira "Decidir quando compilar o Aplicativo GitHub".
Prós das chaves de implantação
- Qualquer pessoa com acesso ao repositório e servidor é capaz de implantar o projeto.
- Os usuários não precisam alterar suas configurações SSH locais.
- As chaves de implantação são somente leitura por padrão, mas você pode dar a elas acesso de gravação ao adicioná-las a um repositório.
Contras das chaves de implantação
- As chaves de implementação só concedem acesso a um único repositório. Projetos mais complexos podem ter muitos repositórios para extrair para o mesmo servidor.
- De modo geral, as chaves de implantação não são protegidas por uma frase secreta, o que a chave facilmente acessível se o servidor estiver comprometido.
- As chaves de implantação são credenciais que não têm uma data de validade.
- As chaves de implantação não estão vinculadas diretamente à subscrição da organização. Se o usuário que criou a chave de implantação for removido do repositório, a chave de implantação ainda estará ativa, pois não está vinculada ao usuário específico, mas sim ao repositório.
Configurar chaves de implantação
-
Execute o procedimento
ssh-keygen
no servidor e lembre-se do local em que salvou o par de chaves RSA público e privado gerado. -
Em GitHub, acesse a página principal do repositório.
-
Abaixo do nome do repositório, clique em Configurações. Caso não consiga ver a guia "Configurações", selecione o menu suspenso , clique em Configurações.
-
Na barra lateral, clique em Implantar Chaves.
-
Clique em Adicionar chave de implantação.
-
No campo "Título", forneça um título.
-
No campo "Chave", cole sua chave pública.
-
Selecione Permitir acesso de gravação se desejar que essa chave tenha acesso de gravação no repositório. Uma chave de implantação com acesso de gravação permite que uma implantação faça push no repositório.
-
Clique em Adicionar chave.
Também é possível usar a API REST para criar chaves de implantação. Para obter mais informações, confira "Pontos de extremidade da API REST para chaves de implantação".
Usar vários repositórios em um servidor
Se você usar vários repositórios em um servidor, você deverá gerar um par de chaves dedicado para cada um. Você não pode reutilizar uma chave de implantação para vários repositórios.
No arquivo de configuração do SSH do servidor (geralmente, ~/.ssh/config
), adicione uma entrada de alias para cada repositório. Por exemplo:
Host github.com-repo-0
Hostname github.com
IdentityFile=/home/user/.ssh/repo-0_deploy_key
Host github.com-repo-1
Hostname github.com
IdentityFile=/home/user/.ssh/repo-1_deploy_key
Host github.com-repo-0
– O alias do repositório.Hostname github.com
– Configura o nome do host a ser usado com o alias.IdentityFile=/home/user/.ssh/repo-0_deploy_key
– Atribui uma chave privada ao alias.
Em seguida, você pode usar o apelido do host para interagir com o repositório usando SSH, que usará a chave de deploy exclusiva atribuída a esse pseudônimo. Por exemplo:
git clone git@github.com-repo-1:OWNER/repo-1.git
Tokens de acesso de instalação do GitHub App
Se o servidor precisar acessar repositórios em uma ou mais organizações, você poderá usar um GitHub App para definir o acesso necessário e, em seguida, gerar tokens de acesso de instalação com escopo delimitado por meio desse GitHub App. Os tokens de acesso de instalação podem ter o escopo para um ou vários repositórios e podem ter permissões refinadas. Por exemplo, você pode gerar um token com acesso somente leitura para o conteúdo de um repositório.
Como os GitHub Apps são protagonistas no GitHub, os tokens de acesso de instalação são dissociados de qualquer usuário do GitHub, o que os torna comparáveis a "tokens de serviço". Além disso, os tokens de acesso de instalação têm limites de taxa dedicados que escalam de acordo com o tamanho das organizações nas quais eles atuam. Para obter mais informações, confira Limites de taxa dos GitHub Apps.
Vantagens dos tokens de acesso de instalação
- Tokens com escopo limitado com conjuntos de permissões bem definidos e tempos de expiração (1 hora, ou menos se for revogado manualmente usando a API)
- Limites de taxa dedicados que crescem com a sua organização
- Dissociados das identidades do usuário do GitHub para que não consumam nenhuma estação de licença
- Nunca concedeu uma senha. Portanto, não pode efetuar o login diretamente
Desvantagens dos tokens de acesso de instalação
- Configuração adicional é necessária para criar o GitHub App.
- Os tokens de acesso de instalação expiram após uma hora. Portanto, precisam ser gerados novamente, geralmente sob demanda e usando código.
Configurar tokens de acesso de instalação
- Determine se seu GitHub App deve ser público ou particular. Se o seu GitHub App agir apenas nos repositórios da organização, talvez você prefira que ele seja privado.
- Determine as permissões que o GitHub App exige, como acesso somente leitura ao conteúdo do repositório.
- Crie seu GitHub App por meio da página de configurações da sua organização. Para obter mais informações, confira "Como criar um GitHub App".
- Tome nota do
id
do seu GitHub App. - Gere e faça o download da chave privada do seu GitHub App e armazene-a com segurança. Para obter mais informações, confira Como gerar uma chave privada.
- Instale o GitHub App nos repositórios nos quais ele precisa agir. Opcionalmente você poderá instalar o GitHub App em todos os repositórios da sua organização.
- Identifique a
installation_id
que representa a conexão entre o GitHub App e os repositórios da organização que ele pode acessar. Cada par de organização e GitHub App tem, no máximo, um únicoinstallation_id
. Você pode identificar essainstallation_id
por meio de Obter uma instalação da organização para o aplicativo autenticado. Isso exige a autenticação como um GitHub App usando um JWT. Para obter mais informações, confira Autenticar como um GitHub App. - Gere um token de acesso de instalação usando o ponto de extremidade da API REST correspondente: Criar um token de acesso de instalação para um aplicativo. Isso exige a autenticação como um GitHub App usando um JWT. Para obter mais informações, confira Autenticar como um GitHub App e Autenticar como uma instalação.
- Use este token de acesso de instalação para interagir com seus repositórios, seja por meio das APIs REST ou do GraphQL, ou por meio de um cliente Git.
Para obter mais informações, confira "Como gerar um token de acesso de instalação para um Aplicativo GitHub".
Usuários máquina
Se o servidor precisar acessar diversos repositórios, crie uma conta em GitHub.com e anexe uma chave SSH a ser usada exclusivamente para a automação. Como essa conta em GitHub.com não será usada por um ser humano, ela é chamada computador usuário. Você pode adicionar o usuário de computador como um colaborador em um repositório pessoal (permitindo acesso de leitura e gravação), como um colaborador externo em um repositório da organização (permitindo acesso de leitura, gravação ou administrador) ou como uma equipe com acesso aos repositórios necessários para automação (concedendo as permissões da equipe).
Tip
Nossos termos de serviço estabelecem:
Contas registradas por "bots" ou outros métodos automatizados não são permitidas.
Isto significa que você não pode automatizar a criação de contas. Mas se você desejar criar um único usuário máquina para automatizar tarefas como scripts de implantação em seu projeto ou organização, isso é muito legal.
Prós de usuários máquinas
- Qualquer pessoa com acesso ao repositório e servidor é capaz de implantar o projeto.
- Nenhum usuário (humano) precisa alterar suas configurações de SSH locais.
- Não são necessárias várias chaves; o adequado é uma por servidor.
Contras de usuários máquinas
- Apenas organizações podem restringir os usuários máquina para acesso somente leitura. Os repositórios pessoais sempre concedem aos colaboradores acesso de leitura/gravação.
- Chaves dos usuário máquina, como chaves de implantação, geralmente não são protegidas por senha.
Configurar usuários máquinas
- Execute o procedimento
ssh-keygen
no servidor e anexe a chave pública à conta do usuário de computador. - Dê acesso à conta de usuário máquina aos repositórios que deseja automatizar. Faça isso adicionando a conta como um colaborador, como um colaborador externo ou como uma equipe a uma organização.