SSH é uma maneira de acessar os servidores remotos através da linha de comando. É realmente um canal fabuloso de comunicação seguro que você pode usar para todos os tipos de coisa! Hoje, eu pensei em partilhar algumas das minhas dicas favoritas sobre SSH, começando do começo, até o uso de múltiplas chaves SSH, e até o uso do SSH como um túnel para algo completamente diferente.
Do SSH para um servidor remoto, apenas abra o terminal (usuários do Windows devem pegar PuTTY) e digite:
sshusername@server
Será solicitada a sua senha (ou passphrase para a sua chave; mais sobre isso daqui a pouquinho), e então – pronto! – você está dentro. Se você não fornecer o nome de usuário, isso será solicitado primeiro, e o servidor pode ter tanto um nome de domínio, como lornajane.net, ou um endereço IP.
Chaves SSH
Embora seja bom usar um nome de usuário e senha para o acesso SSH, é mais rápido e mais seguro acessar usando uma chave SSH. Chaves SSH são feitas de duas partes: uma pública e uma privada. Você gera as chaves com o comando ssh-keygen (usuários do Windows, baixem PuTTYgen).
Ao criar a chave, será solicitado que você responda a algumas perguntas, e, em geral, os padrões são ok. Uma das perguntas vai pedir que você crie uma passphrase. Ela é uma senha que deve ser usada com a chave ao acessar um servidor. Em geral, recomenda-se ter passphrases, mas você pode optar por omiti-las, caso, por exemplo, essa chave for usada por uma conta de usuário sem supervisão automatizada.
Existe um excelente recurso do GitHub para a geração de chaves SSH que te dá mais informações, e também fornece uma disca para outras coisas que podemos fazer com o SSH!
Compartilhando chaves SSH
Depois de ter suas chaves, você terá que enviar a metade pública (o nome do arquivo termina com .pub) para quem precisa para lhe dar acesso ao servidor ou outro aplicativo. É seguro enviar as chaves públicas via e-mail e compartilhá-las, mas mantenha suas chaves privadas seguras, protegidas e com backup. Essas são as verdadeiras chaves para o reino!
O GitHub usa chaves SSH para conceder acesso à sua conta do GitHub. Você cola o conteúdo de sua chave pública em seu site (veja em “Chaves SSH” na sua página de conta), e então você pode acessar seus repositórios usando-a.
Muitas chaves
Algumas pessoas só possuem uma chave, mas acho que é mais útil ter várias – talvez uma para o trabalho e outra para uso pessoal, ou uma criada para um projeto ou sistema específico. Essa abordagem significa que eu posso revogar uma chave individual se eu precisar, sem a necessidade de mudar todas as minhas outras.
Fazer um SSH com uma chave específica é muito simples. Você pode fornecer a informação sobre qual chave usar com o switch -i para o comando ssh. Por exemplo, eu tenho uma chave SSH separada para usar com GitHub:
ssh-i ~ / .ssh. / github_rsa git@github.com
Utilizar várias chaves dessa forma é ótimo para acessar servidores, mas muitos dos programas que dependem de SSH, como scp e git, não têm uma opção para especificar qual chave usar. Para essa situação (e muitas outras), você pode usar o arquivo de configuração do SSH.
Arquivo de configuração do SSH
O arquivo de configuração do SSH é a fonte de diversos pequenos truques bem úteis! (Em sistemas Unix, ele fica em ~/.ssh/config.) Por exemplo, você pode configurar um alias para que você possa se referir a um servidor por um nome mais curto:
Host lyra User=lorna Hostname=lyra.lornajane.net
Agora, eu posso simplesmente fazer um SSH para o alias, e ele vai pegar o nome de usuário e do hostname apropriados:
$ ssh lyra lorna@lyra.lornajane.net's password:
Usando o arquivo de configuração, você também pode dizer ao SSH qual chave usar quando acessar um servidor diferente. Aqui está a entrada que eu uso para acessar o GitHub:
Host GitHub Hostname=github.com IdentityFile=~/.ssh/github_rsa
Isso não significa que eu edito todas as URLs que uso para serem GitHub, onde normalmente haveria github.com. Isso me lembra que tem um pouco de magia em algum lugar!
Túneis SSH
Eu mencionei anteriormente que é possível usar conexões SSH como um transporte para outros protocolos. Eu uso isso principalmente para contornar o problema de que as ferramentas de alguns clientes são bloqueadas para o meu endereço de IP estático. Existe um servidor que faz um monte de coisas úteis, mas também aceita conexões SSH, para que eu possa fazer um túnel por ele para fazer o meu tráfego parecer que veio de lá.
Para conseguir isso, eu uso o switch -L para ligar uma porta específica em minha máquina local (como 8080) a uma porta específica no servidor que eu realmente desejo acessar. Isso só vai funcionar se a conexão for feita através do meu endereço IP estático, então a casa se torna o alvo do comando SSH. É mais ou menos assim:
ssh -L 8080:client-tool.example.com:80 home-server.lornajane.net
Sou solicitado para minhas credenciais SSH para home-server.lornajane.net, e a conexão é criada. Qualquer coisa que eu enviar para 8080 na minha máquina local será encaminhado através de um túnel SSH por meio da casa para a porta 80 em client-tool.example.com. Então, eu abro http://localhost:8080/, e como um passe de mágica SSH, tenho acesso à ferramenta do cliente que só está disponível a partir do endereço IP seguro!
Esse é um truque de valor inestimável. Ele pode ser usado para enviar todos os tipos de tráfego, não só HTTP. Eu o usei para rsync, telnet, demais transferências de arquivos, e quem sabe mais o quê. Também usei para rotear o tráfego minha web através de um proxy, como forma de contornar os firewalls restritivos.
O poder do SSH
O SSH é uma chave bastante fundamental no trabalho com comandos remotos, mas é uma daquelas coisas estranhas que normalmente não são ensinadas. Você não aprende SSH quando aperfeiçoa sua técnica, mas você precisa ser capaz de compartilhar o que você cria. Espero que este artigo tenha te dado uma ideia sobre como tornar o compartilhamento um pouco mais fácil.
***
Artigo de Lorna Mitchell, traduzido pela Redação iMasters. Publicado originalmente em http://webadvent.org/2012/ssh-tips-by-lorna-mitchell




