O poder do SSH
Neste artigo pretendo mostrar o quanto o SSH pode ser útil e o quanto podemos produzir com os recursos que ele oferece, que vão desde um backup automático até a execução de um simples comando e a criação de uma chave pública para acesso sem senha. Há também exemplos com código-fonte de scripts que fazem a mesma tarefa, mas de modo automático.
Parte 2: Login automático por ssh (sem senha)
Aqui está outra aplicação útil para o comando ssh. Criar chaves públicas para logar sem senha, diminuindo consideravelmente o tempo gasto no trânsito de um usuário entre vários servidores.
É fácil e rápido configurar o acesso sem senha por ssh entre dois computadores. Veja como:
1. No computador cliente, digite o seguinte comando:
# ssh-keygen -b 1024 -t rsa
Esse comando cria uma chave de 1024 bits e usando o algoritmo rsa. Após executar esta linha de comando deverá aparecer outra na sua tela, conforme o exemplo abaixo:
Enter file in which to save the key (/root/.ssh/id_rsa):
Ele está pedindo o nome de um arquivo para criar a chave. Pressione apenas ENTER, aceitando a sugestão da tela.
Aparecerá a linha abaixo. Esta linha está pedindo uma "frase-senha", mas como o que queremos é criar um acesso direto sem senha, pressione apenas ENTER.
Enter passphrase (empty for no passphrase):
Após isso aparecerá a linha abaixo, solicitando uma confirmação da frase-senha anterior. Pressione ENTER novamente.
Enter same passphrase again:
Se tudo foi feito corretamente, apareceu a o texto abaixo, confirmando a criação da chave pública. Esta chave é um arquivo está no seu computador.
The key fingerprint is:
c5:62:55:5e:97:a7:64:aa:b7:79:82:06:89:1d:c2:0c root@branco.localdomain
Para que o servidor possa autorizar conexões por ssh sem senha deste computador você precisa enviar o arquivo /root/.ssh/id_rsa.pub para ele (servidor) e colocá-lo dentro da pasta /root/.ssh. Depois deve renomear o arquivo para authorized_keys. Se quiser use o comando abaixo que já faz tudo de forma automática (envia e renomeia):
# scp /root/.ssh/id_rsa.pub 200.251.75.114:/root/.ssh/authorized_keys
Pronto! Agora tente acessar o servidor ssh e ele não pedirá mais a senha.
Os passos a repetir, caso tenha dado algo errado, são:
Se desejar, pode copiar as linhas abaixo para criar um script que faz isso sozinho também.
É fácil e rápido configurar o acesso sem senha por ssh entre dois computadores. Veja como:
1. No computador cliente, digite o seguinte comando:
# ssh-keygen -b 1024 -t rsa
Esse comando cria uma chave de 1024 bits e usando o algoritmo rsa. Após executar esta linha de comando deverá aparecer outra na sua tela, conforme o exemplo abaixo:
Enter file in which to save the key (/root/.ssh/id_rsa):
Ele está pedindo o nome de um arquivo para criar a chave. Pressione apenas ENTER, aceitando a sugestão da tela.
Aparecerá a linha abaixo. Esta linha está pedindo uma "frase-senha", mas como o que queremos é criar um acesso direto sem senha, pressione apenas ENTER.
Enter passphrase (empty for no passphrase):
Após isso aparecerá a linha abaixo, solicitando uma confirmação da frase-senha anterior. Pressione ENTER novamente.
Enter same passphrase again:
Se tudo foi feito corretamente, apareceu a o texto abaixo, confirmando a criação da chave pública. Esta chave é um arquivo está no seu computador.
The key fingerprint is:
c5:62:55:5e:97:a7:64:aa:b7:79:82:06:89:1d:c2:0c root@branco.localdomain
Para que o servidor possa autorizar conexões por ssh sem senha deste computador você precisa enviar o arquivo /root/.ssh/id_rsa.pub para ele (servidor) e colocá-lo dentro da pasta /root/.ssh. Depois deve renomear o arquivo para authorized_keys. Se quiser use o comando abaixo que já faz tudo de forma automática (envia e renomeia):
# scp /root/.ssh/id_rsa.pub 200.251.75.114:/root/.ssh/authorized_keys
Pronto! Agora tente acessar o servidor ssh e ele não pedirá mais a senha.
Os passos a repetir, caso tenha dado algo errado, são:
- Criar uma chave pública (ela ficará no seu computador em /root/.ssh/id_rsa.pub)
- Enviar esta chave (ou este arquivo. Como achar melhor) para o servidor de ssh.
- Renomear o arquivo de id_rsa.pub para authorized_keys.
Se desejar, pode copiar as linhas abaixo para criar um script que faz isso sozinho também.
#!/bin/sh
clear
porta=$2
host=$1
if [ "$porta" == "" -o "$host" == "" ]; then
echo
echo
echo "Especifique o host de destino e a porta, digitando da seguinte forma:
./nome_do_script [host] [porta]"
echo
else
ssh-keygen -b 1024 -t rsa -P "" -l -f $HOME/.ssh/id_rsa &&
echo "Digite a senha para enviar a chave de acesso para $host:"
scp -P $porta $HOME/.ssh/id_rsa.pub $host:$HOME/.ssh/authorized_keys &&
if [ "$?" == "0" ]; then
echo
echo "##############################################"
echo "############# OPERAÇÃO CONCLUÍDA #############"
echo "##############################################"
echo "A chave foi enviada com sucesso para o host $host.
Para remover o acesso automático, exclua o arquivo /root/.ssh/authorized_keys no host $host,
ou apague apenas a linha que se refere a este computador."
fi
fi
clear
porta=$2
host=$1
if [ "$porta" == "" -o "$host" == "" ]; then
echo
echo
echo "Especifique o host de destino e a porta, digitando da seguinte forma:
./nome_do_script [host] [porta]"
echo
else
ssh-keygen -b 1024 -t rsa -P "" -l -f $HOME/.ssh/id_rsa &&
echo "Digite a senha para enviar a chave de acesso para $host:"
scp -P $porta $HOME/.ssh/id_rsa.pub $host:$HOME/.ssh/authorized_keys &&
if [ "$?" == "0" ]; then
echo
echo "##############################################"
echo "############# OPERAÇÃO CONCLUÍDA #############"
echo "##############################################"
echo "A chave foi enviada com sucesso para o host $host.
Para remover o acesso automático, exclua o arquivo /root/.ssh/authorized_keys no host $host,
ou apague apenas a linha que se refere a este computador."
fi
fi
IMPORTANTE: Para executar o script corretamente, use o comando abaixo sem alterar a ordem dos objetos:
./nome_do_script ip_servidor _porta_ssh_servidor
Ou seja:
# ./script 200.223.75.223 22