
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-agent
en 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)
oeval $(ssh-agent -c)
trabajará
¿Cómo ejecutar ssh-agent en fish shell?
Sin embargo, recomendaría el uso dekeychain
para simplificar ssh-agent
el 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-add
en 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_agent
de gihubhttps://github.com/ivakyb/fish_ssh_agent
Ese repositorio también tiene algunas sugerencias valiosas sobre el tema SSH, agente SSH, Fish-shell.