Uma ferramenta essencial para se ter domínio na administração de sistemas é o SSH.
O SSH, ou Secure Shell, é um protocolo usado para fazer login em sistemas remotos de forma segura. É a maneira mais comum de acessar servidores Linux remotos.
Neste guia, vamos discutir como usar o SSH para se conectar a um sistema remoto.
Para se conectar a um sistema remoto usando o SSH, vamos usar o comando ssh
. A forma mais básica do comando é:
- ssh remote_host
O remote_host
neste exemplo é o endereço IP ou o nome de domínio ao qual você está tentando se conectar.
Este comando assume que o nome de usuário no sistema remoto é o mesmo que o seu nome de usuário em seu sistema local.
Se o nome de usuário for diferente no sistema remoto, especifique isso usando esta sintaxe:
- ssh remote_username@remote_host
Depois de se conectar ao servidor, será solicitado que verifique sua identidade fornecendo uma senha. Mais tarde, vamos mostrar como gerar chaves para usar em vez de senhas.
Para sair da sessão ssh e retornar em sua sessão de shell local, digite:
- exit
O SSH funciona conectando um programa cliente a um servidor ssh, chamado sshd
.
Na seção anterior, o ssh
era o programa cliente. O servidor ssh já está sendo executado no remote_host
que especificamos.
Em seu servidor, o servidor sshd
já deve estar sendo executado. Se este não for o caso, será necessário acessar seu servidor através de um console baseado na Web ou console serial local.
O processo necessário para iniciar um servidor ssh depende da distribuição Linux que você está usando.
No Ubuntu, inicie o servidor ssh digitando:
- sudo systemctl start ssh
Isso deve iniciar o servidor sshd e então você pode fazer login remotamente.
Quando você altera a configuração do SSH, está alterando as configurações do servidor sshd.
No Ubuntu, o arquivo de configuração sshd principal está localizado em /etc/ssh/sshd_config
.
Faça o backup da versão atual deste arquivo antes de editar:
- sudo cp /etc/ssh/sshd_config{,.bak}
Abra-o com um editor de texto:
- sudo nano /etc/ssh/sshd_config
Você vai querer deixar a maioria das opções neste arquivo sozinha. No entanto, existem algumas que você pode querer dar uma olhada:
Port 22
A declaração port especifica em qual porta o servidor sshd irá ouvir conexões. Por padrão, ela é a 22
. Você provavelmente deve deixar essa configuração intacta, a menos que tenha motivos específicos para fazer o contrário. Se você alterar sua porta, vamos mostrar a você como se conectar à nova porta posteriormente.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
As declarações HostKey especificam onde procurar por chaves host globais. Vamos discutir o que é uma chave host mais tarde.
SyslogFacility AUTH
LogLevel INFO
Esses dois itens indicam o nível de geração de registros que deve ocorrer.
Se você estiver tendo dificuldades com o SSH, aumentar a quantidade de registros 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 por quantos segundos será mantida a conexão sem fazer o login com sucesso.
Pode ser uma boa ideia definir esse tempo apenas um pouco mais alto do que a quantidade de 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ê criou uma conta de usuário que tem acesso a privilégios elevados (através de su
ou sudo
) e pode fazer login via ssh.
strictModes
é uma proteção de segurança que recusará uma tentativa de login se os arquivos de autenticação puderem ser lidos por todos.
Isso impede tentativas de login quando os arquivos de configuração não estão seguros.
X11Forwarding yes
X11DisplayOffset 10
Esses parâmetros configuram uma habilidade chamada X11 Forwarding. Isso permite que você visualize a interface gráfica de usuário (GUI) de um sistema remoto, no sistema local.
Essa opção deve estar habilitada no servidor e enviada com o cliente SSH durante a conexão com a opção -X
.
Depois de fazer as alterações, salve e feche o arquivo digitando CTRL+X
e Y
, seguido por ENTER
.
Se você alterou quaisquer configurações em /etc/ssh/sshd_config
, certifique-se de recarregar o servidor sshd para implementar suas modificações:
- sudo systemctl reload ssh
Você deve testar suas alterações minuciosamente para garantir que elas operem da forma que você espera.
Pode ser uma boa ideia ter algumas sessões ativas quando você estiver fazendo alterações. Isso permitirá que você reverta a configuração se necessário.
Embora seja útil fazer login em um sistema remoto usando senhas, é uma ideia muito melhor configurar 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 na máquina cliente e é protegida e mantida em segredo.
A chave pública pode ser fornecida a qualquer um ou colocada em qualquer servidor que você queira acessar.
Quando você tentar se 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 adequada de volta ao servidor e o servidor saberá que o cliente é legítimo.
Todo esse processo é feito automaticamente depois de você configurar as chaves.
As chaves SSH devem ser geradas no computador a partir do qual você deseja fazer login. Esta é geralmente a sua máquina local.
Digite o seguinte na linha de comando:
- ssh-keygen -t rsa
Pressione enter 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:
- cd ~/.ssh
Olhe para as permissões dos arquivos:
- ls -l
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 pelo proprietário. É assim que deve ser para mantê-lo em segredo.
O arquivo id_rsa.pub
, no entanto, pode ser compartilhado e possui permissões adequadas para essa atividade.
Se você tiver atualmente acesso baseado em senha a um servidor, você pode copiar sua chave pública para ele executando este comando:
- ssh-copy-id remote_host
Isso irá iniciar uma sessão SSH. Depois de inserir sua senha, ele irá copiar sua chave pública para o arquivo de chaves autorizadas do servidor, o que permitirá que você faça login sem a senha da próxima vez.
Existem vários sinalizadores opcionais que você pode selecionar ao se conectar por meio de SSH.
Alguns deles podem ser necessários para corresponder às definições na configuração sshd
do host remoto.
Por exemplo, se você alterou o número de porta em sua configuração sshd
, você precisará fazer a correspondência dessa porta do lado do cliente digitando:
- ssh -p port_number remote_host
Se você deseja apenas executar um único comando em um sistema remoto, especifique-o após o host dessa forma:
- ssh remote_host command_to_run
Você irá se conectar à máquina remota, autenticar, e o comando será executado.
Como dissemos antes, se o encaminhamento X11 estiver habilitado em ambos os computadores, acesse essa funcionalidade digitando:
- ssh -X remote_host
Desde que você tenha as ferramentas apropriadas em seu computador, programas gráficos que você usa no sistema remoto irão agora abrir suas janelas em seu sistema local.
Se você criou chaves SSH, melhore a segurança do seu servidor desativando a autenticação somente de senhas. Além do console, a única maneira de fazer login no servidor será através da chave privada que emparelha com a chave pública que você instalou no servidor.
Aviso: antes de prosseguir com este passo, certifique-se de que você instalou uma chave pública no servidor. Caso contrário, você estará sob bloqueio!
Como root ou usuário com privilégios sudo, abra o arquivo de configuração sshd
:
- sudo nano /etc/ssh/sshd_config
Localize a linha em que se lê Password Authentication
, e descomente-a removendo o #
do início. Em seguida, altere seu valor para no
:
PasswordAuthentication no
Duas outras configurações que não devem precisar ser modificadas (desde que você não tenha modificado este arquivo antes) são PubkeyAuthentication
e ChallengeResponseAuthentication
. Elas são definidas por padrão, e devem estar da seguinte forma:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Depois de fazer as alterações, salve e feche o arquivo.
Agora, é possível recarregar o daemon SSH:
- sudo systemctl reload ssh
A autenticação de senha agora deve estar desativada e o servidor deve estar acessível apenas através da autenticação de chaves SSH.
Aprender como usar o SSH é uma atividade que vale a pena, mesmo porque é uma atividade muito comum.
Ao usar as várias opções, você descobrirá funcionalidades mais avançadas que podem tornar sua vida mais fácil. O SSH permaneceu popular porque é seguro, leve e útil em diversas situações.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!