Lista de comando SSH úteis para administradores de sistemas Linux
Na dica de hoje vamos mostrar alguns dos principais recursos/comando do SSH. Secure Shell (SSH) é um protocolo de rede criptográfico para operação de serviços de rede de forma segura sobre uma rede insegura. O melhor exemplo de aplicação conhecido é para login remoto de utilizadores a sistemas de computadores.
O SSH fornece um canal seguro sobre uma rede insegura em uma arquitetura cliente-servidor, conectando uma aplicação cliente SSH com um servidor SSH. Aplicações comuns incluem login em linha de comando remoto e execução remota de comandos, mas qualquer serviço de rede pode ser protegido com SSH. A especificação do protocolo distingue entre duas versões maiores, referidas como SSH-1 e SSH-2. (wikipedia)
Vamos agora a nossa dica de hoje.
O acesso manual do SSH pode ser acessado executando o seguinte comando em seu terminal Linux:
$ ssh
Para editar suas configurações SSH, como porta de acesso e tempo limite de conexão, você precisará acessar o arquivo de configuração /etc/ssh/ssh_config ou /etc/ssh/sshd_config.
$ sudo nano /etc/ssh/ssh_config
OU
$ sudo vim /etc/ssh/sshd_config
Para acessar uma máquina remota/servidor de uma máquina cliente via SSH, você precisará seguir a seguinte implementação de comando:
$ ssh usuario@servidorremoto enderecoip
Será solicitado uma senha associada ao usuário da máquina remota antes de obter acesso.
Além de obter acesso direto a uma máquina remota e editar o arquivo de configuração SSH de acordo com sua preferência, as seguintes opções do SSH são muito úteis na comunicação entre o cliente e a máquina remota.
Gerar SSH-Keygen.
É uma recomendação usar o algoritmo ed25519 ao gerar chaves SSH. Considere a implementação abaixo usando um endereço de e-mail aleatório:
$ ssh-keygen -t ed25519 -C " emailqualquer@gmail.com "
Por motivos de compatibilidade, você pode decidir gerar a chave via RSA, conforme demonstrado abaixo:
$ ssh-keygen -t rsa -b 4096 -C " user@soloweb.com.br "
O sinalizador -C associa cada chave pública a um comentário, facilitando a vinculação de um endereço de e-mail à sua chave pública legítima. Durante a geração da chave SSH, lembre-se sempre de associar cada chave privada a uma senha para fins de segurança.
Conectar o servidor usando chaves SSH.
Para se conectar a uma máquina remota por meio de uma chave privada específica, consulte a seguinte implementação de comando:
Para chaves privadas geradas pelo algoritmo ed25519 :
$ ssh -i $HOME/.ssh/id_ed25519 ubuntu@192.168.100.29
Para chaves privadas geradas por RSA :
$ ssh -i $HOME/.ssh/id_rsa ubuntu@192.168.100.29
Conectar o servidor usando chaves autorizadas.
Se você pretende usar suas chaves SSH (chaves públicas) com um sistema de servidor ou serviço como o Github, você precisará anexar uma cópia das chaves com o arquivo ~/.ssh/authorized_keys no sistema remoto/servidor conforme demonstrado abaixo.
$ cat ~/.ssh/id_rsa.pub | ssh ubuntu@192.168.100.29 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Alternativamente, o seguinte comando também funciona:
$ ssh-copy-id ubuntu@192.168.100.29
A partir daqui, podemos nos conectar à máquina remota sem ser solicitada uma senha:
$ ssh ubuntu@192.168.100.29
Comandos SCP para Upload/Download de Arquivos.
Ao querer realizar uploads de arquivos em máquinas remotas:
$ scp simple.txt ubuntu@192.168.100.29 :/home/ubuntu/Downloads
Ao querer executar o upload recursivo de pasta/diretório local para uma máquina remota:
$ scp -rp mypackage ubuntu@192.168.100.29 :/home/ubuntu/Downloads
Baixando/recuperando um arquivo de uma máquina remota:
$ scp ubuntu@192.168.100.29 :/home/ubuntu/Downloads/simple.txt /home/dnyce/Downloads
Baixando/recuperando uma pasta/diretório recursivamente de uma máquina remota:
$ scp -rp ubuntu@192.168.100.29 :/home/ubuntu/Downloads/mypackage /home/dnyce/Downloads
Usando portas SSH não padrão.
Se o servidor SSH estiver sendo executado em uma porta não padrão como 3333 , sua conexão deve ser implementada da seguinte maneira:
$ ssh -p 3333 ubuntu@192.168.100.29
Executando comandos em máquinas remotas.
Se quisermos executar um comando na máquina remota como uma atualização do sistema ou comando ping após uma conexão SSH bem-sucedida, implementaremos o seguinte comando:
$ ssh -t ubuntu@192.168.100.29 'sudo apt update'
Como estamos executando um comando com privilégios de sudo, será solicitada uma senha de usuário.
Iniciar aplicativo na máquina remota.
Para iniciar um aplicativo como o aplicativo galculator após uma conexão ssh bem-sucedida, implemente:
$ ssh -X -t ubuntu@192.168.100.29 'galculator'
Gerenciar chaves SSH com SSH-Agent.
Um agente ssh é um gerenciador de chaves SSH que usa chaves ssh geradas pelo armazenamento de memória do processo, possibilitando o acesso do usuário a máquinas/servidores remotos sem a necessidade de uma senha de chave para autenticação do servidor.
Simplesmente implemente o seguinte comando com um openSSH em execução:
$ ssh-add /caminho/para/privado/chave/arquivo
Para chaves privadas geradas pelo algoritmo ed25519 :
$ ssh-add $HOME/.ssh/id_ed25519
Para chaves privadas geradas por RSA:
$ ssh-add $HOME/.ssh/id_rsa
Criando configuração SSH
A criação do arquivo ~/.ssh/config permite gerenciar hosts SSH facilmente. As entradas de amostra neste arquivo têm a seguinte aparência:
Host linuxshelltips*
User dnyce
UdentifyFile ~/.ssh/linuxshelltips.pem
Host linuxshelltips-tutorials
Hostname 192.168.100.29
Host api.linuxshelltips.com
User ravi
IdentityFile ~/.ssh/ravi.key
Sair de sessões SSH mortas
Se a sessão SSH não responder, use as seguintes combinações de teclas do teclado.
$ [Enter], ~, .
Vários pares de chaves do Github.
Ao trabalhar com diferentes repositórios privados do Github, com diferentes pares de chaves SSH, e desejar cloná-los, considere a seguinte implementação no arquivo ~/.ssh/config .
Host github-linuxshelltips-tutorials.org
Hostname github.com
IdentityFile ~/.ssh/id_tutorials
Host github-linuxshelltips-nginx-series.org
Hostname github.com
IdentityFile ~/.ssh/id_nginx
Túneis SSH
Essa abordagem é recomendada ao acessar máquinas remotas invisíveis para o mundo externo, como o banco de dados do Amazon RDS:
$ ssh ubuntu@jumphost -N -f -L localport:targethost:targetport
Como podemos ver, o SSH nos permite uma infinidade de recursos e vale a pena estudá-lo a fundo. Esperamos ter ajudado com esta dica e siga nos para mais tutoriais.
E lembrando que a SOLOWEB além de oferecer Hospedagem de Sites, Servidores Dedicados, Servidores VPS com o menor custo do Brasil, também desenvolve soluções de software e realiza gerenciamento e monitoramento de servidores para sua empresa, faça uma cotação sem custo, acesse: www.soloweb.com.br