Omitir verificación de permisos de archivos de clave ssh

29

Tengo un volumen FAT encriptado (por compatibilidad) que contiene un archivo de clave privada y otros datos confidenciales.

Quiero conectarme a mi servidor a través de SSH usando mi clave privada, pero, por supuesto, como FAT no admite permisos de archivo, ignora mi clave diciendo que sus permisos están demasiado abiertos.

Así que actualmente lo estoy copiando en otro lugar de mi disco duro con permisos 0600, usándolo y luego borrándolo de forma segura, pero es un dolor.

¿Hay alguna forma de evitar la verificación de permisos en esta línea de comando ssh / scp?

Editar : Precisión: era un volumen TrueCrypt en OS X.

En la solución: la respuesta aceptada a continuación resolvió mi problema (usando un archivo de clave SSH ubicado en un volumen TrueCrypt con Mac OS X), pero es una solución alternativa. Parece que no hay forma de "omitir la verificación de permisos del archivo de clave".

instancia de mi
fuente

Respuestas:

18

AFAIK, no hay forma de evitar la verificación de permisos del archivo de claves con ssh o ssh-add (y no puede engañarlo con una canalización con nombre o similar). Además, en realidad no quieres engañar a ssh, sino solo para poder usar tus archivos clave.

De hecho, se supone que el volumen TrueCrypt mantiene sus datos privados, por lo que montar los volúmenes como legibles en todo el mundo (comportamiento predeterminado de TrueCrypt) no es realmente óptimo. Si está utilizando un volumen con formato FAT, realmente debería ajustar las opciones de montaje, como sugirió Dan Carley.

Aunque TrueCrypt aún no admite correctamente las opciones de montaje para OS X (incluso si inicia TC utilizando la interfaz de línea de comandos y las opciones de montaje desde la página del manual, ya probado), OS X admite valores predeterminados de opciones de montaje según el nombre del volumen .

Debe conocer su identificación de usuario (generalmente 501 si es el primer / único usuario de la computadora). Puede obtenerlo con "id -u".

Digamos que su nombre de volumen es "PRIVADO" (los nombres de volumen están en mayúsculas), y su uid es 501, todo lo que tiene que hacer es agregar esta línea a / etc / fstab:

LABEL=PRIVATE none msdos -u=501,-m=700

Debe ser root para crear / editar este archivo (no está presente en la instalación predeterminada de OSX):

sudo vim /etc/fstab

La próxima vez que monte el volumen, tendrá el permiso 700 y la identificación del propietario 501.

Esto también funciona con unidades USB (que generalmente también están formateadas en FAT).

usuario9437
fuente
funciona a la perfección
instancia de mí
No pude obtener un volumen con formato FAT para obtener los permisos correctos con este método. Sin embargo, seleccionar "Mac OS Extended" y seleccionar la opción para montar en otros sistemas operativos me permite configurar los permisos con chmod.
emptyset
Esto funcionó maravillosamente. Cuando monto el volumen seguro, lo hago en un punto específico de mi directorio de inicio. Descubrí que tenía que reemplazar el valor de 'ninguno' con el nombre explícito del punto de montaje.
Alec the Geek
1
Esto funciona incluso cuando no hay un /etc/fstabarchivo en el nuevo OS X. Simplemente cree un nuevo etc/fstabarchivo con lo anterior
iggie
33

Agregar la clave de stdin funcionó para mí:

cat /path/to/id_rsa | ssh-add -k -
R_Beagrie
fuente
1
¿Por qué esto no tiene un solo voto? funciona sin necesidad de montaje y de todas formas estás usando un agente ssh, ¿no?
pscheit
44
funciona como un encanto - debería ser la respuesta aceptada
hdave
1
Esto me metió. Usando WSL Ubuntu. ¡Gracias!
mydoglixu
7

Como una solución alternativa loca, puede hacer una imagen de disco de un volumen ext2 que contenga su clave privada y montarla como un dispositivo de bucle, luego use su clave ssh desde allí.

Crea un archivo vacío de 1 MB:

dd if=/dev/zero of=diskimg bs=1024 count=1024

Formatee ext2 (presione Y cuando dice que no es un dispositivo):

mke2fs diskimg

Montarlo en algún lugar (como raíz):

mount -t ext2 -o loop diskimg /my/path/to/diskimg

Ahora tiene un pequeño sistema de archivos ext2 en el que puede establecer permisos. Puede escribir un script para montarlo y asegurarse de que esos permisos tengan el UID / GID correcto según el sistema en el que se encuentre (ya que los UID pueden no coincidir). También requiere acceso sudo / root para trabajar.

Kyle Smith
fuente
parece que no hay ninguna opción más simple
instanceof Me
1
que es tan malo - pero muy fresco :)
Warren
1
@warren: Lo prefacio con 'loco'. :-D
Kyle Smith el
2

¿Qué pasa con agregar StrictModes noa su /etc/ssh/sshd_config(y la recarga / reiniciar sshd)?

edit: oops, esta opción es solo del lado del servidor: /

Benoît
fuente
1

Si recuerdo correctamente, ssh-agentno verifica los permisos clave. Entonces esto podría funcionar:

[-S "$ SSH_AUTH_SOCK"] || eval $ (agente ssh)
ssh-add ruta / a / id_rsa
Gravedad
fuente
FYI, esto no funciona. ssh-addcomprueba los permisos de archivo.
Kyle Smith el
0

Se puede modificar las opciones de montaje ( umask, uidy gid) al traje?

Dan Carley
fuente
Sin que yo sepa, se trata de un volumen TrueCrypt, mi única opción es montar como de sólo lectura y ssh todavía se queja de que es 0777
instanceof Me