Last active
June 20, 2023 18:48
-
-
Save neverkas/003b0d8c3812cc1568a84b384e358c18 to your computer and use it in GitHub Desktop.
ssh config + github (ssh client-side)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SSH_CLIENT_DIR=$${HOME}/.ssh | |
SSH_CLIENT_DIR_PERMISSIONS=700 | |
SSH_CLIENT_CONFIG=$${HOME}/.ssh/config | |
SSH_CLIENT_CONFIG_PERMISSIONS=600 | |
PRINT_OCTAL_PERMISSIONS=stat --format='%a' | |
# se recomienda que sólo el usuario del sistema acceda al directorio ~/.ssh | |
# caso contrario el comando `ssh-add` NO permitirá agregar Claves Privadas de SSH, diciendo "WARNING: UNPROTECTED PRIVATE KEY FILE!" | |
sshclient-check-permissions: sshclient-check-permissions-dir sshclient-check-permissions-config | |
sshclient-check-permissions-config: | |
ifeq ("$(shell $(PRINT_OCTAL_PERMISSIONS) $(SSH_CLIENT_CONFIG))", "$(SSH_CLIENT_CONFIG_PERMISSIONS)") | |
@echo el archivo regular $(SSH_CLIENT_CONFIG) tiene bien asignado los permisos | |
else | |
@echo el archivo regular $(SSH_CLIENT_CONFIG) tiene MAL asignado los permisos | |
@echo asignando los permisos correctos.. | |
chmod $(SSH_CLIENT_CONFIG_PERMISSIONS) $(SSH_CLIENT_CONFIG) | |
endif | |
sshclient-check-permissions-dir: | |
ifeq ("$(shell $(PRINT_OCTAL_PERMISSIONS) $(SSH_CLIENT_DIR))", "$(SSH_CLIENT_DIR_PERMISSIONS)") | |
@echo el directorio $(SSH_CLIENT_DIR) tiene BIEN asignado los permisos | |
else | |
@echo el directorio $(SSH_CLIENT_DIR) tiene MAL asignado los permisos | |
@echo asignando los permisos correctos.. | |
chmod $(SSH_CLIENT_DIR_PERMISSIONS) $(SSH_CLIENT_DIR) | |
endif | |
.PHONY: sshclient-check-permissions sshclient-check-permissions-dir sshclient-check-permissions-config |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ============= | |
# Observaciones | |
# ============= | |
# | |
# - Copiar ésta configuración en /home/nombre-de-usuario/.ssh/config si tenemos sólo un usuario | |
# - Copiar ésta configuración en /etc/ssh/ssh_config si tenemos varios usuarios | |
# ======================================== | |
# Configuración Servidores Remotos propios | |
# ========================================= | |
# | |
# 1. chmod 0700 ~/.ssh/ && chmod 0600 ~/.ssh/config | |
# 2. ssh-keyscan -H -t tipo-algoritmo-clave-publica nombre-del-host >> ~/.ssh/known_hosts | |
# 3. ssh-copy-id -oStrictHostKeyChecking=no -i ~/.ssh/nombre-clave-publica.pub direccion-ip | |
# | |
Host nombre-del-servidor | |
Hostname ip-del-servidor | |
User nombre-de-usuario | |
Port 22 | |
IdentityFile ~/.ssh/nombre-clave-privada | |
# ======================== | |
# Configuración con GITHUB | |
# ======================== | |
# Opciones de ~/.ssh/config y /etc/ssh/ssh_config | |
# ----------------------------------------------- | |
# | |
# - el nombre del Host y Hostname deben coincidir diciendo github.com | |
# - conexión utilizada cuando hagamos clonemos un repositorio, realizemos commits/push/.. | |
# | |
# Establecer Conexión con Github | |
# ------------------------------ | |
# | |
# 1. ssh-keyscan -H -t ed25519 github.com >> ~/.ssh/known_hosts # agregará una entrada en ~/.ssh/known_hosts | |
# 2. ssh -vT [email protected] # podría agregar una entrada adicional en ~/.ssh/known_hosts | |
# | |
# Múltiples entradas en ~/.ssh/known_hosts | |
# ----------------------------------------- | |
# | |
# - la primera columna (dónde aparece el IP ó dominio del Host) | |
# | |
# - si tiene valores diferentes podrían ser el "valor Hash" de distintas direcciones de IP de github | |
# - ver en https://api.github.com/meta | |
# | |
# - el (fpr) Fingerprint de la Clave Pública del Host (hostkey) | |
# | |
# - confirmar que coincidan con el que Github publica para los algoritmos de clave pública (rsa, ed25519) | |
# - ver en https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints) | |
# | |
Host github.com | |
Hostname github.com | |
User nombre-de-usuario-de-github | |
IdentityFile ~/.ssh/nombre-clave-privada-de-github | |
# ===================== | |
# Configuración General | |
# ===================== | |
# | |
# - opciones que se agregarán a todos los Host | |
# | |
Host * | |
# - obligará a que nombres de los Hosts estén hasheados para aumentar la privacidad de nuestras conexiones, | |
# - si ya existen Hosts agregados en known_hosts debemos ejecutar `ssh-keygen -H -f ~/.ssh/known_hosts` | |
# - si agregaremos nuevos Hosts debemos ejecutar `ssh-keyscan -H ip-servidor >> ~/.ssh/known_hosts` | |
HashKnownHosts yes | |
# - el Cliente SSH, sólo se conectará a los Hosts de ~/.ssh/known_hosts | |
# - si es la primera conexión deshabilitar opción desde la linea de comandos | |
# Ej. ssh -o StrictHostKeyChecking=no nombre-del-host | |
StrictHostKeyChecking yes | |
# - archivo regular de la Lista de Hosts (Servidores) conocidos | |
# - el valor por defecto es ~/.ssh/known_hosts (la definimos por si acaso) | |
UserKnownHostsFile ~/.ssh/known_hosts | |
# orden de de preferencia que usará el Cliente SSH para elegir algoritmos de Clave Pública para autenticar con el Servidor (de izq. a der) | |
# | |
# - priorizamos autenticar con el algoritmo ed25519, si el Host no tiene generada una pubkey con ese algoritmo, entonces rsa-sha256 | |
# - el (fpr) fingerprint de la Clave Pública del Host se agregará en ~/.ssh/known_hosts del lado del Cliente | |
HostKeyAlgorithms ssh-ed25519,ssh-rsa | |
PubkeyAcceptedKeyTypes ssh-ed25519,ssh-rsa | |
# orden de preferencia que usará el Cliente SSH para acceder al Servidor (de izquierda a derecha) | |
# | |
# 1. priorizamos la Autenticación con Algoritmo de Clave Pública (si no puede acceder, intentará con Autenticación por Clave) | |
# 2. como segunda alternativa, Autenticación con Clave de texto plano | |
# - requerido para la 1º instancia de conexión con el Servidor | |
# - para copiar la Clave Pública del Cliente mediante el comando ``ssh-copy-id`` en el Servidor | |
PreferredAuthentications publickey,password | |
PubkeyAuthentication yes | |
# luego de agregar la Clave Pública en el Servidor (y configurarlo), | |
# desactivar desde el lado del Servidor la Autenticacioń con Clave (cambiando su valor a `no` en `/etc/ssh/sshd_config`), | |
# para que el único Método de Autenticación sea con el Par de Claves Pública/Privada (es más seguro) | |
PasswordAuthentication yes | |
# el Cliente SSH, utilizará como autenticación un Par de Claves pública/privada (Criptografía Asimétrica) | |
# PreferredAuthentications publickey | |
# el Agente SSH recordará las Claves Privadas de SSH, el Cliente SSH le preguntará al Agente SSH las Claves Privadas de SSH | |
AddKeysToAgent yes | |
# el Cliente SSH usará la identidad definida en la opción IdentityFile, evitamos que pruebe cada Clave Privada de SSH de ~/.ssh | |
IdentitiesOnly yes | |
# | |
TCPKeepAlive no | |
# | |
Port 22 | |
# cuantos segundos esperará el Cliente SSH antes de finalizar, si no se pudo conectar con el Servidor SSH | |
ConnectTimeout 30 | |
# cada cuantos segundos el Cliente SSH verifica el estado del Servidor SSH, mediante el protocolo SSH | |
ServerAliveInterval 10 | |
# máxima cantidad de intentos que el Cliente SSH verifica el estado del Servidor SSH, antes de finalizar por falta de respuesta | |
ServerAliveCountMax 5 | |
# se utiliza el programa gzip, para comprimir los datos transmitidos | |
Compression yes | |
# | |
# ForwardAgent no | |
# ForwardX11 no | |
LogLevel ERROR | |
#LogLevel INFO |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment