Atuando sobre o protocolo SSL, o Secure SHell permite logar-se em uma máquina e executar comandos, em uma versão segura do antigo telnet. Este artigo não ensinará a instalar o SSH, mas sim a usar alguns recursos especiais, particularmente o do login por desafio e resposta (que usa uma chave pública e privada). Porém não apenas usar, mas explicar como funciona nos bastidores.
O uso desta forma de autenticação é considerado mais seguro que com usuário e senha. Porém a maior vantagem, na minha opinião, é ser bem mais prático.
Prático porque você pode colocar senhas diferentes em seus servidores e logar-se neles apenas por desafio e resposta, decorando apenas a sua frase de passagem. Pode colocar sua chave pública em todas as máquinas Linux que você deseja acessar.
Mais prático também porque hoje muitos chaveiros permitem armazenar a frase de passagem, solicitando-a apenas uma única vez por sessão e fazendo realmente um login sem senha nas conexões posteriores. É o caso do Gnome (e não uso KDE para testar).
Muitas coisas fantásticas podem ser realizadas com esta técnica, algumas com bastante cuidado, evidente. Eu, por exemplo, em um curso de Linux, criei um par de chaves e o coloquei no /root/.ssh/authorized_keys de todas as máquinas dos alunos. Assim, a partir do meu notebook, eu podia executar remotamente qualquer comando nas máquinas e sem senha, pois usava o lembrete de senhas do Gnome.
Para desligar uma máquina, bastou um:
ssh root@10.2.3.4 "/sbin/shutdown -h now"
Isto dentro de um for, permite executar em todas as máquinas. Um exemplo mais interessante foi quando precisei que os alunos tivessem poderes de root as vezes, mas não sempre. Quando eu queria lhes dar esta permissão para todas as 20 máquinas, executava do meu notebook:
for IP in `cat ubuntu.txt`; do
ssh root@$IP "/usr/sbin/adduser aluno admin"
done
echo OK
E dentro do arquivo ubuntu.txt tinha os IPs dos clientes, um por linha (nota: no ubuntu o adduser pode ser usado para inserir um usuário já existente em um grupo). Se, depois, não quero mais que o usuário aluno tenha poderes de root, então:
for IP in `cat ubuntu.txt`; do
ssh root@$IP "/usr/sbin/deluser aluno admin"
done
echo OK
Isto porque no Ubuntu para poder usar o sudo basta estar no grupo admin (e no ubuntu o deluser pode ser usado para remover um usuário de um grupo. Nesta forma de uso, o usuário em si não é removido, apenas sai do grupo).
Se você gerencia dezenas de máquinas pode ser extremamente criativo e deixar os scripts trabalharem por você.
[8] Comentário enviado por rafaelalmeida em 02/09/2009 - 10:35h
Muito bom artigo!
Só uma dúvida, após logar com a minha frase, estarei no home ou com os privilégios de qual usuário? O usuário que eu estava logado quando criei a chave?
[9] Comentário enviado por ikichl em 23/09/2009 - 09:22h
Bom dia
estou com um grande problema aqui tenho um sistema em php que faz conexoes
automaticas atravez e chave de seguranca, instalada na maquina remota, porem cada
nova conexao ele pede a confirmacao antes e conectar a primeira vez:
Are you sure you want to continue connecting (yes/no)?
ja tentei diversos meio para auto aceitar a conexao, mas sempre sem sucesso
echo -e "yes" | ssh root@200.175.121.18
[12] Comentário enviado por elgio em 01/01/2010 - 20:38h
Henrique:
SIM, pode ser usado ssh-copy-id sim.
Mas observe que o ssh-copy-id não passa de um script SHELL :-O
E bem pequeno, alias. Bem simples de entender. Tirando a parte de testes se o usuário passou o que precisava e se a chave existe, etc, etc, a cópia é simplesmente isto:
[14] Comentário enviado por aline.abreu em 15/10/2010 - 14:38h
Elgio,
Gostei muito do seu artigo!
Só me confirma uma coisa: Pra cada máquina que eu usar, terei que ter um par de chaves ou posso usar a mesma para várias máquinas que eu uso?
[15] Comentário enviado por VagnerFonseca em 22/10/2010 - 10:50h
Aline,
Respondendo sua pergunta, você pode usar sim a mesma chave pública para logar em várias máquinas diferentes, assim basta que o usuário que você estiver utilizando naquele momento esteja com a chave privada no seu diretório .ssh.
[17] Comentário enviado por Thiago Andreotti em 26/12/2011 - 13:48h
O site Preciso Disso está contratando um web developer senior (back end) com forte conhecimento em PHP em cake e outros frameworks. Além de participar do desenvolvimento da versão 2.0 do site (em andamento) o desenvolvedor terá que criar aplicativos de busca, vídeos e notícias para redes sociais.O candidato deve ter perfil empreendedor e vontade de crescer e se tornar sócio de uma empresa startup.
Salário de R$ 4-5 mil + VR + VT + participação nos lucros + ações da empresa a partir do segundo ano.
Envie o seu CV para thiago@precisodisso.com.br
Para trabalhar na região de Moema em São Paulo
[21] Comentário enviado por marcelo_v em 09/02/2012 - 12:22h
Artigo perfeito, sempre as pessoas entendem melhor com alguns exemplos do cotidiano, para dps citar um exemplo pratico da apresentacao do assunto, e foi realmente isso q vc fez. Esta' de parabe'ns, continue assim!