Publicado em Sun 09 August 2015
Modificado em Fri 11 September 2015
Por Rafael Laboissière
Na seção Dica .
Como já foi
divulgado
por aqui, o controle do acesso às Vms do CEFALA está centralizado no
servidor LDAP, que se encontra instalado na VM nfs. A senha de login de
cada usuário é única para todas as VMs e está armazenada na base LDAP.
Existem duas maneiras de modificar a senha:
Faça um login em nfs.cefala.org
e use o comando passwd
. Note que é
possível rodar o comando passwd
nas outras VMs, mas a modificação não
é propagada à base LDAP e, na verdade, não serve para nada.
Visite a interface phpLDAPadmin da VM nfs na URL
https://nfs.cefala.org/phpldapadmin/
. Clique en login
na barra da
esquerda e preencha o campo Login DN
com cn=Rafael
Laboissière,dc=cefala,dc=org
(usando o seu nome ao invés do meu) e o
campo Password
com a sua senha LDAP.
Obviamente, estes dois métodos só funcionam se você já possuir uma senha
válida na base LDAP e se você se lembrar dela. Caso contrário, você terá
que pedir ajuda a um dos administradores da base LDAP (Arlindo e este seu
humilde servidor, no momento).
O login por SSH às VMs utiliza, por default, a autenticação Unix clássica
usando a senha LDAP. Entretanto, a maneira mais prática e mais segura de
se autentificar nas VMs do CEFALA é através de pares de chave SSH. Ela é
segura porque evita o envio de senhas através da Internet. Ok, ok, eu sei
que as conexões via SSH são encriptadas, mas deixem-me cultivar a minha
paranoia de segurança. Além disto, a conexão por par de chaves SSH
introduz um obstáculo a mais aos piratas da Net pois, além da senha, elas
terão que se apoderar também da chave privada que, normalmente, nunca sai
do seu notebook ou computador pessoal.
Quando ao aspecto da praticidade, o uso de pares de chave SSH permite
conexões transparentes sem a necessidade de fornecimento da senha a cada
transação (scp
, git pull
/push
, etc.).
A coisa funciona da seguinte maneira. Inicialmente, crie um par de chaves
no seu sistema pessoal, usando o comando ssh-keygen
. Este comando
proporá a criação da chave privada em ~/.ssh/id_rsa
. Você poderá mudar
este nome, o que te permite criar tantos pares de chaves quanto você
quiser. Eis um exemplo de criação de pares de chave:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key ( /home/rafael/.ssh/id_rsa) : /home/rafael/.ssh/id_rsa.cefala
Enter passphrase ( empty for no passphrase) :
Enter same passphrase again:
Your identification has been saved in /home/rafael/.ssh/id_rsa.cefala.
Your public key has been saved in /home/rafael/.ssh/id_rsa.cefala.pub.
The key fingerprint is:
b4:37:bd:e8:e8:64:f2:4c:0a:1b:59:09:d0:ef:af:04 rafael@edge
The key' s randomart image is:
+---[ RSA 2048 ] ----+
| .. |
| .. |
| .. . |
| ..o . . |
| E.o S o . |
| +. . o . |
| + o.+ . . |
| = O.o |
| . oo = . |
+-----------------+
Note que, no exemplo acima, eu criei chaves com nomes
~/.ssh/id_rsa.cefala
(a chave privada) e ~/.ssh/id_rsa.cefala.pub
(a
chave pública). A primeira é preciosa e não deve nunca sair do seu sistema
pessoal. A segunda é feita para ser divulgada a Zeus e o mundo. Note,
também, que é possível criar a chave sem senha. Entretanto, se você fizer
isto, eu desço aí em Belo Horizonte para bater em você com vara de marmelo.
O próximo passo consiste na transferência da chave pública ao CEFALA, o que
é feito da seguinte forma:
ssh - copy - id - i ~/ . ssh / id_rsa . cefala . pub rlaboiss @xxx . cefala . org
substituindo rlaboiss
pelo seu nome de login e xxx
pelo nome de
qualquer uma das VMs do CEFALA (dev
, git
, nfs
, sci
ou www
). Este
comando simplesmente adiciona a sua chave pública como uma linha do arquivo
remoto ~/.ssh/authorized_keys
. Como a partição /home/
é compartilhada
por todas as VMs, basta rodar uma só vez o comando ssh-copy-id
acima.
Em seguida, para simplificar as coisas e evitar o uso da opção -i
a cada
comando ssh
, coloque o seguinte no arquivo .ssh/config
do seu
computador pessoal:
Host *.cefala.org
User rlaboiss
IdentityFile ~/.ssh/id_rsa.cefala
Lembre-se de usar o seu nome de login no lugar de rlaboiss
.
Se você estiver usando um desktop moderno, como o GNOME3, por exemplo, que
roda sob ssh-agent
, você só precisará fornecer uma única vez a senha do
seu par de chaves SSH, aquele que você usou no comando ssh-keygen
(e
espero que você tenha realmente usado uma senha, para o bem do seu lombo!).
A partir daí, todas as conexões SSH ou Git nas VMs do CEFALA serão feitas
sem necessidade de fornecimento da senha.
Update: No parágrafo acima, eu dou a entender que o ssh-agent
só pode
ser usado em sessões de desktop como o GNOME, por exemplo. Entretanto,
existe uma maneira muito simples de rodá-lo dentro de uma sessão de shell.
Neste caso basta fazer isto aqui:
$ eval $( ssh-agent)
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/rlaboiss/.ssh/id_rsa:
Identity added: /home/rlaboiss/.ssh/id_rsa (/home/rlaboiss/.ssh/id_rsa)
Você pode usar qualquer chave SSH como argumento do comando ssh-add
,
sendo o valor por default ~/.ssh/id_rsa
. Após a execução destes
comandos, as conexões via sss
/scp
não pedirão senha, contanto que a
chave pública (no exemplo acima .ssh/id_rsa.pub
) esteja estocada no
arquivo .ssh/authorized_keys
do servidor acessado. Vide explicação mais
acima neste post.