Você está na página 1de 12

nstalando o SSH no Ubuntu

Você pode instalar o openSSH no Ubuntu, Linux Mint, Debian e


derivados. Portanto, os comandos e os procedimentos são os mesmos. Se você não está
familiarizado com o SSH é importante lembrar que as configurações são realizadas pelo
Terminal. Então, o primeiro passo é a instalação, para instalar abra o Terminal, você
pode usar o atalho Ctrl + Alt + T e cole os comandos abaixo:

sudo apt-get install openssh-server

Agora, vamos ativar o serviço. Lembre-se que nestes comandos estamos usando o
sudo. No entanto, em distribuições baseadas puramente no Debian, o sudo não vem
habilitado. Assim, você pode realizar a instalação do SSH usando o ROOT ou se
preferir, pode seguir o nosso tutorial que mostra como instalar e habilitar o sudo no
Debian. Mais uma vez, para ativar o SSH execute o comando abaixo:

sudo service ssh status

Configurações do SSH
Por padrão você já está com o serviço do SSH ativo, mas se por algum motivo você
queira alterar as configurações padrão, é possível sim. Porém, saiba o que está fazendo.
Para alterar as configurações do SSH execute o comando abaixo, utilizando o editor de
sua preferência:

sudo nano /etc/ssh/sshd_config

E após fazer as alterações é necessário reiniciar o serviço para que as alterações entrem
em vigor. Para isso, execute o comando abaixo:

sudo service ssh restart

Acessando via SSH o Ubuntu, Debian Linux Mint e


derivados
Agora que já passamos pelo o processo de instalação do SSH no Ubuntu, Debian e
derivados, vamos promover o acesso remoto.

A sintaxe do SSH é muito simples, confira:

ssh usuario@ip-alvo

Perceba que você precisa inserir o nome do usuário e o IP remoto, ou seja, da máquina
que você quer acessar. É importante ter o SSH instalado e ativado na outra máquina, ou
não vai funcionar. Por padrão a porta do SSH é a 22, mas algumas pessoas alteram a
porta e neste caso é preciso informar a porta correta ou não vai funcionar.

A sintaxe do SSH informando a porta destino é:


ssh usuario@ip-alvo -p numerodaporta

Pronto! Hoje você viu como instalar e ativar o SSH no Ubuntu, Linux Mint, Debian e
derivados, e ao mesmo tempo também viu como acessar a máquina remotamente via
SSH. Esperamos ter ajudado.
ACESSO REMOTO A MÁQUINAS LINUX, VIA INTERNET
Colaboração: Cesar Brod e Joice Käfer
Data de Publicação: 04 de Julho de 2009
Este não é um assunto tão novo assim, mas ao procurar dicas de como
acessar, de forma segura e fácil, o desktop de um PC remoto a uma
máquina local, vimos que são muitos pequenos fatores a serem
considerados e que não havia um "passo-a-passo" de como fazer isto,
testando todos os componentes da conexão. Por isso, acreditamos existir
espaço para este pequeno tutorial.

INTRODUÇÃO
Aqui na BrodTec, em vários momentos, necessitamos acessar remotamente
máquinas de clientes ou nossas próprias máquinas da empresa a partir de
nossos notebooks, seja para alguma atividade de suporte, teste de alguma
ferramenta ou mesmo para o acesso rápido a uma aplicação que não temos
instalada localmente. Na maioria das vezes, o simples acesso via ssh é o
suficiente, em outras o ideal é ter acesso completo ao desktop da máquina
cliente. Este tutorial, baseado na distribuição Linux Mint (o que significa que
provavelmente servirá para o Debian e todas as suas variantes, como o
Ubuntu), cobre todos os passos necessários para o acesso completo, de
forma segura, a uma máquina remota. Como os passos aqui cobertos vão
desde testes na própria máquina local, em máquinas da mesma rede local e,
enfim, em máquinas conectadas via Internet, este documento deve servir
como base e referência tanto para usuários menos experientes quanto aos
mais avançados, já que os links aqui apontarão para textos mais complexos
e de maior profundidade técnica.

