Bypassare il controllo delle autorizzazioni del file chiave ssh


29

Ho un volume FAT crittografato (per compatibilità) contenente un file di chiave privata e altri dati sensibili.

Voglio connettermi al mio server tramite SSH usando la mia chiave privata, ma ovviamente, poiché FAT non supporta le autorizzazioni dei file, ignora la mia chiave dicendo che le sue autorizzazioni sono troppo aperte.

Quindi attualmente lo sto copiando da qualche altra parte sul mio disco rigido con le autorizzazioni 0600, utilizzandolo e quindi cancellandolo in modo sicuro, ma è una seccatura.

C'è un modo per aggirare il controllo dei permessi su questa riga di comando molto ssh / scp?

Modifica : Precisione: era un volume TrueCrypt su OS X.

Sulla soluzione: la risposta accettata di seguito ha risolto il mio problema (utilizzando un file chiave SSH situato su un volume TrueCrypt con Mac OS X), ma è una soluzione alternativa. Sembra che non ci sia modo di "controllare i permessi del file chiave".

Risposte:


18

AFAIK, non c'è modo di bypassare il controllo delle autorizzazioni del file di chiavi con ssh o ssh-add (e non è possibile ingannarlo con la pipe denominata o simili). Inoltre, in realtà non vuoi ingannare ssh, ma solo essere in grado di usare i tuoi file chiave.

In effetti, il volume TrueCrypt dovrebbe mantenere i tuoi dati privati, quindi montare i volumi come leggibili in tutto il mondo (comportamento predefinito di TrueCrypt) non è davvero ottimale. Se stai usando un volume in formato FAT, dovresti davvero regolare le opzioni di montaggio, come suggerito da Dan Carley.

Sebbene le opzioni di montaggio non siano ancora correttamente supportate da TrueCrypt per OS X (anche se si avvia TC utilizzando l'interfaccia della riga di comando e le opzioni di montaggio dalla pagina man - già provate), OS X supporta i valori predefiniti delle opzioni di montaggio in base al nome del volume .

Devi conoscere il tuo ID utente (di solito 501 se sei il primo / unico utente del computer). Puoi ottenerlo con "id -u".

Supponiamo che il nome del tuo volume sia "PRIVATO" (i nomi dei volumi sono in maiuscolo) e il tuo uid è 501, tutto ciò che devi fare è aggiungere questa riga a / etc / fstab:

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

Devi essere root per creare / modificare questo file (non è presente nell'installazione OSX predefinita):

sudo vim /etc/fstab

La prossima volta che monterai il volume, avrà l'autorizzazione 700 e l'id proprietario 501.

Funziona anche con le unità USB (che di solito sono formattate anche in FAT).


funziona perfettamente
esempio da me il

Non sono riuscito a ottenere un volume formattato in FAT per ottenere le autorizzazioni giuste con questo metodo. Tuttavia, selezionando "Mac OS esteso" e selezionando l'opzione da montare su altri sistemi operativi mi permette di impostare le autorizzazioni con chmod.
emptyset

Questo ha funzionato meravigliosamente. Quando monto il volume sicuro, monto su un punto specifico nella mia directory home. Ho scoperto che dovevo sostituire il valore di "none" con il nome esplicito del punto di montaggio.
Alec the Geek,

1
Funziona anche quando non ci sono /etc/fstabfile sul nuovo OS X. Basta creare un nuovo etc/fstabfile con quanto sopra
iggie

33

L'aggiunta della chiave di stdin ha funzionato per me:

cat /path/to/id_rsa | ssh-add -k -

1
perché questo non ha un voto? funziona fuori dalla scatola senza montaggio e stai usando comunque un agente ssh, vero?
pscheit,

4
funziona come un incantesimo - dovrebbe e la risposta accettata
hdave l'

1
Questo mi ha coinvolto. Usando WSL Ubuntu. Grazie!
mydoglixu,

7

Come soluzione pazza, potresti creare un'immagine del disco di un volume ext2 contenente la tua chiave privata e montarla come dispositivo loop, quindi utilizzare la tua chiave ssh da lì.

Crea un file vuoto da 1 MB:

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

Formattalo ext2 (Premi Y quando dice che non è un dispositivo):

mke2fs diskimg

Montalo da qualche parte (come root):

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

Ora hai un piccolo filesystem ext2 su cui puoi impostare le autorizzazioni. È possibile scrivere uno script per montarlo e assicurarsi che tali autorizzazioni abbiano l'UID / GID corretto in base al sistema in uso (poiché gli UID potrebbero non corrispondere). Richiede anche l'accesso sudo / root per funzionare.


sembra che non ci sia un'opzione più semplice
instanceof me

1
è così sbagliato - ma molto bello :)
warren

1
@warren: l'ho fatto prefigurare con "pazzo". MrGreen
Kyle Smith il

2

Che ne dici di aggiungere StrictModes noal tuo /etc/ssh/sshd_config(e il sshd ricarica / riavvio)?

modifica: oops, questa opzione è solo lato server: /


1

Se ricordo bene, ssh-agentnon controlla le autorizzazioni chiave. Quindi questo potrebbe funzionare:

[-S "$ SSH_AUTH_SOCK"] || eval $ (agente ssh)
ssh-aggiungi percorso / a / id_rsa

Cordiali saluti, questo non funziona. ssh-addcontrolla i permessi dei file.
Kyle Smith,

0

Si può modificare le opzioni di montaggio ( umask, uide gid) per il vestito?


AFAIK No, è un volume TrueCrypt, la mia unica opzione è montarlo come di sola lettura e ssh si lamenta ancora che sia 0777
istanza di me,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.