Como usar o SSH durante seus builds

Às vezes, você pode querer conectar máquinas diferentes durante o build de um projeto. Por exemplo, para acionar um script de implantação em uma máquina remota via SSH.

Vamos aprender como isso é feito.

Por que usar o SSH?

O Secure Shell (SSH) é amplamente usado para várias finalidades, devido à sua segurança, versatilidade e eficiência. Estes são vários dos motivos para usar o SSH.

  • Comunicação segura. O SSH fornece comunicações criptografadas através de redes inseguras (como a Internet), garantindo a confidencialidade e a integridade dos dados durante a transmissão.
  • Autenticação. O SSH usa criptografia de chaves públicas para autenticar os usuários, oferecendo uma alternativa mais segura à autenticação baseada em senhas. Isso ajuda a proteger contra acessos não autorizados.
  • Acesso remoto. O SSH permite que os usuários acessem um servidor ou máquina remotos de forma segura, fornecendo uma interface de linha de comando ou permitindo a transferência de arquivos (por exemplo, com ferramentas como SCP ou SFTP).
  • Tunelamento. O SSH pode criar túneis seguros para encaminhar conexões arbitrárias de redes, fornecendo uma maneira segura de acessar serviços como bancos de dados ou servidores Web em redes remotas.
  • Gerenciamento de chaves. O SSH oferece suporte ao uso de chaves de SSH. Isso simplifica e melhora a segurança na autenticação. Ele também possibilita o gerenciamento do acesso através de pares de chaves.

Como fazer o upload de uma chave de SSH no TeamCity

Acesse Edit configuration | Build Steps para dar uma olhada rápida nas etapas de build.

tutorials-img

Imagine que você deseja adicionar uma etapa de build em linha de comando que executa uma implantação. Para fazer isso, o TeamCity se conecta a um servidor remoto via SSH e executa alguns comandos nesse servidor, por exemplo, para baixar um arquivo do Amazon S3 e executá-lo. Para que a conexão SSH funcione, você precisa especificar uma chave SSH.

tutorials-img

A questão aqui é: como a chave SSH chega ao seu agente de build se não estiver pré-integrada na imagem do seu agente?

O que queremos fazer é nos livrar da etapa de build em linha de comando. Para fazer isso, clique no menu suspenso Runner type. Aqui, você verá duas opções: SSH Exec e SSH Upload.

SSH Exec é conveniente para quando você deseja executar algo em uma máquina remota. SSH Upload ajuda você a carregar arquivos com segurança em um servidor.

Vamos escolher a opção SSH Exec e adicionar o destino e os comandos para o executor.

tutorials-img

Aqui, em Authentication method, você tem algumas opções para escolher de onde vem sua chave SSH.

tutorials-img

Uploaded key: a chave é carregada no servidor do TeamCity. O servidor irá criptografá-la, enviá-la ao agente de build para fazer o build e depois excluí-la quando o build terminar.

Default private key e Custom private key: escolha essa opção se você tiver uma chave privada padrão pré-instalada em locais específicos no seu agente de build.

Você também pode escolher uma combinação de nome de usuário/senha ou até mesmo ter um agente SSH em execução. Leia mais sobre SSH Exec na nossa documentação.

Neste tutorial, escolheremos a opção Uploaded key. Definiremos o nome de usuário como teamcity-deploy e pularemos a configuração da senha. Em seguida, prosseguiremos e carregaremos a chave SSH.

tutorials-img

Para carregar a chave SSH, vamos acessar Buildpipelines project | SSH Keys. Depois disso, selecionaremos a chave privada do nosso servidor. Clique em Upload SSH Key e selecione um arquivo do seu computador.

tutorials-img

Depois disso, volte para Build steps | SSH Exec e selecione a chave privada que você acabou de carregar. Depois clique em Save e execute o build.

tutorials-img

Quando o build terminar, abra Build Log, e você verá a saída da etapa de build SSH Exec. Aqui, podemos ver que o TeamCity executou o comando que você inseriu na configuração da etapa de build. Ele também mostrará o resultado do comando echo ‘running deploy.sh...’.

tutorials-img

E isso é tudo!