Como usar SSH para conectar-se a um servidor remoto

seu texto aqui

				
					codigo aqui
				
			

Introdução

Uma ferramenta essencial para se dominar como administrador de sistema é o SSH.

SSH, ou Secure Shell (Shell Seguro) , é um protocolo usado para fazer login com segurança em sistemas remotos. É a forma mais comum de acessar servidores Linux remotos.

Neste guia, discutiremos como usar SSH para conectar-se a um sistema remoto.

Sintaxe Central

Para conectar-se a um sistema remoto usando SSH, usaremos o comando de mesmo nome: ssh.

Se estiver usando Windows, você precisará instalar uma versão do OpenSSH para poder utilizar o ssh a partir de um terminal. Se preferir trabalhar no PowerShell, você pode seguir a documentação da Microsoft para adicionar OpenSSH ao PowerShell. Se preferir ter um ambiente Linux completo disponível, você pode configurar o WSL , o subsistema Windows para Linux, que inclui o ssh por padrão. Finalmente, como uma terceira opção leve, você pode instalar o Git para Windows , que fornece um ambiente de terminal bash nativo do Windows que inclui o comando ssh. Cada um deles é amplamente suportado e o que você deve usar dependerá apenas de sua preferência.

Se você estiver usando Mac ou Linux, já terá o comando ssh disponível em seu terminal.

A forma mais direta do comando é:

				
					ssh remote_host
				
			

Neste exemplo, remote_host, é o endereço IP ou nome de domínio ao qual você está tentando se conectar.

Este comando assume que seu nome de usuário no sistema remoto é igual ao seu nome de usuário no sistema local.

Se o seu nome de usuário for diferente no sistema remoto, você poderá especificá-lo usando esta sintaxe:

				
					ssh remote_username@remote_host
				
			

Depois de se conectar ao servidor, poderá ser solicitado que você verifique sua identidade fornecendo uma senha. Posteriormente, abordaremos como gerar chaves para usar em vez de senhas.

Para sair da sessão ssh e retornar à sessão shell local, digite:

				
					exit
				
			

Como funciona o SSH?

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 rodando no remote_host que especificamos.

Em quase todos os ambientes Linux, o servidor  sshd deve iniciar automaticamente. Se ele não estiver em execução por algum motivo, talvez seja necessário acessar temporariamente o servidor por meio de um console baseado na Web ou de um console serial local.

O processo necessário para iniciar um servidor ssh depende da distribuição do Linux que você está usando.

No Ubuntu (e maioria das distribuições derivadas do Debian), você pode iniciar o servidor ssh digitando:

				
					sudo systemctl start ssh
				
			

Isso deve iniciar o servidor sshd e você poderá 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 editá-lo:

				
					sudo cp /etc/ssh/sshd_config{,.bak}
				
			

Abra-o usando nano ou o seu editor de texto favorito:

				
					sudo nano /etc/ssh/sshd_config
				
			

Você vai querer deixar a maioria das opções deste arquivo de lado. No entanto, existem algumas opções que você pode querer dar uma olhada:

				
					#/etc/ssh/sshd_config
Port 22
				
			

A declaração Port especifica em qual porta o servidor sshd escutará as conexões. Por padrão, é a porta 22. Você provavelmente deve deixar essa configuração de lado, a menos que tenha motivos específicos para fazer o contrário. Se você alterar sua porta, mostraremos como conectar-se à nova porta mais tarde.

				
					#/etc/ssh/sshd_config
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 chaves de host globais. Discutiremos o que é uma chave de host mais tarde.

				
					#/etc/ssh/sshd_config
SyslogFacility AUTH
LogLevel INFO
				
			

Esses dois itens indicam o nível dos registros no log, que devem ser guardados.

Se você estiver tendo dificuldades com o SSH, aumentar o nível do log pode ser uma boa maneira de descobrir qual é o problema.

				
					#/etc/ssh/sshd_config
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
				
			

Esses parâmetros especificam algumas das informações de login.

LoginGraceTimeespecifica quantos segundos a conexão deve permanecer ativa sem que haja login com êxito. Pode ser uma boa ideia definir esse tempo um pouco mais alto do que o tempo que você leva para fazer login normalmente.

PermitRootLogin indica se o usuário root tem permissão para efetuar 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 efetuar login através de ssh, para minimizar o risco de alguém obter acesso root ao seu servidor.

strictModes é uma medida de segurança que recusará uma tentativa de login se os arquivos de autenticação puderem ser lidos por todos. Isso evita tentativas de login quando os arquivos de configuração não são seguros.

				
					#/etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
				
			

Esses parâmetros configuram uma capacidade chamada X11 Forwarding. 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 as alterações, salve e feche o arquivo. Se você estiver usando nano, pressione Ctrl+X, depois Y e por último aperte Enter. Se você alterou alguma configuração no /etc/ssh/sshd_config, certifique-se de recarregar seu servidor sshd para implementar suas modificações:

				
					sudo systemctl reload ssh
				
			

