Conexões SSH sem senha fácil e descomplicado
Utilizando chaves públicas e privadas é possível realizar conexões SSH sem o uso de senhas, é possível também a execução remota de comandos, o que facilita alguns processos de automatização. Vale lembrar que esta não é uma configuração totalmente segura, por isto devem ser adotadas medidas alternativas para melhorar a segurança.
Parte 3: Execução remota de comandos
Para executar os comandos remotamente basta executar o seguinte comando:
# ssh root@servidor '/etc/init.d/httpd restart'
Este é apenas um exemplo onde reiniciaria o servidor Web remotamente. Existem muitas possibilidades para a aplicação de execução de comandos remotos.
Uma das ferramentas "inclusas" é o Plink, que nada mais é que uma interface em linha de comando para as funcionalidades do PuTTY. Usando esta ferramenta e conexões SSH sem senha é possível executar comandos remotos dentro de scripts por exemplo.
O conceito de conexão SSH sem senha continua o mesmo, porém agora é preciso gerar uma chave pública/privada através do PuTTYgen, depois copiar a chave pública para o arquivo "authorized_keys" do servidor.
Nota: Existem formas diferentes de se realizar conexões sem senha usando o PuTTY, aqui mostro apenas uma delas. Para mais detalhes consulte a documentação (http://www.putty.nl/docs.html).
Vamos precisar de três arquivos do PuTTY encontrados neste endereço:
São eles:
Agora é preciso criar um par de chaves pública/privada, para isso execute o arquivo "puttygen.exe", depois clique no botão "Generate" e dê uma "brincadinha" com o mouse (essa é a parte que eu mais gosto! ;), pronto as chaves foram geradas. Para salvá-las, clique no botão "Save public key", escolha a pasta e dê um nome ao arquivo, faça o mesmo para a chave privada clicando no botão "Save private key" (manter a "passphrase" em branco).
A chave pública que deverá ser copiada para o servidor (em destaque na figura 1) está na janela principal do PuTTYgen no campo "Public key for pasting into OpenSSH authorized_keys file:", basta copiar este conteúdo e inserir dentro do arquivo "/root/.ssh/authorized_keys" (como nos exemplos anteriores) do servidor. Não entrarei em detalhes de como fazer esta cópia, pois existem muitas.
# ssh root@servidor '/etc/init.d/httpd restart'
Este é apenas um exemplo onde reiniciaria o servidor Web remotamente. Existem muitas possibilidades para a aplicação de execução de comandos remotos.
Execução remota de comandos usando PuTTY
No Windows a ferramenta de conexão SSH mais popular é o PuTTY. Ele disponibiliza diversas formas para conexões a consoles remotos como Telnet, Rlogin e SSH.Uma das ferramentas "inclusas" é o Plink, que nada mais é que uma interface em linha de comando para as funcionalidades do PuTTY. Usando esta ferramenta e conexões SSH sem senha é possível executar comandos remotos dentro de scripts por exemplo.
O conceito de conexão SSH sem senha continua o mesmo, porém agora é preciso gerar uma chave pública/privada através do PuTTYgen, depois copiar a chave pública para o arquivo "authorized_keys" do servidor.
Nota: Existem formas diferentes de se realizar conexões sem senha usando o PuTTY, aqui mostro apenas uma delas. Para mais detalhes consulte a documentação (http://www.putty.nl/docs.html).
Vamos precisar de três arquivos do PuTTY encontrados neste endereço:
São eles:
- putty.exe
- plink.exe
- puttygen.exe
Agora é preciso criar um par de chaves pública/privada, para isso execute o arquivo "puttygen.exe", depois clique no botão "Generate" e dê uma "brincadinha" com o mouse (essa é a parte que eu mais gosto! ;), pronto as chaves foram geradas. Para salvá-las, clique no botão "Save public key", escolha a pasta e dê um nome ao arquivo, faça o mesmo para a chave privada clicando no botão "Save private key" (manter a "passphrase" em branco).
A chave pública que deverá ser copiada para o servidor (em destaque na figura 1) está na janela principal do PuTTYgen no campo "Public key for pasting into OpenSSH authorized_keys file:", basta copiar este conteúdo e inserir dentro do arquivo "/root/.ssh/authorized_keys" (como nos exemplos anteriores) do servidor. Não entrarei em detalhes de como fazer esta cópia, pois existem muitas.
Para fazer a conexão SSH o Plink pode utilizar as informações de uma sessão previamente salva no PuTTY, é esta sessão que iremos criar.
Execute o PuTTY, coloque o endereço (IP ou nome) do servidor no campo "Host Name", selecione o protocolo "SSH", coloque um nome para a sessão (sem acento e sem espaços para facilitar) por exemplo "Servidor" e clique em "Save". Pronto, uma sessão chamada "Servidor" foi criada (Figura 2).

Figura 2
Selecione a sessão "Servidor" e clique em "Load", no menu da esquerda clique na opção "Data" e coloque o nome do usuário que será utilizado na conexão no campo "Auto-login username", por exemplo "root" (Figura 3).

Figura 3
Ainda no menu da esquerda, clique na opção "Auth" depois no botão "Browse" e localize e selecione o arquivo de chave privada que criamos anteriormente (Figura 4).

Figura 4
No menu da esquerda selecione a opção "Session", repare que estamos com a sessão "Servidor" ainda carregada, portanto as alterações realizadas anteriormente devem ser salvas nesta sessão, para isto clique em "Save".
Com a sessão "Servidor" selecionada, clique no botão "Open" para iniciar uma conexão, como (provavelmente) é a primeira conexão, o PuTTY irá perguntar se deseja registrar uma chave do servidor no cache do PuTTY (Figura 5), clique em "Sim", isto só acontece na primeira conexão.

Figura 5
Se tudo correu bem até aqui você terá conectado no servidor sem ter digitado nenhuma senha.
Para executar comandos remotamente utilize o Plink da seguinte forma:
plink Servidor "/etc/init.d/httpd restart"
Onde "Servidor" é o nome da sessão previamente configurada e "/etc/init.d/httpd restart" é o comando a ser executado no servidor.