Nada de contrasinais en Github

Se aínda non o sabes, dígocho eu: Github1 vai deixar de admitir contrasinais como método de autenticación para os teus repositorios (mira a súa entrada). Este cambio pretende fortificar a seguridade xeral da famosa plataforma de git2. Nesta entrada vou ensinarche como adaptarte ao cambio.
Un contrasinal para controlalos a todos
De acordo, vexo que Github vai impoñer o cambio pero… cal é o problema de ter un contrasinal en Github para todo tal e como estaba facendo ata agora?

Imaxe: Un repositorio en Github.
Facendo pull dun repo e entrando en Github
Ata agora, posiblemente estiveses entrando en Github co mesmo contrasinal que o que usabas para autenticarte na CLI para facer algún git pull
ou git push
. Ben, isto é un risco de seguridade, porque estás enviando o teu contrasinal cada vez que fas unha petición. Ademais, a maioría de nós configura o cliente de Git para gardar o teu contrasinal para que non teñas que reescribilo cada vez.
Porén, ter o mesmo contrasinal para todo e, posiblemente, almacenado en máis dun dispositivo non parece a mellor opción. Ademais, hai outro problema.
Activando un segundo factor de autenticación
Ter un segundo factor de autenticación en Github non era moi común ata agora. Porén, Github é o lugar onde gardas o teu código privado e público, e queres asegurarte de ter a máxima seguridade en canto ao acceso á túa conta. en realidade, isto é de gran importancia para a xente traballando nalgún código privado dunha empresa.
Porén, se usas o teu contrasinal para acceder os teus repositorios dende o CLI de git, como fas para usar o teu segundo factor? O tema é que non vas poder facelo. Unha vez adoptes o cambio que che vou explicar a continuación, vas poder activar un segundo factor de autenticación para a túa conta.

Imaxe: Chave de seguridade como un método de autenticación de segundo factor en Github.
SSH ao rescate
SSH (Secure Shell) é a utilidade de administración máis usada. Reemplazou a antiga utilidade telnet
xa que SSH proporciona unha comunicación segura e encriptada entre o cliente e o servidor. SSH úsase para conectarse a servidores remotos para a súa administración, e para outros servizos como sFTP (secure File Transfer Protocol).
Usando SSH con Git e Github
Entón… podo usar SSH con git
? Por suposto! En vez de usar HTTPS como posiblemente estás facendo, escribirás algo como:
git clone git@github.com:myusername/my-private-repo.git
Montalo é sinxelo. Só son tres pasos:
- Xerar un par de claves SSH
- Indicarlle a túa clave pública a Github
- Clonar ou cambiar a túa URL remota en
git
1. Xerar un par de claves SSH
O primeiro paso é un simple comando. Vas crear un par de claves e gardalo na túa máquina. A túa clave privada vaise usar para autenticarte en github, mentres que a clave pública vaise copiar a github (paso 2). Recomendo usar ed25519
. Aí vai un exemplo:
ssh-keygen -t ed25519 -C "githubtest"

Imaxe: Primeiro paso: xerar o teu par asimétrico de claves SSH.
2. Indicarlle a túa clave pública a Github
cat ~/.ssh/githubtest.pub
Despois disto, vai a Github (https://github.com) > Axustes > Claves SSH e GPG > Nova clave SSH. Agora, pega os contidos que copiaches do cat
previo e xa o tes!

Imaxe: Segundo paso: copia a túa clave pública a Github.
3. Clonar ou cambiar a túa URL remota en git
Agora, é o momento de probar que todo funciona. Podes clonar directamente calquera dos teus repositorios ou cambiar algún repositorio xa clonado para que funcione con SSH. O seguinte snippet permíteche comprobar que a nova autenticación está funcionando e facendo que un repositorio pase a usar SSH:
ssh -T git@github.com
cd your/existing/repo/directory
git remote set-url origin git@github.com:username/repo.git
git fetch origin master
Unha alternativa: usar tokens
Se non queres investir tempo en xerar claves SSH, tamén podes xerar tokens de acceso. Vai a Github (https://github.com) > Axustes > Axustes de Desenvolvedor > Tokens de acceso persoais. Agora, podes usala como o farías cun contrasinal normal.
- Beneficios: Restrinxir acceso a algúns repositorios e usar autenticación Basic con HTTPS diferente ao teu contrasinal da conta.
- Contras: Non é asimétrico.

Imaxe: Xera un token de acceso Github para os teus repositorios.
Extra: algúns consellos útiles para SSH
Agora que usas git con SSH, vouche ensinar un par de cousas guais sobre SSH.
1. Non volvas escribir o contrasinal de cada vez
As claves privadas SSH están (deberían estalo) cifradas cun contrasinal. Por iso, cada vez que queres usalas, pregúntache por un contrasinal. Como podes evitar rescribir o teu contrasinal unha e outra vez? Con ssh-agent
.
Un Axente SSH mantén as túas claves SSH privadas descifradas en memoria para que poidas usalas sen preguntarche polo contrasinal de cada vez. Úsao así:
ssh-add ~/.ssh/githubtest
ssh-add -l
2. Usa a túa clave SSH local nun servidor remoto
SSH fai algo de maxia a veces. Se tes un servidor remoto onde queres usar git, podes usar o teu Axente SSH local do teu ordenador para usar Git no teu servidor remoto. Así é como podes facelo:
- Engades a túa clave privada ao Axente SSH
- Conecta ao teu servidor remoto usando SSH. Coidado:
ssh -A usuario@ipremota
- Usa o CLI de git con SSH
Conclusión
Como ves, a veces cando nos forzan a actualizar a unha mellor alternativa é un lío, pero resulta nun xeito máis seguro de traballar. Neste caso, polo menos para min, tamén resultou nunha mellor experiencia xa que aprendín como evitar reescribir o contrasinal de cada vez!
Obri! Grazas por lelo, este xa é o 5º artigo do #52challenge!
-
Github é unha plataforma que os programadores usan para gardar o seu código. A maioría deles, gárdao publicamente para que poida ser lido (e usado) por outros programadores. Isto chámase Software de Código Aberto (e libre). ↩︎
-
Git é unha ferramenta usada polos programadores para controlar versións do seu código fonte. Cando fan cambios, usan git para trazalos para o futuro. Github é unha plataforma que usa git para gardar o código e permite a outros contribuír ao teu código. ↩︎