O AMBIENTE DE TESTES

Figura 1: Ambiente de testes

Este é o ambiente que utilizamos para os testes aqui descritos. Na BrodTec,


temos os notebooks do Cesar e da Joice, conectados através de um
roteador wireless que, por sua vez, está conectado a um cable modem
fornecido pela Net, que nos conecta à Internet. Um de nossos clientes,
usado como exemplo, está conectado a um modem de rádio fornecido pela
empresa ArroioNet. Claro que, independente do provedor de acesso à
Internet, tudo o que está descrito aqui deve funcionar. Todas as máquinas
obtém seu endereço através de DHCP, ou seja, em nenhum momento
temos como ter certeza de qual endereço está sendo utilizado por uma
delas.

TESTES NA MÁQUINA LOCAL


É comum que, ao diagnosticar um problema, não nos demos conta de todos
os fatores que o compõem. Por isso é sempre bom dar uma respirada no
óbvio e começar pelo princípio. Antes de nos aventurarmos a conectar com
uma máquina distante, temos que ter certeza de que tudo funciona bem
localmente. A filosofia Unix (que o Linux adotou plenamente) nos ensina a
montar coisas maiores a partir de coisas muito simples. Uma coisa muito
fácil é justamente esquecer o que é óbvio, justamente porque ele está ali e
sempre funciona. Aqui, apenas iremos assumir que os computadores
existem, têm seu sistema operacional operante e que exista uma conexão
com a Internet. Algumas outras coisas iremos testar, mesmo parecendo
óbvias. Para isto, vamos precisar de um terminal, uma console Linux. Isto
você sabe como acessar, certo?
Para começar, digite em seu terminal:
ping localhost

Como resposta, você deve ter algo parecido com:


brod@brod-laptop:~$ ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64
time=0.038 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64
time=0.040 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64
time=0.042 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64
time=0.041 ms
64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64
time=0.041 ms
^C
--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.038/0.040/0.042/0.005 ms
brod@brod-laptop:~$

Para interromper o ping pressione simultaneamente as teclas Ctrl e C.


A grosso modo, o ping serve para testar a conexão entre máquinas em rede.
O comando ping localhost faz com que verifiquemos que nossa máquina
seja capaz de comunicar-se com ela mesma, o que já é um bom caminho
andado. Caso você queira aprofundar-se mais sobre o ping e protocolos de
rede, recomendamos a leitura do livro Redes sem Fio no Mundo em
Desenvolvimento.
Agora, vamos ver se você consegue estabelecer uma conexão segura com
a sua própria máquina com o ssh.
ssh usuario@localhost

Substitua "usuario" pelo seu próprio nome de usuário em seu sistema. Caso
sua instalação seja nova, é bem provável que você não tenha um servidor
ssh instalado. Use o Gerenciador de Pacotes e instale o pacote openssh-
server. Existindo algum outro pacote pendente, o próprio gerenciador irá
instalá-lo para você. Caso você não tenha experiência com a instalação de
software, um bom guia pode ser encontrado aqui: Como Instalar Tudo em
Ubuntu.
Uma vez concluída a instalação, você deve conseguir acessar a sua própria
máquina. As cópias de tela abaixo ilustram o nosso exemplo. Troque o
nome de usuário "brod" pelo seu próprio nome.
brod@brod-laptop:~$ ssh brod@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be
established.
RSA key fingerprint is
a5:2b:93:3c:1d:0c:5f:c9:2e:2d:3e:7e:39:19:df:fc.
Are you sure you want to continue connecting (yes/no)?

Como esta é a primeira vez que estamos conectando, a autenticidade de


nosso servidor ainda não foi estabelecida. Como temos certeza de que
apenas estamos nos conectando com nossa própria máquina, vamos
responder "yes". O sistema solicitará a sua senha de usuário e pronto! Você
acaba de estabelecer uma conexão segura e remota com sua própria
máquina local! Nada de muito especial, mas um passo importante a ser
testado no futuro caso algo não dê certo.
Mas não queremos parar por aí. O que queremos realmente testar é abrir
um desktop remoto. Para isto, vamos ver se conseguimos fazê-lo, também,
em nossa máquina local. Para isto precisaremos de mais dois pacotes:
tightvncserver e xtightvncviewer. Localize-os e instale-os usando seu
gerenciador de pacotes. Estes pacotes são implementações de um servidor
e cliente, respectivamente, do VNC, Virtual Network Computing. Informações
completas sobre isto, com mais links para outras referências, podem ser
encontradas neste link.
Uma vez instalados, vamos, novamente, testá-los.
vncserver :64 -geometry 800x600 -depth 16 -name TESTE

No comando acima, TESTE será o nome de seu servidor, geometry é sua


resolução e depth a profundidade de cores. Depois que funcionar, você
poderá testar com outros parâmetros. Os comandos vncserver --help e man
vncserver darão mais informações sobre estes parâmetros.
Como resultado do comando, você terá o seguinte:
You will require a password to access your desktops.

Password: ********
Verify: ********
Would you like to enter a view-only password (y/n)? y
Password: ********
Verify: ********

New 'TEST' desktop is test:64

Starting applications specified in /home/brod/.vnc/xstartup


Log file is /home/brod/.vnc/rat:64.log

A primeira senha solicitada é para o acesso completo a seu desktop. A


segunda é para o caso de ser necessária apenas a visualização do terminal
remoto.
Agora você já deve conseguir abrir um desktop remoto em sua própria
máquina local, mas para isto, deve permitir que aplicações remotas acessem
seu próprio desktop, com o seguinte comando:
brod@brod-laptop:~$ xhost +
access control disabled, clients can connect from any host

Agora, execute o seguinte:


brod@brod-laptop:~$ vncviewer -via localhost localhost:64
brod@localhost's password: [Nota: esta é a sua senha de
usuário]
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
Performing standard VNC authentication
Password: [Esta é a senha de visualização completa que você
definiu no passo anterior]
Authentication successful
Desktop name "brod's TESTE desktop (brod-laptop:64)"
VNC server default format:
16 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 31 green 63 blue 31, shift red 11 green 5
blue 0
Using default colormap which is TrueColor. Pixel format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green
8 blue 0
Using shared memory PutImage
Tunneling active: preferring tight encoding

Neste momento, você deve ter uma janela com um novo desktop em sua
máquina local. Em nossa máquina, ele aparece da seguinte forma:

Clique para ver a imagem ampliada

TESTES NA REDE LOCAL


Você tem agora tudo preparado para que seu desktop possa ser acessado
de qualquer outra máquina na sua rede. Em nossa rede, temos a máquina
do Cesar e da Joice. Para descobrirmos os endereços delas usamos o
comando ifconfig.
brod@brod-laptop:~$ ifconfig
eth0 Link encap:Ethernet Endereço de HW 00:13:a9:85:7a:e3
UP BROADCAST MULTICAST MTU:1500 Métrica:1
pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:4 erros:0 descartados:0 excesso:0
portadora:0
colisões:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:1368 (1.3 KB)

lo Link encap:Loopback Local


inet end.: 127.0.0.1 Masc:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Métrica:1
pacotes RX:12505 erros:0 descartados:0 excesso:0
quadro:0
Pacotes TX:12505 erros:0 descartados:0 excesso:0
portadora:0
colisões:0 txqueuelen:0
RX bytes:2031155 (2.0 MB) TX bytes:2031155 (2.0 MB)

wlan0 Link encap:Ethernet Endereço de HW 00:19:d2:37:8e:2e


inet end.: 192.168.1.100 Bcast:192.168.1.255
Masc:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:22240 erros:0 descartados:0 excesso:0
quadro:0
Pacotes TX:21538 erros:0 descartados:0 excesso:0
portadora:0
colisões:0 txqueuelen:1000
RX bytes:19019076 (19.0 MB) TX bytes:4151766 (4.1 MB)

Note que a interface utilizada é a wlan0, com o endereço 192.168.1.100. O


