quinta-feira, 6 de abril de 2023

Laboratório Linux: SSH - Conectar a um Computador Remoto

O SSH (Secure Shell) é um protocolo de rede e é aplicado no login remoto de utilizadores numa rede de computadores. Fornece um canal seguro para ligação client/servidor. A ligação via SSH a um computador remoto permite-nos levar a cabo muitas operações nesse computador remoto como se estivéssemos junto a esse mesmo computador.

Neste pequeno artigo abordo a utilização do SSH em sistema Linux, mais concretamente em Fedora.

Normalmente o SSH já vem instalado no Fedora, entretanto podemos verificar se se encontra no sistema através do comando:

$ rpm -qa openssh-server e caso estiver instalado vai printar o nome do pacote e a versão.

  • “rpm” é a extensão do pacote
  • “-q” (query)
  • “-a” (all)
  • “-qa” (query all) procurar em todos os pacotes
  • “openssh-server” é o nome do pacote

$ rpm -qa openssh-server

openssh-server-8.7p1-3.fc35.x86_64

Para este laboratório podemos usar o GNOME Boxes (já vem pré instalado no Fedora) ou usar o VirtualBox pelo que deve ser baixado e instalado.

Vamos supor que tudo já se encontra preparado, temos um Sistema Linux instalado no nosso VirtualBox que vamos usar como Cliente

Os primeiros passos

  • Verificar se temos openssh-server instalado, o comando acima indicado
  • No Server verificar o estado do sshd.service se está activo
    • $ systemctl status sshd.service
    • Caso não estiver activo devemos iniciar o serviço sshd:
    • $ sudo systemctl start sshd.service
    • Caso quisermos que sshd.service fique habilitado em cada boot
    • $ sudo systemctl enable sshd.service
  • Verificar qual o IP do Server. No terminal digite:
    • $ ifconfig
    • Vai aparecer qualquer coisa assim:

                  	enp3s0: flags=4163  mtu 1500
                      inet 192.168.1.x 
                  

      Circundei com bordo verde o nosso IP que vai ser utilizado.

Gerando SSH key no lado Cliente

Caso queira logar como root a chave deve ser gerada no terminal como root

# ssh-keygen

Output

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Mas se quiser logar como utilizador normal a chave ssh deve ser gerada como utilizador normal.

$ ssh-keygen
[username@fedora ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): 
Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/username/.ssh/id_rsa
Your public key has been saved in /home/username/.ssh/id_rsa.pub
The key fingerprint is:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Copiar a chave SSH para o Server

Se a chave ssh foi gerada como root:

# ssh-copy-id root@192.168.1.x
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: 
"/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), 
to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed 
-- if you are prompted now it is to install the new keys
root@192.168.1.x's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.1.x'"
and check to make sure that only the key(s) you wanted were added.

Se a chave ssh foi gerada como utilizador normal:

$ ssh-copy-id username@192.168.1.x
The authenticity of host '192.168.1.x (192.168.1.x)' can't be 
established.
ED25519 key fingerprint is xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), 
to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed 
-- if you are prompted now it is to install the new keys
username@192.168.1.x's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@192.168.1.x'"
and check to make sure that only the key(s) you wanted were added.

A configuração original no /etc/ssh/sshd_config não permite root login

Mas como isto é sómente para fins de teste/experimento, vamos editar o ficheiro sshd_config para que possamos logar como root

Abra o ficheiro sshd_config no editor vi:

# vi /etc/ssh/sshd_config

Procure esta linha no ficheiro sshd_config com este comando de busca:

/PermitRootLogin

Esta é a configuração original:

  #LoginGraceTime 2m
  #PermitRootLogin prohibit-password
  #StrictModes yes
  #MaxAuthTries 6
  #MaxSessions 10
  $ ssh-copy-id username@192.168.1.x

Vamos editar e fazer a seguinte alteração adicionando "PermitRootLogin yes":

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
PermitRootLogin yes  
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
$ ssh-copy-id username@192.168.1.x

Conectando ao Server via SSH

Como root

ssh root@192.168.1.x

ou

ssh -l root 192.168.1.x

Como usuário normal

ssh nome_de_usuario@192.168.1.x

ou

ssh -l nome_de_usuario 192.168.1.x

Após fazermos o nosso teste como root podemos reverter o sshd_config para a sua forma original e assim passarmos a logar só como usuário normal a não ser que por alguma conveniência haja a necessidade de logar como root

# vi /etc/ssh/sshd_config

Procure esta linha no sshd_config com este comando de busca:

/PermitRootLogin
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
$ ssh-copy-id username@192.168.1.x

Se chegou até cá, obrigado pela paciência e espero que este artigo tenha sido de alguma utilidade.

Sem comentários:

Enviar um comentário