Está querendo criar uma chave ssh? Criar alias? Neste artigo vamos mostrar algumas dicas para quem está iniciando agora a trabalhar com SSH. Caso no decorrer do artigo ainda tenha alguma dúvida não deixe de comentar.
Pré-requisitos
Independente da plataforma que você esteja usando, seja Windows, Linux ou Mac Os, você precisa do SSH cliente instalado, caso não tenha ele instalado vamos dar algumas opções abaixo:
No Windows você pode instalar o Git Bash ou usar o WLS/Ubuntu com os comandos a seguir.
Abra o terminal e rode os comandos:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-client
BashNo MacOs já vem pré-instalado.
Conectando-se ao Servidor Remoto
Para conectar em um servidor SSH podemos usar diversos parâmetros, que em sua maioria são opcionais, mas para você pode fazer sentido:
-p: # porta do servidor, o padrão é 22
-o PasswordAuthentication=yes/no # indica se deseja usar senha na conexão
-o PubkeyAuthentication=yes/no # indica se deseja usar chave pública na conexão
-i /caminho/para/sua/chave/publica.pub # indica o caminho da sua chave pública, usado quando ela não está no caminho padrão
Abaixo um exemplo usando uma conexão com senha e a porta do servidor é a 2222.
ssh usuario@servidor -p 2222
BashCaso queira usar uma chave pública ficaria assim:
ssh -i /caminho/para/sua/chave/publica.pub usuario@servidor -p 2222
BashUse os demais exemplos para seu caso.
Transferência Segura de Arquivos com SCP
Com o SCP você pode tanto copiar arquivos do seu PC pro servidor quanto do servidor pro seu PC.
Esse comando suporta alguns parâmetros que podem te auxliar:
-p: # porta do servidor, o padrão é 22
-r: # recursivamente copia diretórios e seus conteúdos
-v # ativa o modo verbose, exibindo detalhes sobre o processo de transferência
-i /caminho/para/sua/chave/publica.pub #indica o caminho da sua chave pública, usado quando ela não está no caminho padrão
-B: # utilizado para realizar transferências em segundo plano
Dito isso vamos simular que deseja copiar um arquivo do seu pc pro servidor e vice-versa:
scp caminho/do/arquivo.txt username@hostname:/caminho/destino
BashJá o fluxo inverso você poderia fazer assim:
scp username@hostname:/caminho/no/servidor/arquivo.txt /caminho/no/seu/computador
BashExecutando Comandos Remotos
Além de simplesmente conectar-se ao servidor, o SSH permite a execução remota de comandos. Isso é especialmente útil para automatizar tarefas repetitivas. O formato básico é:
ssh username@hostname "comando a ser executado"
BashConfigurações SSH para Facilitar Conexões
Para simplificar ainda mais suas conexões SSH, você pode utilizar o arquivo de configuração SSH. Edite ou crie o arquivo ~/.ssh/config
e adicione entradas para seus hosts. Isso permite que você use aliases em vez de digitar o nome do host completo e configure opções adicionais, como chaves de autenticação e portas personalizadas.
Exemplo de configuração no arquivo ~/.ssh/config
:
Host meu-servidor
HostName hostname
User username
Port 2222
IdentityFile ~/.ssh/publica.pub
BashCom essa configuração, você pode conectar-se simplesmente digitando:
ssh meu-servidor
BashUsando Chaves Diferentes no Mesmo Servidor
Caso, por diversos motivos, você tenha mais de uma conta no gitlab.com, github.com ou em qualquer outro servidor que permita vincular uma chave SSH, pode se deparar com o seguinte cenário: na conta A você usa uma chave e na conta B você usa outra chave. Por padrão, você teria que optar por usar uma chave por vez. Porém, usando aliases e o arquivo de configuração do SSH, você consegue chegar a uma solução:
Host gitlab-pessoal
HostName gitlab.com
User git
Port 22
IdentityFile ~/.ssh/pessoal
Host gitlab-profissional
HostName gitlab.com
User git
Port 22
IdentityFile ~/.ssh/profissional
BashEssa solução combina o uso de aliases com a configuração do SSH. Agora, quando quiser conectar ao servidor pessoal, basta clonar ou validar a configuração destas formas:
ssh -T gitlab-pessoal
ssh gitlab-pessoal
git clone gitlab-pessoal:/projeto.git
BashGeração de Chaves SSH e Configuração
Para aumentar a segurança e simplificar o processo de autenticação, é recomendável gerar um par de chaves SSH. Execute o seguinte comando para criar uma chave SSH:
ssh-keygen -t rsa -b 4096 -C "seu_email@example.com"
BashSiga as instruções para configurar o local de armazenamento e, opcionalmente, uma senha para a chave. Depois de gerar as chaves, você pode adicionar a chave ao agente SSH para evitar a necessidade de inserir a senha repetidamente:
ssh-add ~/.ssh/sua_chave_privada
BashFinalmente, copie a chave pública para o servidor remoto com:
ssh-copy-id username@hostname
BashAgora, você pode autenticar-se no servidor remoto sem a necessidade de senha.
Conclusão
Agora que você já conhece alguns comandos ssh, já está pronto para usar a chave no versionamento de código ou no seu servidor. Ficou com alguma dúvida? Fique a vontade para comentar.