¿Cómo ejecutar ssh-agent en Fish Shell?

¿Cómo ejecutar ssh-agent en Fish Shell?

estaba corriendo eval `ssh-agent -s\` me sale este error

fish: Unknown command: `ssh-agent

Respuesta1

Su pregunta tiene dos partes:

  • ¿Por qué aparece un error al intentar eval `ssh-agent -s`?
  • Cómo habilitar ssh-agenten el caparazón de pescado

Para el primero, la función que busca se llama "sustitución de comandos". Hay dos formas de hacer esto en shells Bash/POSIX:

  • Comillas invertidas (p. ej. `command`), como las estás usando
  • $(command)

Se desaconseja el uso de comillas invertidas, por lo que si encuentra documentación o un blog que las utiliza, tenga en cuenta que está muy desactualizado (o no lo sabe).

En Fish, como habrás descubierto, la (command)agrupación es la forma "más compatible" de realizar la sustitución de comandos. Sin embargo, a partir de Fish 3.4.0, el $(command)formulario también funciona. Entonces usando:

  • eval (ssh-agent -c)o
  • eval $(ssh-agent -c)trabajará
¿Cómo ejecutar ssh-agent en fish shell?

Sin embargo, recomendaría el uso dekeychainpara simplificar ssh-agentel uso en pescado (y otras conchas). Ignore la parte de la página web que dice (como señala @Charliesneath en los comentarios),"Actualmente, el llavero no es compatible con Fish shell." La página web simplemente no se ha actualizado desde hace un tiempo.

En realidad, Keychain tiene soporte integrado para Fish (agregado en 2017) y puede utilizar variables universales para mantener sus claves sincronizadas en múltiples sesiones de shell.

Por ejemplo, si tiene dos sesiones de Fish Shell abiertas y ejecuta ssh-agent/ ssh-adden una de ellas, aún deberá ejecutar lo mismo en la otra e ingresar su contraseña nuevamente. Hayformas de compartir el agente entre sesiones de shell, pero Keychain lo maneja por usted.

Keychain se puede instalar directamente desde los repositorios de la mayoría de las distribuciones. Por ejemplo, sudo apt install keychain.

Se puede habilitar en Fish con:

keychain --eval <keyfile> | source

Tengo esto configurado en Fish de la siguiente manera.

  • Cree el siguiente script en~/.config/fish/conf.d/keychain.fish

    if status is-login
        and status is-interactive
        # To add a key, set -Ua SSH_KEYS_TO_AUTOLOAD keypath
        # To remove a key, set -U --erase 
    SSH_KEYS_TO_AUTOLOAD[index_of_key]
        keychain --eval $SSH_KEYS_TO_AUTOLOAD | source
    end
    
  • set -Ua SSH_KEYS_TO_AUTOLOAD ~/.ssh/id...para cualquier clave que desee utilizar.

Eso es practicamente todo. Cuando inicias un inicio de sesión en Fish Shell, si la clave no está desbloqueada, Keychain te pedirá la contraseña y la agregará a un archivo compartido ssh-agent. Si ya está desbloqueado, no volverá a preguntar.

Por supuesto, puede simplificar el script incorporando nombres de claves estáticas. Prefiero variables universales para mantener el guión dinámico. Esto permite almacenar un único script en mi repositorio de archivos de puntos aunque utilice diferentes claves en diferentes sistemas.

Respuesta2

me sale esta solución

correr

eval (ssh-agent -c)

referencia:https://wiki.archlinux.org/title/Fish#Evaluate_ssh-agent

Respuesta3

Yo uso fish_ssh_agentde gihubhttps://github.com/ivakyb/fish_ssh_agent

github/ivakyb/fish_ssh_agent

Ese repositorio también tiene algunas sugerencias valiosas sobre el tema SSH, agente SSH, Fish-shell.

información relacionada