mesmo comando na máquina da Joice mostra que ela usa a interface ath0
com o endereço 192.168.1.103. Em nosso teste, vamos acessar o desktop
Cesar a partir da máquina Joice. Primeiro testamos a conexão:
brod@brod-laptop:~$ ping 192.168.1.100
PING 192.168.1.100 (192.168.1.103) 56(84) bytes of data.
64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0.042 ms
64 bytes from 192.168.1.100: icmp_seq=3 ttl=64 time=0.043 ms
64 bytes from 192.168.1.100: icmp_seq=4 ttl=64 time=0.044 ms
64 bytes from 192.168.1.100: icmp_seq=5 ttl=64 time=0.043 ms
^C
--- 192.168.1.100 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.038/0.042/0.044/0.002 ms

Funcionou, então vemos se a Joice consegue acessar a máquina do Cesar


com ssh:
ssh brod@192.168.1.100

Obviamente, ela precisará conectar-se com um usuário e senha conhecidas


na máquina remota.
Caso a máquina da Joice não necessite ser um servidor VNC, ela pode
simplesmente instalar o pacote xtightvncviewer, como descrito
anteriormente.
A seguir, ela executa os comandos abaixo:
xhost +
vncviewer -via 192.168.1.100 localhost:64

192.168.1.100, como você já viu, é o endereço da máquina do Cesar.


Pronto! Joice agora tem em sua máquina o desktop da máquina do Cesar.
Novamente, observe que a Joice deve ter um usuário na máquina do Cesar
e que ela deve conhecer tanto sua própria senha quanto a do VNC.

CONECTANDO-SE A UMA MÁQUINA REMOTA NA INTERNET


A situação mais comum que enfrentamos é a de termos que nos conectar a
uma máquina de um cliente, utilizando seu próprio desktop. Para isto, o
cliente deverá ter instalado em sua máquina o openssh-server e o
tightvncserver. Certifique-se de que todos os procedimentos descritos em
Testes na máquina local funcionam do lado do cliente antes de testar o
acesso remoto. Caso seja possível conectar sua máquina à rede do cliente,
faça também todos os procedimentos descritos em Testes na rede local.
Agora, tanto nossas máquinas como a máquina do cliente possuem
endereços internos de rede, invisíveis para a Internet. E mesmo os
endereços que recebemos dos provedores para o acesso são fornecidos
dinamicamente. Como, então, obter os endereços necessários para as
conexões? A melhor saída que encontramos para isto é o hamachi. Só que
agora o gerenciador de pacotes não irá ajudar. Você precisará baixar o
pacote deste endereço, selecionando a plataforma Linux. Note que é
possível instalá-lo também em outras plataformas, mas estas não foram
testadas por nós. Caso você nunca tenha feito uma instalação "na mão" no
Linux, é bom seguir os próximos passos com a ajuda de alguém mais
experiente. Mas, mesmo assim, ela é bastante simples:

1. Baixe o pacote, anotando a pasta onde foi feito o download;


2. Torne-se superusuário com o comando sudo su;
3. Vá para o diretório /usr/local/src, descompacte o hamachi e vá para a pasta do
hamachi

4. cd /usr/local/src
5. tar -xzvf /pasta-de-download/hamachi-(versão)-lnx.tar.gz
6. cd /usr/local/src/hamachi-(versão)-lnx/

7. Execute os seguintes comandos:

8. make install
9. tuncfg

10. Saia do modo superusuário (tecle Ctrl+D) e execute os seguintes comandos:


11. hamachi-init
12. hamachi start
13. hamachi login

14. Crie uma rede para o seu ambiente. Você pode criar uma rede para cada
ambiente, ou uma rede que será usada por toda a sua empresa, bastando
repetir o comando a seguir:

15. hamachi create nome-da-rede senha

16. Conecte-se à rede:


17. hamachi join nome-da-rede

Use a senha escolhida no item 6.

18. Entre "online" na rede à qual se uniu para que possa ser visto por outros
usuários:
19. hamachi go-online nome-da-rede

20. Verifique os endereços conectados:


21. hamachi list
22. * [nome-da-rede]
23. 5.106.100.166
24. 5.108.231.0
25. 5.141.10.218
26. 5.142.23.45
27. * 5.143.252.66
189.7.202.2:39375

28. Verifique a interface criada:

29. ifconfig
30.
31. ham0 Link encap:Ethernet Endereço de HW
f2:0b:73:13:15:46
32. inet end.: 5.143.245.83
Bcast:5.255.255.255 Masc:255.0.0.0
33. UP BROADCAST RUNNING MULTICAST MTU:1200
Métrica:1
34. pacotes RX:35 erros:0 descartados:0
excesso:0 quadro:0
35. Pacotes TX:56 erros:0 descartados:0
excesso:0 portadora:0
36. colisões:0 txqueuelen:500
37. RX bytes:7030 (7.0 KB) TX bytes:8901 (8.9
KB)

Obviamente, para poder conectar sua máquina à máquina do cliente, você


também deve ter o hamachi instalado. Para isto, repita os passos 1 a 5, salte o
passo 6, pois a rede já está criada. E siga os demais passos para saber o
endereço de sua própria máquina no hamachi. Em nosso exemplo, a máquina
do cliente tem o endereço 5.143.245.83 e a máquina que usaremos no
escritório tem o endereço 5.143.252.66. Como nos casos anteriores, teste as
conexões com o comando ping e tente abrir uma sessão ssh remota usando o
endereço do cliente (ssh cliente@5.143.245.83). Tudo isto funcionando, basta
testar a abertura de um desktop remoto.

vncviewer -via 5.143.245.83 localhost:64

Você deverá fornecer duas senhas. A primeira, é a de seu usuário na máquina


remota (que deve ter sido previamente criado) e a segunda é a que você
forneceu no passo 6. Feito isto, um desktop da máquina do cliente será aberto
na máquina local.

CONCLUSÃO
O hamachi efetivamente estabelece, via Internet, uma conexão ssh entre
duas máquinas. Assim, efetivamente, todos os serviços possíveis por ssh
podem ser utilizados com o hamachi, como o acesso remoto a arquivos via
scp. O serviço roda sob criptografia, ou seja, nenhum dado irá trafegar às
claras na Internet. Mesmo assim, tenha cuidado com a escolha de senhas e
mesmo de nomes de redes. Evite divulgá-las além de um grupo restrito de
usuários.
Para acessar com facilidade a máquina remota, o melhor é que você já
deixe os serviços preparados. Especialmente o tuncfg tem que ser
executado no modo superusuário (aliás, na maior parte das vezes em que o
comando hamachi start não rodar é porque o tuncfg não foi executado). Por
isso, é conveniente colocá-lo em alguns de seus scripts de inicialização do
Linux. Um bom exemplo de como isto pode ser feito pode ser encontrado
neste artigo.
Os demais comandos podem ser reunidos em um script para o qual você
pode criar um ícone na tela do computador de seu cliente para que ele
habilite os serviços de acesso remoto apenas quando eles forem
necessários.
Em nosso caso, simplesmente adicionamos a seguinte linha ao arquivo
/etc/init.d/ssh (poderíamos ter criado um outro arquivo executável para isto,
mas como basicamente só precisamos do tuncfg para as conexões hamachi
com ssh, optamos por fazer isto neste arquivo mesmo):
### Set tuncfg to be used by hamachi
tuncfg
###

No diretório do próprio usuário da máquina a ser acessada remotamente,


criamos o seguinte script, chamado vnchamachi, que contém as seguintes
linhas:
#!/bin/bash
# Primeiro remove a configuração atual, por via das dúvidas
rm -Rf /home/usuario/.hamachi
# Agora inicializa o hamachi
hamachi-init
hamachi start
hamachi login
hamachi join nome-da-rede senha-da-rede
hamachi go-online nome-da-rede
# Agora inicializa o VNC Server
vncserver :64 -geometry 800x600 -depth 16 -name TESTE

Cesar Brod e Joice Käfer são sócios da BrodTec, nerds, pupilos do professor Pimenta e, ao
menos uma vez por semana, fazem experiências culinárias.

Você também pode gostar