Introdução
Uma ferramenta essencial para dominar como administrador de sistemas é o SSH.
O SSH, ou Secure Shell, é um protocolo usado para fazer login de forma segura em sistemas remotos. É a maneira mais comum de acessar servidores Linux remotos.
Neste guia, discutiremos como usar o SSH para se conectar a um sistema remoto.
Implante suas aplicações de frontend do GitHub usando Plataforma de Aplicativos DigitalOcean. Deixe a DigitalOcean se concentrar em dimensionar seu aplicativo.
Sintaxe Principal
Para se conectar a um sistema remoto usando SSH, usaremos o comando ssh
.
Se estiver a utilizar o Windows, precisará de instalar uma versão do OpenSSH para conseguir fazer ssh
a partir de um terminal. Se preferir trabalhar no PowerShell, pode seguir a documentação da Microsoft para adicionar o OpenSSH ao PowerShell. Se preferir ter um ambiente Linux completo disponível, pode configurar o WSL, o Subsistema Windows para Linux, que incluirá o ssh
por padrão. Por fim, como terceira opção mais leve, pode instalar o Git para Windows, que fornece um ambiente de terminal bash nativo do Windows que inclui o comando ssh
. Cada uma destas opções é bem suportada e a escolha dependerá da preferência.
Se estiver a utilizar um Mac ou Linux, já terá o comando ssh
disponível no seu terminal.
A forma mais direta do comando é:
O remote_host
neste exemplo é o endereço IP ou nome de domínio ao qual está a tentar ligar-se.
Este comando assume que o seu nome de utilizador no sistema remoto é o mesmo que o seu nome de utilizador no seu sistema local.
Se o seu nome de utilizador for diferente no sistema remoto, pode especificá-lo utilizando esta sintaxe:
Depois de se ligar ao servidor, poderá ser-lhe pedido que verifique a sua identidade fornecendo uma palavra-passe. Mais tarde, abordaremos como gerar chaves para usar em vez de palavras-passe.
Para sair da sessão ssh e retornar à sessão do shell local, digite:
Como o SSH funciona?
O SSH funciona conectando um programa cliente a um servidor ssh, chamado sshd
.
Na seção anterior, ssh
era o programa cliente. O servidor ssh já estava em execução no remote_host
que especificamos.
Em quase todos os ambientes Linux, o servidor sshd
deve iniciar automaticamente. Se não estiver em execução por algum motivo, talvez seja necessário acessar temporariamente seu servidor por meio de um console baseado na web ou console serial local.
O processo necessário para iniciar um servidor ssh depende da distribuição do Linux que você está usando.
No Ubuntu, você pode iniciar o servidor ssh digitando:
Isso deve iniciar o servidor sshd e você pode fazer login remotamente.
Como configurar o SSH
Ao alterar a configuração do SSH, você está alterando as configurações do servidor sshd.
No Ubuntu, o arquivo de configuração principal do sshd está localizado em /etc/ssh/sshd_config
.
Faça backup da versão atual deste arquivo antes de editar:
Abra-o usando nano
ou o seu editor de texto favorito:
Você vai querer deixar a maioria das opções neste arquivo como estão. No entanto, há algumas que você pode querer dar uma olhada:
Port 22
A declaração de porta especifica em qual porta o servidor sshd irá escutar conexões. Por padrão, isto é 22
. Você provavelmente deve deixar esta configuração como está, a menos que tenha razões específicas para fazer o contrário. Se você fizer mudar sua porta, vamos mostrar como se conectar à nova porta mais tarde.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
As declarações de chaves de host especificam onde procurar pelas chaves de host globais. Vamos discutir o que é uma chave de host mais tarde.
SyslogFacility AUTH
LogLevel INFO
Esses dois itens indicam o nível de registro que deve ocorrer.
Se você estiver tendo dificuldades com SSH, aumentar a quantidade de registro pode ser uma boa maneira de descobrir qual é o problema.
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
Esses parâmetros especificam algumas das informações de login.
LoginGraceTime
especifica quantos segundos manter a conexão viva sem fazer login com sucesso.
Pode ser uma boa ideia definir este tempo apenas um pouco mais alto do que o tempo que você leva para fazer login normalmente.
PermitRootLogin
seleciona se o usuário root está autorizado a fazer login.
Na maioria dos casos, isso deve ser alterado para no
quando você tiver criado uma conta de usuário que tenha acesso a privilégios elevados (através de su
ou sudo
) e possa fazer login através de ssh, a fim de minimizar o risco de alguém obter acesso root ao seu servidor.
strictModes
é um guarda de segurança que recusará uma tentativa de login se os arquivos de autenticação forem legíveis por todos.
Isso impede tentativas de login quando os arquivos de configuração não são seguros.
X11Forwarding yes
X11DisplayOffset 10
Esses parâmetros configuram uma habilidade chamada Encaminhamento X11. Isso permite visualizar a interface gráfica do usuário (GUI) de um sistema remoto no sistema local.
Esta opção deve ser habilitada no servidor e fornecida com o cliente SSH durante a conexão com a opção -X
.
Após fazer suas alterações, salve e feche o arquivo. Se estiver usando nano
, pressione Ctrl+X
, depois quando solicitado, Y
e depois Enter.
Se você alterou alguma configuração em /etc/ssh/sshd_config
, certifique-se de recarregar seu servidor sshd para implementar suas modificações:
Você deve testar minuciosamente suas alterações para garantir que operem da maneira esperada.
Pode ser uma boa ideia ter algumas sessões de terminal abertas enquanto você faz alterações. Isso permitirá reverter a configuração, se necessário, sem bloquear o acesso.
Como fazer login no SSH com chaves
Embora seja útil poder fazer login em um sistema remoto usando senhas, é mais rápido e seguro configurar a autenticação baseada em chaves.
Como funciona a autenticação baseada em chaves?
A autenticação baseada em chaves funciona criando um par de chaves: uma chave privada e uma chave pública.
A chave privada está localizada no computador cliente e é mantida em segredo e segura.
A chave pública pode ser fornecida a qualquer pessoa ou colocada em qualquer servidor que você deseje acessar.
Quando você tenta conectar usando um par de chaves, o servidor usará a chave pública para criar uma mensagem para o computador cliente que só pode ser lida com a chave privada.
O computador cliente então envia a resposta apropriada de volta ao servidor e o servidor saberá que o cliente é legítimo.
Esse processo é realizado automaticamente depois que você configura suas chaves.
Como criar chaves SSH
As chaves SSH devem ser geradas no computador de onde você deseja fazer login de. Geralmente, este é o seu computador local.
Insira o seguinte na linha de comando:
Você pode ser solicitado a definir uma senha nos próprios arquivos-chave, mas esta é uma prática bastante incomum e você deve pressionar Enter através das solicitações para aceitar os padrões. Suas chaves serão criadas em ~/.ssh/id_rsa.pub e ~/.ssh/id_rsa.
Mude para o diretório .ssh
digitando:
Verifique as permissões dos arquivos:
Output-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub
Como você pode ver, o arquivo id_rsa
é legível e gravável apenas para o proprietário. Isso ajuda a mantê-lo em segredo.
O arquivo id_rsa.pub
, no entanto, pode ser compartilhado e possui permissões apropriadas para esta atividade.
Como Transferir Sua Chave Pública para o Servidor
Se você atualmente tem acesso baseado em senha a um servidor, você pode copiar sua chave pública para ele emitindo este comando:
Isso iniciará uma sessão SSH. Depois de inserir sua senha, ele copiará sua chave pública para o arquivo de chaves autorizadas do servidor, o que permitirá que você faça login sem a senha na próxima vez.
Opções do Lado do Cliente
Existem várias bandeiras opcionais que você pode fornecer ao se conectar via SSH.
Algumas destas podem ser necessárias para coincidir com as configurações no arquivo sshd
do host remoto.
Por exemplo, se você alterou o número da porta na sua configuração do sshd
, precisará corresponder a essa porta no lado do cliente digitando:
Nota: Alterar a porta ssh é uma maneira razoável de fornecer segurança por meio da obscuridade. Se você está permitindo conexões ssh para uma implantação de servidor amplamente conhecida na porta 22 como normal, e tem a autenticação por senha habilitada, provavelmente será atacado por muitas tentativas automatizadas de login. Usar exclusivamente autenticação baseada em chaves e executar ssh em uma porta não padrão não é a solução de segurança mais complexa que você pode empregar, mas deve reduzir essas tentativas ao mínimo.
Se você deseja executar apenas um comando em um sistema remoto, pode especificá-lo após o host assim:
Você se conectará à máquina remota, autenticará e o comando será executado.
Como mencionado anteriormente, se o encaminhamento X11 estiver habilitado em ambos os computadores, você pode acessar essa funcionalidade digitando:
Desde que tenha as ferramentas apropriadas no seu computador, os programas de GUI que você usa no sistema remoto agora abrirão sua janela no seu sistema local.
Desativando a Autenticação por Senha
Se você criou chaves SSH, você pode melhorar a segurança do seu servidor desabilitando a autenticação apenas por senha. Além do console, a única maneira de fazer login no seu servidor será através da chave privada que corresponde à chave pública que você instalou no servidor.
Aviso: Antes de prosseguir com esta etapa, certifique-se de ter instalado uma chave pública no seu servidor. Caso contrário, você será bloqueado!
Como root ou usuário com privilégios sudo, abra o arquivo de configuração do sshd
:
Localize a linha que diz Password Authentication
e descomente-a removendo o #
no início. Em seguida, você pode alterar seu valor para no
:
PasswordAuthentication no
Outras duas configurações que não devem precisar ser modificadas (desde que você não tenha modificado este arquivo anteriormente) são PubkeyAuthentication
e ChallengeResponseAuthentication
. Elas são definidas por padrão e devem ser como segue:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Após fazer suas alterações, salve e feche o arquivo.
Agora você pode recarregar o daemon SSH:
A autenticação por senha agora deve estar desabilitada, e seu servidor deve ser acessível apenas através da autenticação por chave SSH.
Conclusão
Aprender a utilizar o SSH beneficiará muito qualquer uma de suas futuras empreitadas em computação em nuvem. Conforme você utiliza as várias opções, descobrirá funcionalidades mais avançadas que podem facilitar sua vida. O SSH permanece popular porque é seguro, leve e útil em diversas situações.
Em seguida, você pode querer aprender sobre como trabalhar com SFTP para realizar transferências de arquivos através da linha de comando.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server