Você deve testar minuciosamente suas alterações para garantir que elas funcionem da maneira esperada.

Pode ser uma boa ideia ter algumas sessões de terminal abertas enquanto você faz alterações. Isso permitirá que você reverta a configuração, se necessário, sem se bloquear.

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 chave .

Como funciona a autenticação baseada em chave?

A autenticação baseada em chave funciona criando um par de chaves: uma chave privada e uma chave pública.

chave privada está localizada na máquina do cliente e é protegida e mantida em segredo. A chave pública pode ser dada a qualquer pessoa ou colocada em qualquer servidor que você deseje acessar.

Quando você tenta se conectar usando um par de chaves, o servidor usará a chave pública para criar uma mensagem para o computador cliente que só poderá 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. Este processo é executado automaticamente após você configurar suas chaves.

Como criar chaves SSH

As chaves SSH devem ser geradas no computador de onde você deseja fazer login . Geralmente é sua máquina local. Digite o seguinte na linha de comando:

				
					ssh-keygen -t rsa
				
			

Você pode ser solicitado a definir uma senha nos próprios arquivos de chave, mas esta é uma prática bastante incomum e você deve pressionar Enter nos prompts 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
				
			

Veja as permissões dos arquivos:

				
					ls -l
				
			
				
					#saída
-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 pode ser lido e gravado apenas pelo proprietário. Isso ajuda a manter isso em segredo.

O arquivo id_rsa.pub, entretanto, 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:

				
					ssh-copy-id remote_host
				
			

Isso iniciará uma sessão SSH. Depois de inserir sua senha, sua chave pública será copiada 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

Há várias flags opcionais que você pode fornecer ao se conectar por meio do SSH. Algumas delas podem ser necessárias para corresponder às configurações sshddo host remoto.

Por exemplo, se você alterou o número da porta na sua configuração sshd, você precisará corresponder essa porta no lado do cliente digitando:

				
					ssh -p port_number remote_host
				
			

Nota: Alterar sua porta ssh é uma maneira razoável de fornecer segurança por obscuridade . Se você estiver permitindo conexões ssh a uma implantação de servidor amplamente conhecida na porta 22 normalmente e tiver a autenticação por senha ativada, provavelmente será atacado por muitas tentativas automatizadas de login. Usar exclusivamente autenticação baseada em chave e executar ssh em uma porta fora do padrão não é a solução de segurança mais complexa que você pode empregar, mas deve diminuir os riscos.

Se você deseja executar apenas um único comando em um sistema remoto, você pode especificá-lo após o host da seguinte forma:

				
					ssh remote_host command_to_run
				
			

Você se conectará à máquina remota, autenticará e o comando será executado.

Como dissemos antes, se o encaminhamento X11 estiver habilitado em ambos os computadores, você poderá acessar essa funcionalidade digitando:

				
					ssh -X remote_host
				
			

Desde que você tenha as ferramentas apropriadas em seu computador, os programas GUI que você usa no sistema remoto abrirão sua janela agora em seu sistema local.

Desativando autenticação por senha

Se você criou as chaves SSH, poderá aumentar a segurança do seu servidor desabilitando a autenticação por senha. Além do console, a única maneira de fazer login no servidor será por meio da chave privada que emparelha com a chave pública que você instalou no servidor.

Aviso: Antes de prosseguir com esta etapa, certifique-se de ter instalado uma chave pública em seu servidor. Caso contrário, você ficará bloqueado!

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 onde está escrito Password Authentication e remova o comentário removendo o caracter # do início. Você pode então alterar seu valor para no:

				
					#/etc/ssh/sshd_config
PasswordAuthentication no
				
			

Outras duas configurações que não devem precisar ser modificadas (desde que você não tenha modificado esse arquivo antes) são PubkeyAuthentication ChallengeResponseAuthentication. Elas são definidos por padrão e devem estar da seguinte forma:

				
					#/etc/ssh/sshd_config
PubkeyAuthentication yes
ChallengeResponseAuthentication no
				
			

Após fazer as alterações, salve e feche o arquivo. Agora você pode recarregar o daemon SSH:

				
					sudo systemctl reload ssh
				
			

A autenticação por senha deve agora estar desabilitada e seu servidor deve estar acessível apenas por meio de autenticação de chave SSH.

Conclusão

Aprender como usar o SSH beneficiará muito qualquer um de seus estudos futuros sobre computação em nuvem. Ao usar as diversas opções, você descobrirá funcionalidades mais avançadas que podem facilitar sua vida. O SSH permanece popular porque é seguro, leve e útil em diversas situações. Espero que este artigo tenha sido útil para seu aprendizado.

Este artigo foi traduzido e adaptado para o Português pelo autor do post. O artigo original pode ser lido aqui.

Compartilhe: