.png)
He estado intentando iniciar un proceso sshd adicional en una máquina remota. Creé un directorio de trabajo con el nuevo archivo de configuración sshd que me gustaría usar.
Cuando intento ejecutar sshd usando el archivo de configuración en este directorio, se queja de que no puede encontrar ninguna clave de host. Intenté crear claves de host faltantes ejecutando ssh-keygen -A
el -f
interruptor para especificar la ubicación de mi directorio de trabajo, pero ssh-keygen continúa intentando colocar las claves en /etc/ssh/
lugar del directorio que especifiqué. No tengo acceso a /etc/ssh, por lo que falla.
¿Cómo puedo generar estas claves sin acceso a esta ruta?
Respuesta1
La -A
opción indica ssh-keygen
generarclaves de host. Según la página del manual, el uso previsto ssh-keygen
es
Normalmente , cada usuario que desee utilizar SSH con autenticación de clave pública ejecuta
esto una vez para crear la clave de autenticación en~/.ssh/identity
, o .
~/.ssh/id_ecdsa
~/.ssh/id_dsa
~/.ssh/id_rsa
Además, el administrador del sistema puede utilizar esto para generar claves de host.
La sinopsis lo enumera -A
en una línea por sí solo, sin otras opciones:
SYNOPSIS
ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]
[-f output_keyfile]
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
ssh-keygen -i [-m key_format] [-f input_keyfile]
ssh-keygen -e [-m key_format] [-f input_keyfile]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
ssh-keygen -l [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D pkcs11
ssh-keygen -F hostname [-f known_hosts_file] [-l]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -R hostname [-f known_hosts_file]
ssh-keygen -r hostname [-f input_keyfile] [-g]
ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
ssh-keygen -T output_file -f input_file [-v] [-a num_trials] [-K checkpt]
[-W generator]
ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]
[-O option] [-V validity_interval] [-z serial_number] file ...
ssh-keygen -L [-f input_keyfile]
ssh-keygen -A
Entonces (aparte de modificar la fuente y compilarla usted mismo), lo que está preguntando no es el uso previsto.
Otras lecturas:
Respuesta2
Según la página de manual a la que Thomas se vinculó, -f
ahora es compatible ssh-keygen -A
y especifica un prefijo para los archivos, por lo que parece que esta característica se agregó.
-A
Genere claves de host de todos los tipos de claves predeterminadas (
rsa
,ecdsa
yed25519
) si aún no existen. Las claves de host se generan con la ruta del archivo de claves predeterminada, una frase de contraseña vacía, bits predeterminados para el tipo de clave y un comentario predeterminado. Si-f
también se ha especificado, su argumento se utiliza como prefijo de la ruta predeterminada para los archivos de claves del host resultantes. Esto lo utiliza/etc/rc
para generar nuevas claves de host.
Notaque las etc/ssh
carpetas deben existir en la carpeta de salida antes de ejecutarssh-keygen
$ mkdir -p output/etc/ssh
$ ssh-keygen -A -f output
ssh-keygen: generating new host keys: RSA ECDSA ED25519
$ ls output/etc/ssh/
ssh_host_ecdsa_key ssh_host_ecdsa_key.pub ssh_host_ed25519_key ssh_host_ed25519_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub
Respuesta3
Si tiene acceso a Docker, razón por la cual quería hacer esto, para crear una clave de host nueva y persistente que estaría fuera del contenedor, utilicé lo siguiente:
docker run -d --name get_host_keys lscr.io/linuxserver/openssh-server:latest
sleep 5
docker cp get_host_keys:/etc/ssh/. .
rm *config*
docker stop get_host_keys
docker rm get_host_keys