¿Cómo se configura la tela para conectarse a hosts remotos utilizando archivos de claves SSH (por ejemplo, instancias de Amazon EC2)?Uso de un archivo de clave SSH con Fabric
Respuesta
También vale la pena mencionar aquí que puede utilizar los argumentos de línea de comandos para esto:
fab command -i /path/to/key.pem [-H [[email protected]]host[:port]]
Encontrar un archivo fab simple con un ejemplo de trabajo de uso de archivos de claves SSH no es fácil por alguna razón. Escribí un blog post al respecto (with a matching gist).
Básicamente, el uso más o menos así:
from fabric.api import *
env.hosts = ['host.name.com']
env.user = 'user'
env.key_filename = '/path/to/keyfile.pem'
def local_uname():
local('uname -a')
def remote_uname():
run('uname -a')
La parte importante es establecer la variable de entorno de env.key_filename
, por lo que la configuración paramiko puede buscarlo cuando se conecta.
Otra característica fresca disponible a partir de Tela 1,4-Fabric now supports SSH configs.
Si ya tiene todos los parámetros de conexión SSH en su archivo ~/.ssh/config
, Tela de forma nativa apoyarlo, todo lo que tiene que hacer es añadir:
env.use_ssh_config = True
al comienzo de su fabfile.
¡Muy útil! Si se encuentra con errores como 'IOError: [Errno 2] No existe ese archivo o directorio: '/ path/to/.ssh/key'' o' Login password for' root ': 'solo asegúrese de no tener espacios en blanco en su '.ssh/config'. Es por ejemplo 'User = root' en lugar de' User = root' ... – dennis
@dennis ¡Esto parece ser un problema en 2016 ..! ¡Gracias! – gabn88
Como se indicó anteriormente, Fabric admitirá la configuración de archivos .ssh/config de una manera, pero el uso de un archivo pem para ec2 parece ser problemático. IOW un archivo .ssh/config correctamente configurado funcionará desde la línea de comando a través de 'ssh servername' y no funcionará con 'fab sometask' cuando env.host = ['servername'].
Esto se solucionó especificando env.key_filename = 'keyfile' en mi fabfile.py y duplicando la entrada de IdentityFile que ya estaba en mi .ssh/config.
Esto podría ser Fabric o paramiko, que en mi caso era Fabric 1.5.3 y Paramiko 1.9.0.
Para mí, la siguiente no funcionó:
env.user=["ubuntu"]
env.key_filename=['keyfile.pem']
env.hosts=["xxx-xx-xxx-xxx.ap-southeast-1.compute.amazonaws.com"]
o
fab command -i /path/to/key.pem [-H [[email protected]]host[:port]]
Sin embargo, el siguiente lo hizo:
env.key_filename=['keyfile.pem']
env.hosts=["[email protected]"]
o
env.key_filename=['keyfileq.pem']
env.host_string="[email protected]"
Tu primer ejemplo funciona para mí si usas 'env.user =" ubuntu "' en lugar de 'env.user = [" ubuntu "]'. –
que tenía que hacer esto hoy en día, mi archivo .py era tan simple como sea posible, como la que se registró en la respuesta de @YuvalAdam pero todavía me hacía cada vez pide una contraseña ...
Mirando el paramiko
(la biblioteca utilizada por la tela para ssh) ingrese, me encontré con la línea:
Incompatible ssh peer (no acceptable kex algorithm)
puse al día con paramiko
:
sudo pip install paramiko --upgrade
Y ahora que está funcionando.
- 1. Ejecutar ssh-add con Fabric en una máquina
- 2. Reenvío de puertos SSH en un archivo ~/.ssh/config?
- 3. ¿Cómo uso Fabric to SSH en dos puertos diferentes en el mismo servidor?
- 4. Creación de una clave SSH con ssh-keygen no crea la carpeta .ssh
- 5. clave SSH en dreamhost
- 6. SSH de error: "No es un archivo de clave RSA1 ~/.ssh/id_rsa.", "Key_type_from_name: Tipo de llave desconocida '----- BEGIN'"
- 7. Conectando a un host enumerado en ~/.ssh/config al usar Fabric
- 8. Guardar la clave ssh falla
- 9. Eclipse: ¿Cómo clonar git sobre ssh con el archivo de clave?
- 10. La clave ya está en uso al intentar agregar la clave SSH a Github
- 11. Invocar alias de bash en scripts Fabric
- 12. ¿Cómo incluir ssh clave de clave privada cuando se accede a git repo a través de ssh (gitosis)?
- 13. Uso de pseudo tty con ssh resultados en advertencia
- 14. Lee un archivo del servidor con ssh usando python
- 15. Uso de claves SSH para la verificación del usuario http
- 16. Uso de HashMap con la clave personalizada
- 17. Scala con el uso de palabras clave
- 18. Emular el servidor SSH con fines de prueba
- 19. El uso de SSH sobre Node.js
- 20. TortoiseGit usando la clave SSH incorrecta
- 21. Agregar una clave SSH permanentemente en las ventanas de msysgit
- 22. ¿Puedo capturar códigos de error cuando uso Fabric para ejecutar() llamadas en un shell remoto?
- 23. Uso de clave pública de authorized_keys con seguridad Java
- 24. Crear una clave ssh secundaria sin contraseña para configurar un túnel ssh
- 25. JSch: Cómo enviar ssh a un servidor usando ssh-keys
- 26. Jenkins & Github no usa la clave SSH
- 27. ¿Puedo asociar el nombre de usuario de ssh con commit con git over ssh?
- 28. ¿Cómo transferir un archivo al servidor ssh en una conexión ssh hecha por paramiko?
- 29. ¿Cómo accedo a mi clave pública SSH?
- 30. Archivo de clave incorrecto con MySQL
en la práctica esta es la mejor respuesta. – panchicore
'env.key_filename' [puede contener una lista de cadenas] (http://docs.fabfile.org/en/latest/usage/env.html#key-filename) para probar varios archivos de claves para una conexión. –
Estaba configurando la clave programáticamente en una de mis tareas usando el administrador de contexto 'settings' y no pude lograr que reconociera key_filename hasta que cambie' key_filename = '/ path/to/key'' a 'key_filename = ['/ruta/a/clave '] 'así que si alguien más está teniendo problemas, hacer key_filename una lista de claves podría arreglarlo. Esto es con fab 1.10.1 y Paramiko 1.15.2 – Jaymon