De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Renato Rudnicki
Data de Publicação: 30 de janeiro de 2008
Este artigo tem o objetivo de explicar o funcionamento de como acessar 2 ou mais máquinas remotas de maneira segura. Espero que ajude ;D.
ssh
- Secure Shell - é um programa que tem como objetivo acessar máquinas
remotamente de maneira segura. O telnet e o OpenSsh a grosso modo tem o
mesmo objetivo: estabelecer uma conexão entre dois computadores, porém o
telnet é muito mais inseguro, pois a conexão do telnet não é criptografada,
ao contrário do OpenSsh. Neste artigo, estou utilizando o pacote OpenSsh,
pois é uma versão livre e atualizada. Este tutorial foi testado em um
Conectiva 10, porém deve funcionar nas outras distros também. Aqui estou
usando o gerenciador de pacotes rpm, que é especifico para Conectiva, Red
Hat, Fedora, etc. É um recurso muito fãcil de se utilizar,
não precisando quase nada de configuração ;-D
No momento da instalação do pacote openssh
em um servidor, o utilitário rpm
gera 2 chaves - chave pública e chave privada do host (1024 bits :D) - onde
essas chaves são armazenadas em um diretorio chamado /etc/ssh.
Os arquivos
que contém as chaves geradas pelo openssh
no momento da instalação são:
/etc/ssh/ssh_host_key /etc/ssh/ssh_host_key.pub /etc/ssh_host_dsa_key.pyb
Estas chaves serão utilizadas mais tarde para provar para o servidor a sua autenticidade para os clientes, pois ip não é uma autenticação confiável.
Um outro par de chaves (pública e privada) é gerado sempre que o serviço ssh
é inicializado ou a cada hora (intervalo de tempo configurável). Este outro
par de chaves é chamado chaves de Servidor, tem 768 bits, e não é gravado
em disco, ficando apenas na memória do servidor, ou seja, temos mais 1 par
de chaves: Primária do servidor e pública do servidor. Os passos para se
estabelecer uma conexão são:
Para que possa funcionar a conexão de OpenSsh, devem ser observados os seguintes detalhes:
openssh
openssh-clients
openssh-server
Existem outros pacotes opcionais que não foram incluidos na listagem, como os pacotes de documentação e desenvolvimento.
Caso você esteja utilizando um linux que utilize pacotes rpm, você pode usar o seguinte comando para baixar os pacotes: rpm -hiv openssh*
Quase toda configuração do servidor openssh
está baseada nos parâmetros
indicados no arquivo /etc/ssh/sshd_config.
Se você visualisar este arquivo,
poderá notar que a maioria das configurações podem ser preenchidas com Yes/No.
Protocol |
Especifica as versões do protocolo que serão aceitas pelo servidor. |
LoginGraceTime |
Define o tempo limite, em segundos, de inatividade para um login, onde terminado este tempo, a sessão é finalizada. |
KeyRegenerationInterval |
Define o tempo em segundo do tempo de duração das chaves do servidor. |
PermitRootLogin |
Especifica se o servidor irá aceitar logins do root. |
PasswordAuthentication |
Especifica se será utilizado autenticação de senha. |
PermitEmptyPasswords |
Especifica se o servidor ssh aceitará login de contas sem senha. |
Obs: em regras gerais não é necessário efetuar alterações nesse arquivo, pois sua configuração padrão deverá funcionar.
Após feito isso, é necessário inicializar o serviço correspondente para que os clientes possam se conectar:
$ sudo service sshd start
A princípio, para o openssh
funcionar, também não é necessário alterar nenhum
arquivo de configuração do cliente. Mas caso você queira se aprofundar mais,
você pode ler a manpage do ssh
, ssh
d.
Há varias maneiras de utilizar o openssh
. Algumas delas são:
ssh user@ip_maquina |
tenta efetuar uma conexão à máquina_remota (onde deverá estar rodadno o openssh server). o usuário deverá estar cadastrado na máquina remota. |
ssh -l user maquina_remota |
idem ao comando anterior. |
ssh maquina_remota |
tentar efetuar uma conexão a máquina remota como usuário da maquina local que disparou o comando. Deve ter sido mantido a configuração padrão) |
O comando scp substitui o comando cp e permite que os arquvios sejam transmitidos entre máquinas de maneira segura.Ex:
$ scp arquivo.txt user1@maquina1:/home/teste
O comando acima copia o arquivo de nome arquivo.txt que está na máquina local para o diretório /home/teste da maquina remota de nome máquina1.
$ scp user@maquina1:/home/teste/arquivo.txt
Copia o arquivo de nome arquivo.txt
do diretório /home/teste
que está na
máquina e nome máquina 1 para o diretório corrente na máquina local.
Obs1: Em ambos os casos poderia ser utilizado o endereço ip ao invés do nome da máquina remota.
Obs2: Em ambos os casos, será solicitada a senha do usuário user1
na
máquina remota.
Para que possa acessar a máquina remota sem solicitação de senha, será necessário configurar tanto o servidor, quanto o cliente.
/etc/ssh/sshd_config
) (a escolha por RSA ou DSA depende da versão do
seu ssh)
~/.ssh/authorized_keys
- RSA (ou DSA))
Assim que tiver a chave privada correta com você, quando executar um ssh
na máquina remota, sua senha não será solicitada. Neste exemplo, foi usado
chaves RSA versão 1, e os comandos abaixo se referem a ela.
$ ssh-keygen -t rsa1 -f ~/.ssh/id_rsa1
(tecle Enter para deixar a conexão sem senha). Este comando irá criar 2 arquivos:
~/.ssh/id_rsa1
(com chave privada) e ~/.ssh/id_rsa1.pub
(com chave publica)
Enviar ao servidor a chave pública, que está no arquivo id_rsa1.pub
Obs: Este exemplo funciona de Linux para Linux. Caso você queira utilizar
Linux para Windows, você pode utilizar o programa Putty
, ou pscp
,
psftp
, teraterm
.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários