Login em um sistema remoto


Os usuários e administradores do Linux geralmente precisam ter acesso ao shell por um sistema remoto, conectando-se a ele pela rede. Em um ambiente de computação moderno, muitos servidores sem periféricos são máquinas virtuais ou estão sendo executados como instâncias de nuvem pública ou privada. Esses sistemas não são físicos e não têm consoles de hardware reais. Eles podem nem mesmo fornecer acesso a seu console físico (simulado) ou console serial.

No Linux, a maneira mais comum de obter um prompt do shell em um sistema remoto é usar o Secure Shell (SSH). A maioria dos sistemas Linux (incluindo o Red Hat Enterprise Linux) e macOS fornecem o programa de linha de comando OpenSSH ssh para esse fim.

Nesse exemplo, um usuário com um prompt do shell no host da máquina usa ssh para fazer login no sistema Linux remoto remotehost como o usuário remoteuser:

[user@host ~]$ ssh remoteuser@remotehost
remoteuser@remotehost's password: password
[remoteuser@remotehost ~]$

O comando ssh criptografa a conexão para proteger a comunicação contra espionagem ou sequestro de senhas e conteúdo.

Alguns sistemas (como novas instâncias de nuvem) não permitem que os usuários usem uma senha para fazer login com ssh para ter maior segurança. Uma maneira alternativa de autenticar em uma máquina remota sem digitar uma senha é por meio de autenticação de chave pública.

Com esse método de autenticação, os usuários têm um arquivo de identidade especial com uma chave privada, que é equivalente a uma senha, e que eles mantêm em segredo. Sua conta no servidor é configurada com uma chave pública correspondente, o que não precisa ser secreto. Ao fazer login, os usuários podem configurar ssh para fornecer a chave privada. Se a chave pública correspondente estiver instalada nessa conta nesse servidor remoto, ela será registrada sem a solicitação de uma senha.

No próximo exemplo, um usuário com um prompt do shell nos logs do host da máquina faz login no remotehost como remoteuser com ssh, usando o método de autenticação de chave pública. A opção -i do comando ssh é usada para especificar o arquivo de chave privada do usuário, que é mylab.pem. A chave pública correspondente já está configurada como uma chave autorizada na conta remoteuser

[user@host ~]$ ssh -i mylab.pem remoteuser@remotehost
[remoteuser@remotehost ~]$

Para que a conexão funcione, somente o usuário proprietário do arquivo pode ter acesso para ler o arquivo de chave privada. No exemplo anterior, onde a chave privada está no arquivo mylab.pem, o comando chmod 600 mylab.pem poderia ser usado para garantir que somente o proprietário possa ler o arquivo. Como definir permissões de arquivo é discutido em mais detalhes em um capítulo posterior.

Os usuários também podem ter chaves particulares configuradas que são testadas automaticamente, mas essa discussão está além do escopo desta seção. As Referências no final desta seção contêm links para mais informações sobre este tópico.

Toda vez que você se conecta a um host remoto com ssh, o host remoto envia sua chave de host para se autenticar e ajudar a configurar a comunicação criptografada. O comando ssh compara a chave de host a uma lista de chaves de host salvas para garantir que ele não tenha sido alterado. Se a chave do host tiver sido alterada, isso pode indicar que alguém está tentando fingir ser esse host para sequestrar a conexão que também é conhecida como ataque interceptor. No SSH, as chaves do host protegem contra ataques interceptores, essas chaves de host são exclusivas para cada servidor e precisam ser alteradas periodicamente e sempre que houver suspeita de comprometimento.

Você recebe esse aviso quando sua máquina local não tem uma chave de host salva para o host remoto. Se você digitar yes, a chave do host que o host remoto enviou será aceita e salva para referência futura. O processo de login continua e você não verá essa mensagem novamente ao se conectar a esse host. Se você digitar no, a chave do host será rejeitada e a conexão será fechada.

Se a máquina local tiver uma chave de host salva e não corresponder àquela enviada pelo host remoto, a conexão será fechada automaticamente com um aviso.

Referências