Este guia irá abordar alguns comandos SSH essenciais para quem precisa acessar e/ou gerenciar um servidor remoto qualquer.
Na verdade, é claro, trata-se de comandos Linux, os quais são executados em servidores remotos através de uma conexão via SSH.
Esta máquina remota pode ser um servidor web, por exemplo, no qual roda alguma distribuição Linux. Como geralmente acontece no caso de servidores, uma interface gráfica é inexistente.
Assim, tudo deve ser feito através do terminal, e você deve, então, conhecer pelo menos os comandos básicos para poder navegar entre as pastas, copiar e remover arquivos, fazer buscas, executar tarefas de manutenção, etc.
Pré-requisitos antes de usar comandos SSH
Em primeiro lugar, vamos a alguns pré-requisitos. Nesse sentido, você vai precisar dos seguintes itens:
Categoria | Requisito |
---|---|
Sistema local | Windows, Linux ou macOS |
Sistema remoto | Linux |
Ferramenta local | Um cliente SSH qualquer (ou o terminal, no Linux ou Mac) |
Ferramenta remota | Servidor SSH |
Conforme a tabela acima, no Linux ou no macOS você pode usar apenas o terminal para a conexão ao servidor remoto.
Agora, no Windows, é necessário instalar um software adicional. Neste sistema operacional, você deve utilizar os comandos constantes neste guia através de um cliente SSH.
O mais conhecido deles é o PuTTY, o qual também é um software open source. Mas existem outros, também gratuitos, como o Bitvise SSH Client.
O que é SSH?
Em primeiro lugar é interessante que você entenda o que significa SSH. Assim, SSH quer dizer Secure Shell . Trata-se de um protocolo de rede que permite conexões a servidores ou sistemas remotos.
Mediante o uso de criptografia, o SSH permite que usuários e administradores acessem máquinas remotas com total segurança.
Surgido em 1995, o protocolo é largamente utilizado na indústria, facilitando bastante a administração de servidores web, por exemplo.
Embora não seja o único método de conexão a máquinas remotas (existem também clientes FTP, ou até mesmo SFTP, por exemplo), o SSH acaba sendo muito usado devido à sua rapidez e segurança.
Através do SSH é muito tranquilo executar comandos em uma máquina Linux remota, por exemplo.
Copiar e mover arquivos, criar diretórios, instalar programas e até mesmo monitorar recursos e realizar pesquisas em diretórios: tudo isto, e muito mais, é possível através de uma conexão SSH.
Como acessar um servidor remoto
Primeiramente, abra o terminal (no Linux ou no Mac) ou então o cliente SSH de sua escolha. Além disso, certifique-se de ter em mãos o IP ou o domínio do servidor remoto ao qual irá se conectar.
Você também deve possuir as credenciais de acesso a este servidor. Ou seja, você deve possuir um usuário e uma senha, pelo menos a princípio, para então efetuar login na máquina e poder trabalhar.
Em alguns casos, dependendo do tipo de hospedagem de site que você contratou, é também necessário liberar o acesso SSH para o usuário em questão (em painéis como cPanel ou WHM, por exemplo).
Na dúvida, aqui, entre em contato com o provedor de hospedagem.
Como acessar um servidor remoto via SSH
Para iniciar a conexão, você deve utilizar um comando com a seguinte sintaxe:
ssh usuario@IPDoServidor
Ou seja, digamos que você deseja se conectar a um servidor cujo IP é 192.168.0.1 (apenas um exemplo, pois este é um IP privado).
Digamos também que o usuário de acesso é “teste” (sem aspas). Assim, você deve usar um comando semelhante ao abaixo:
ssh [email protected]
Em seguida, será iniciado o processo de login. Na sequência, você deve digitar sua senha. É possível também copiá-la, de um local qualquer (um gerenciador de senhas, por exemplo) e colá-la dentro do terminal, usando CTRL+SHIF+V
.
Acessando um servidor remoto via SSH em porta diferente da padrão
Vale lembrar que a porta padrão para acesso ao SSH é a 22. Porém, é possível também que uma outra porta tenha sido configurada no sistema remoto.
Neste caso, é preciso usar a opção -p
no comando, conforme abaixo:
ssh -p porta usuario@IPDoServidor
Ou seja, para realizar a conexão a uma máquina que esteja “escutando” na porta 2222, basta usar um comando similar ao abaixo (usando o exemplo acima, com o usuário “teste”):
ssh -p 2222 [email protected]
Pronto! Seguindo os procedimentos acima você se conectará rapidamente ao servidor remoto!
Repare também que, agora, o prompt mudará. A partir deste momento é exibido o nome do usuário conectado e o hostname remoto.
Lista (com exemplos) de comandos SSH essenciais
Antes de mais nada, vale lembrar que comandos Linux geralmente são universais. Assim, confira o guia abaixo, o qual lista alguns comandos também essenciais:
Agora, segue a lista com comandos SSH essenciais, além de vários exemplos de uso.
Comandos SSH de ajuda e informações
Os comandos abaixo podem ser usados assim que você se conecta ao servidor web, por exemplo. Dependendo da situação, eles fornecem informações valiosas.
Comando man
Através do comando man
, você pode obter manuais de comandos. É algo simples e rápido. Basta utilizar o man
seguido do comando a respeito do qual você tem dúvida.
Por exemplo, o comando abaixo exibirá informações a respeito do comando ls
:
man ls
Comando info
Analogamente ao man
, o comando info
também exibe manuais de comandos. Aqui, porém, há um maior nível de detalhes. Para usá-lo, digite apenas info
seguido do comando sobre o qual tem dúvida. Por exemplo:
info pwd
Comando uptime
O comando uptime
informa, como você deve adivinhar, o uptime da máquina. Em outras palavras, há quanto tempo o servidor encontra-se ligado.
Dessa forma, você obterá uma saída semelhante à abaixo:
Comando pwd
O comando pwd
exibe o diretório no qual você se encontra. Muito útil quando você “se perder” em meio a seus diretórios e arquivos.
Comando clear
Através do comando clear
, você “limpa” a tela do terminal.
Comando top
O top
serve para exibir processos e também quanto eles estão consumindo de memória e CPU, tudo em tempo real.
Comando free
O comando free
exibe a memória RAM total, em uso e livre. Ele também lista informações sobre a swap.
Comando ps
Através do comando ps
, você pode visualizar os processos em execução.
Comando uname
O uname
exibe informações a respeito do sistema Linux. Assim, para obter informações mais detalhadas, use da seguinte forma:
uname -a
Através do comando acima, serão exibidas também informações a respeito do kernel e da arquitetura.
Comando passwd
O comando passwd
permite que você altere a senha do usuário logado no momento. Lembre-se de que será necessário informar a senha atual, em primeiro lugar.
Comandos SSH de navegação
Comando ls
O comando ls
exibe arquivos e diretórios. É possível utilizá-lo inclusive com a informação do caminho completo (por exemplo, ls /etc/apache2
).
Porém, seu modo de uso mais simples exibe o conteúdo do diretório no qual você se encontra. Veja um exemplo:
Comando cd
Eis aqui mais um comando essencial. O cd
(change directory) serve para navegar através dos diretórios. Seu uso é muito simples, também. Apenas digite cd
+ o caminho que deseja acessar.
Vale lembrar que o comando cd
pode ser usado tanto com caminhos absolutos (com o uso de uma barra = “/” ) quanto com caminhos relativos (que tomam como base o diretório atual, onde você se encontra).
Exemplo de uso com um caminho absoluto:
cd /home/usuario/public_html
Exemplo de uso com caminho relativo, estando dentro do diretório “public_html”:
cd wp-admin
E assim por diante!
Com o cd
, além disso, é possível navegar para a pasta imediatamente acima de onde você está no momento. Para isto, basta digitar cd ..
(cd
seguido de um espaço e dois pontos).
Por outro lado, com cd -
(cd
seguido de um espaço e um hífen) você retorna para o diretório em que estava anteriormente.
Finalmente, digitando apenas cd ~
(cd
+ til) ou cd
você retorna para o diretório home
.
Comandos SSH básicos para gerenciamento de diretórios e arquivos
Comando rm
O comando rm
(remove) serve para deletar arquivos ou diretórios. É preciso bastante cuidado ao usar este comando, entretanto, e por motivos óbvios.
Nesse sentido, vale dizer que a sintaxe do comando é muito simples (rm nomeDoArquivo
). Agora, para remover diretórios, é preciso usar o argumento -r
. Por exemplo:
rm -r nomeDoDiretorio
E assim por diante!
Comando rmdir
Eis aqui outro comando que permite a remoção de diretórios. Então, simplesmente digite o seguinte: rmdir nomeDoDiretorio
.
Porém, fica mais uma vez o aviso: cuidado também durante o uso do rmdir
, para não apagar nada importante de forma indevida.
Comando mkdir
Em seguida, conheça outro comando também muito importante. Enquanto o rmdir
apaga diretórios, o mkdir
(make directory) serve para criá-los.
E seu uso é também muito simples. Apenas digite mkdir nomeDoDiretorio
.
Comando cp
Juntamente com os comandos acima, o cp
é outro comando que você usará bastante quando acessar um servidor através do SSH.
Assim, confira abaixo a sintaxe do comando:
cp origem destino
Ou seja, para copiar um arquivo chamado arquivoOrigem.txt
para o diretório testesTecLinux
, porém renomeando-o para arquivoDestino.txt (na pasta destino), basta usar um comando como o abaixo:
cp arquivoOrigem.txt testesTecLinux/arquivoDestino.txt
Agora, veja a saída:
Eu renomeei o arquivo apenas para melhor ilustrar o processo. Por outro lado, é também possível copiá-lo mantendo o mesmo nome, e neste caso, o comando é o seguinte:
cp arquivoOrigem.txt testesTecLinux/
Agora, compare a saída:
Bem simples, não? Agora, através do comando cp
você também pode copiar pastas. Neste caso, é preciso usar o argumento -a
, conforme abaixo:
cp -a novaPasta/ testesTecLinux/
Ou seja, de acordo com o exemplo acima, nós copiamos a pasta “novaPasta” para dentro da pasta “testesTecLinux” (incluindo tudo o que estava dentro de “novaPasta”). Confira a saída:
Vale também lembrar que o cp
trabalha tanto com caminhos relativos quanto com caminhos absolutos.
Comandos SSH adicionais para gerenciamento de diretórios e arquivos
Existem alguns outros comandos SSH muito úteis para lidarmos com diretórios e arquivos em máquinas remotas. Confira abaixo!
Comando mv
O comando mv
é usado para mover arquivos e pastas, além de ser capaz de renomear arquivos. Observe que, neste caso, apesar do procedimento ser parecido com o uso do comando cp
, nós estamos removendo o conteúdo de um local e enviando-o para outro (diferente de uma cópia, por exemplo).
Assim, a sintaxe básica do comando segue abaixo:
mv origem destino
Ou seja, para mover um arquivo chamado arquivoOrigem.txt
para o diretório testesTecLinux
, basta usar um comando como o abaixo:
mv arquivoOrigem.txt testesTecLinux/
Em seguida, repare na saída:
Por outro lado, para apenas renomear um arquivo, basta usar o comando mv
conforme o exemplo abaixo:
mv arquivoOrigem.txt arquivoRenomeado.txt
O comando mv
permite que você trabalhe tanto com caminhos absolutos quanto com caminhos relativos.
E, finalmente, vale lembrar que o comando também permite a cópia de diretórios, de forma muito simples. Ou seja, é preciso especificar apenas a origem e o destino.
Veja um exemplo:
mv novoTesteTecLinux/ testeTecLinux/
De acordo com o comando acima, nós movemos a pasta “novoTesteTecLinux” para dentro da pasta “testeTecLinux”, incluindo todos os seus arquivos e subdiretórios.
Comandos SSH avançados para gerenciamento de arquivos
Comando touch
O comando touch
cria novos arquivos, com a extensão que você escolher (arquivos vazios, vale lembrar). Ou seja, para criar um novo arquivo .txt com o touch
, simplesmente use um comando similar ao abaixo:
touch nomeArquivo.txt
Comando cat
Através do comando cat
você pode visualizar, no terminal, o conteúdo de um arquivo. Seu uso é bem simples: apenas digite cat nomeDoArquivo.extensao
.
Agora, repare na saída do comando cat credits.php
(este é um arquivo do WordPress):
Comando grep
Eis aqui outro comando muito usado. O grep
permite buscas por determinadas strings dentro de arquivos, e possui uma sintaxe bem simples, conforme abaixo:
grep palavra arquivo.extensao
Assim, por exemplo, para buscar por ocorrências da palavra “wordpress” (sem aspas) dentro do arquivo credits.php, basta usar o seguinte comando:
grep wordpress credits.php
Observe, agora, que as ocorrências encontradas foram destacadas, em verde:
Comando find
Através do comando find
você pode buscar arquivos ou pastas. Por exemplo, o comando abaixo irá localizar, dentro do diretório atual, todos os arquivos com extensão .js:
find -name "*.js"
Você também pode trabalhar com caminhos absolutos, por exemplo, conforme abaixo:
find /etc -name "*.conf"
No exemplo acima, sem sair do diretório onde estamos, estamos fazendo uma busca por arquivos com extensão .conf dentro do diretório /etc.
Já o comando abaixo, por exemplo, irá localizar todos os arquivos “import.php”, no diretório atual e seus subdiretórios:
find -name import.php
Comandos SSH para edição de arquivos
Neste ponto, tudo vai depender do servidor onde você está trabalhando. É possível que algumas destas ferramentas já estejam instaladas.
Porém, é também possível que não, e neste caso você deve instalá-las antes de mais nada.
Basicamente, os editores mais usados no terminal são o nano
e o vim
. Claro, tudo depende do gosto do usuário, mas devo adiantar que usá-los não é difícil.
Assim, se você digitar nano
seguido do nome de um arquivo inexistente (por exemplo, nano testando.php
), será criado automaticamente um novo arquivo, pronto para edição.
Por outro lado, digitando, por exemplo, nano
seguido do nome de um arquivo existente no diretório onde você está, o arquivo será aberto e você poderá editá-lo (por exemplo, nano wp-config.php
).
Comandos SSH para compactação e descompactação de arquivos
Com muita frequência é necessário compactar e descompactar arquivos enquanto estamos lidando com um servidor web, por exemplo.
As ferramentas mais usadas nestes casos são o tar
e o zip
(além do unzip
). Primeiramente, vamos dar uma olhada no zip
e no unzip
.
Comando zip
A sintaxe básica do comando zip
é a seguinte:
zip opcoes nomeDoArquivo.zip arquivosASeremCompactados
Agora, também é possível compactar, de uma vez só, todos os arquivos dentro de um diretório:
zip nomeDoArquivo.zip *.*
Repare, agora, na saída do comando acima:
Comando unzip
Já que nós compactamos um arquivo, vamos agora descompactá-lo. O procedimento, através do comando unzip
, é bem simples.
Simplesmente use unzip
seguido do nome do arquivo compactado. Ou seja:
unzip compactado.zip
Por outro lado, é possível também compactar diretórios inteiros e de forma recursiva com o zip
, ou seja, incluindo todos os subdiretórios e arquivos porventura existentes.
Basta usar o argumento -r
, da seguinte forma:
zip –r nomeDoArquivo.zip nomeDoDiretorio
Comando tar
O comando tar
também é muito usado para compactar arquivos e diretórios. É mais fácil entender o uso do comando através de um exemplo prático, além disso.
Assim, você deve usá-lo da seguinte forma, para compactar arquivos:
tar -czf teclinux.tar.gz *.*
Ou seja, através do comando acima, criamos um arquivo compactado chamado teclinux.tar.gz (usamos um algoritmo para compactar ainda mais o arquivo).
Nesse sentido, vale dizer que o arquivo criado contém todos os arquivos presentes no diretório onde estamos, pois utilizamos um curinga (*.*).
Por outro lado, para descompactar um arquivo .tar.gz, basta usar um comando similar ao abaixo:
tar -xzf teclinux.tar.gz
Lembrando que, no exemplo acima, foram usadas as opções -xzf
, onde o x
vem de eXtract (no lugar do c
= create).
Finalmente, segue abaixo o comando para criar um arquivo .tar.gz a partir de um diretório inteiro, incluindo subdiretórios e arquivos dentro dele:
tar -czf teclinux.tar.gz testescompactacao
Dessa forma, será criado um arquivo “teclinux.tar.gz”, no diretório atual, contendo o diretório “testescompactacao” na íntegra. Observe agora a saída:
Comandos SSH para alterar permissões e proprietários de arquivos
Comando chmod
Com bastante frequência é necessário lidar com permissões de arquivos no Linux. Em um servidor, isto se faz ainda mais necessário, uma vez que o Linux é um S.O. com um rígido sistema de permissões.
Em primeiro lugar, vamos conferir quais são as permissões básicas de arquivos:
Permissão | Ação |
---|---|
r (read) | Leitura |
w (write) | Escrita |
x (execute) | Execução |
No Linux, geralmente trabalha-se com permissões básicas para “usuário” (o proprietário), “grupo” e “outros¨. Através do comando chmod
, portanto, nós conseguimos alterar as permissões de um arquivo.
Por exemplo, o seguinte comando alterará as permissões do arquivo especificado, para que as 3 categorias (usuário, grupo e outros) passem a ter o direito de executar o arquivo:
chmod a+x arquivo.php
Comando chown
O comando chown
, por outro lado, serve para alterar o “dono” (o proprietário) de um arquivo. Por exemplo, o comando abaixo fará com que o arquivo “arquivo.php” mude de “dono”, passando a ser de propriedade do “novousuario”:
chown novousuario arquivo.php
Outros comandos SSH úteis
Obviamente, são muitos os comandos SSH (comandos Linux, na verdade) que podem ser usados enquanto realizamos várias tarefas em um computador remoto.
Além disso, vale também lembrar que os comandos constantes neste guia geralmente contam com modos de uso, argumentos e flags adicionais. Seria até mesmo muito difícil compilar tudo isto em um único artigo.
Porém, seguem abaixo mais alguns comandos úteis:
Comando df
O comando df
é muito usado no Linux. Ele exibe informações relativas ao uso do espaço em disco. Ele exibe partições, pontos de montagem, sistemas de arquivos, espaço usado, espaço disponível, etc.
Veja um exemplo de uso do comando:
Agora, para obter um resultado mais legível, você pode usar o seguinte comando: df -h
.
Comando du
Por outro lado, o comando du
fornece um resumo relativo ao uso de espaço. Assim, para saber quanto a pasta “public_html” ocupa, por exemplo, basta usar o comando da seguinte forma: du public_html
.
Comando wget
O wget
também é muito usado durante acesso remoto. Através dele você pode baixar arquivos da internet, e isto pode ser útil, por exemplo, na instalação de aplicativos.
A sintaxe do comando é muito simples:
wget urlDoArquivo
Comando netstat
O netstat
exibe detalhes da conexão de rede, incluindo várias estatísticas.
Comando Kill
Com o comando kill
você pode “matar” (encerrar) processos no Linux. Basta obter o PID (a ID do processo) através do comando ps
e usar, então, o kill
seguido do ID (por exemplo: kill 19895
).
Comando ping
O comando ping
permite que você verifique o status de conectividade entre o seu computador e um dispositivo remoto. Para usá-lo, basta digitar ping
seguido do endereço (por exemplo: ping google.com
).
Comando scp
– Máquina local para servidor remoto
Um dos comandos SSH mais úteis é o scp
(Secure Copy). Através dele você pode copiar arquivos da sua máquina local, de forma segura, para um servidor web, por exemplo.
O inverso também pode ser feito, ou seja, copiar arquivos de um servidor remoto para seu PC. E, por outro lado, é também possível copiar arquivos entre dois locais remotos.
A sintaxe básica do scp
segue abaixo:
scp opcoes usuarioOrigem@IPOrigem:/caminhoOrigem/arquivoOrigem usuarioDestino@IPDestino:/caminhoDestino/arquivoDestino
Observe que o exemplo acima pede todos os dados (origem e destino, inclusive), pois trata-se, a princípio, do comando completo, ou seja, com todas as informações para cópias entre dois locais remotos.
Porém, tudo fica mais simples se, por exemplo, você estiver realizando cópias de uma máquina local para uma remota (ou vice-versa).
No caso de cópias de um computador local para um remoto, a sintaxe é a abaixo:
scp /caminhoOrigem/nomeDoArquivo usuarioDestino@IPDestino:/caminhoDestino/nomeDoArquivo
Ou seja, para copiar (apenas um exemplo prático) o arquivo “teclinux.tar.gz” de uma máquina local para um servidor remoto (com um hipotético IP 192.168.0.1), basta usar um comando semelhante ao abaixo:
scp teclinux.tar.gz [email protected]:/home/usuario/testesTecLinux/
Vale lembrar que, neste caso, como estamos realizando novamente o acesso a uma máquina remota, será necessário informar a senha de acesso do usuário utilizado.
Obs: neste caso (transferência da máquina local para uma máquina remota), obviamente, o procedimento deve ser feito no terminal/cliente SSH (também local, ao contrário dos comandos acima).
Veja agora a saída:
Frequentemente acontece, além disso, da máquina remota ser configurada para responder às conexões SSH em uma porta diferente da padrão (22).
Neste caso, basta adicionar o argumento -p
seguido da porta correta. Por exemplo: scp -p 2222
(para realizar a conexão através da porta 2222). E assim por diante.
Comando scp
– Servidor remoto para máquina local
Agora, observe que a sintaxe muda um pouco:
scp usuarioOrigem@IPOrigem:/caminhoOrigem/arquivoOrigem /caminhoDestino/arquivoDestino
Na verdade, as coisas foram meio que invertidas, aqui. Agora a origem é um servidor remoto, e o destino é nossa máquina local.
Observe, então, o comando para copiar o mesmo arquivo “teclinux.tar.gz”, do servidor remoto para a máquina local:
scp [email protected]:/home/usuario/testesTecLinux/teclinux.tar.gz /home/marcos_zy/Downloads
E abaixo segue a saída relacionada, para que você possa comparar:
Obs: para copiar diretórios inteiros (incluindo subdiretórios e pastas), basta usar o argumento -r
. Ou seja, você vai usar scp -r
. E isto vale em ambos os sentidos.
Bônus: como acessar um servidor remoto sem senha
Também é possível acessar um servidor remoto através de SSH sem usar uma senha. Para isto, você deve seguir os procedimentos abaixo.
Como criar chaves SSH
Em primeiro lugar, na máquina local, você deve usar o comando abaixo para criar uma chave pública e uma chave privada:
ssh-keygen -t rsa
Será solicitado que você digite uma passphrase e um local para a geração dos arquivos. Porém, você pode apenas teclar ENTER com estes campos em branco, para facilitar ainda mais e usar valores padrão.
Uma saída semelhante à abaixo será então exibida:
Copiar chave pública para o servidor remoto
A seguir, você deve copiar a chave pública gerada (veja acima) para o servidor remoto. O comando necessário possui a seguinte sintaxe:
ssh-copy-id usuario@IPDoServidor
Ou seja, de acordo com os dados que estamos usando nos testes (veja acima), use um comando semelhante ao abaixo (claro, o IP abaixo é “fictício” – trata-se de um IP privado):
sh-copy-id [email protected]
Obs: após o comando acima, você deverá digitar sua senha de acesso.
Em seguida, uma saída semelhante à abaixo será exibida:
Como fazer login no servidor remoto com chaves SSH
Agora, se você executou os procedimentos acima, já é possível fazer login no servidor remoto sem senha, ou seja, usando as chaves geradas.
Portanto, use um comando com a seguinte sintaxe:
ssh usuario@IPDoServidor
Ou seja, de acordo com nossos testes, você deve usar um comando similar ao abaixo, fazendo as devidas alterações de acordo com seus dados:
ssh [email protected]
Saindo de um servidor remoto
Para sair da conexão atual com o servidor remoto, ou seja, para encerrar a sessão SSH, basta usar o comando exit
. Dessa forma, você retorna para a máquina local.
Conclusão
E assim chegamos ao final de mais um guia completo no blog TecLinux. Desta vez você aprendeu diversos comandos SSH essenciais para acesso a servidores Linux remotos.
Obviamente, este guia não conta com todos os comandos existentes, até mesmo porque isto seria praticamente impossível, dado o grande número de comandos, opções, flags, etc.
Porém, acredito que este artigo deva pelo menos fornecer um norte a você, bem como servir como referência em sua rotina diária.
Gostou do conteúdo? Deixe um comentário, e compartilhe com seus amigos!
0 comentários