Pomiń sprawdzanie uprawnień do pliku kluczy SSH

29

Mam zaszyfrowany wolumin FAT (w celu zachowania zgodności) zawierający plik klucza prywatnego i inne poufne dane.

Chcę połączyć się z moim serwerem za pośrednictwem SSH przy użyciu mojego klucza prywatnego, ale oczywiście, ponieważ FAT nie obsługuje uprawnień do plików, ignoruje mój klucz, mówiąc, że jego uprawnienia są zbyt otwarte.

Więc obecnie kopiuję go gdzie indziej na moim dysku twardym z uprawnieniami 0600, używam go, a następnie bezpiecznie kasuję, ale to jest ból.

Czy istnieje sposób na ominięcie sprawdzania uprawnień w tym samym wierszu poleceń ssh / scp?

Edycja : Precyzja: był to wolumin TrueCrypt w systemie OS X.

Rozwiązanie: poniższa zaakceptowana odpowiedź rozwiązała mój problem (przy użyciu pliku klucza SSH znajdującego się na woluminie TrueCrypt w systemie Mac OS X), ale jest to obejście. Wygląda na to, że nie ma sposobu na „sprawdzenie uprawnień do pliku kluczy pomijania”.

instancja mnie
źródło

Odpowiedzi:

18

AFAIK, nie ma możliwości ominięcia sprawdzania uprawnień do pliku kluczy za pomocą ssh lub ssh-add (i nie można oszukać go za pomocą nazwanego potoku lub podobnego). Poza tym tak naprawdę nie chcesz oszukać ssh, ale po prostu móc korzystać z twoich kluczowych plików.

Rzeczywiście, wolumen TrueCrypt ma zachować prywatność danych, więc montowanie woluminów w sposób umożliwiający ich odczytanie na całym świecie (domyślne zachowanie TrueCrypt) nie jest naprawdę optymalne. Jeśli używasz woluminu sformatowanego w FAT, naprawdę powinieneś zrezygnować z opcji montowania, jak zasugerował Dan Carley.

Chociaż opcje montowania nie są jeszcze poprawnie obsługiwane przez TrueCrypt dla OS X (nawet jeśli uruchamiasz TC za pomocą interfejsu wiersza poleceń i opcji montowania ze strony podręcznika - już wypróbowane), OS X obsługuje domyślne opcje opcji montowania na podstawie nazwy woluminu .

Musisz znać swój identyfikator użytkownika (zwykle 501, jeśli jesteś pierwszym / jedynym użytkownikiem komputera). Możesz to uzyskać za pomocą „id -u”.

Powiedzmy, że nazwa woluminu to „PRYWATNE” (nazwy woluminów są pisane wielkimi literami), a identyfikator użytkownika to 501, wystarczy dodać tę linię do pliku / etc / fstab:

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

Musisz być rootem, aby utworzyć / edytować ten plik (nie ma go w domyślnej instalacji OSX):

sudo vim /etc/fstab

Przy następnym podłączeniu woluminu będzie on miał uprawnienia 700 i identyfikator właściciela 501.

Działa to również z napędami USB (które zwykle są również sformatowane w FAT).

użytkownik9437
źródło
działa idealnie
instanceof mnie
Nie mogłem uzyskać woluminu w formacie FAT, aby uzyskać odpowiednie uprawnienia za pomocą tej metody. Jednak wybranie „Mac OS Extended” i wybranie opcji montowania w innych systemach operacyjnych pozwala mi ustawić uprawnienia za pomocą chmod.
emptyset
To działało cudownie. Po zamontowaniu bezpiecznego woluminu podłączam się do określonego punktu w moim katalogu domowym. Odkryłem, że musiałem zastąpić wartość „none” wyraźną nazwą punktu montowania.
Alec the Geek
1
Działa to nawet wtedy, gdy nie ma /etc/fstabpliku na nowszym OS X. Po prostu utwórz nowy etc/fstabplik z powyższym
iggie
33

Dodanie klucza ze standardowego wejścia działało dla mnie:

cat /path/to/id_rsa | ssh-add -k -
R_Beagrie
źródło
1
dlaczego to nie ma jednej opinii? to działa od razu po wyjęciu z pudełka, a ty i tak używasz agenta ssh, prawda?
pscheit
4
działa jak urok - powinna być przyjęta odpowiedź
hdave
1
To mnie wciągnęło. Korzystanie z Ubuntu WSL. Dzięki!
mydoglixu
7

Jako zwariowane obejście można zrobić obraz dysku woluminu ext2 zawierającego klucz prywatny i zamontować go jako urządzenie pętlowe, a następnie użyć stamtąd klucza ssh.

Zrób 1 MB pustego pliku:

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

Sformatuj go ext2 (naciśnij Y, gdy mówi, że to nie jest urządzenie):

mke2fs diskimg

Zamontuj go gdzieś (jako root):

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

Teraz masz mały system plików ext2, na którym możesz ustawić uprawnienia. Możesz napisać skrypt, aby go zamontować i upewnić się, że te uprawnienia mają odpowiedni identyfikator UID / GID w zależności od systemu, w którym się znajdujesz (ponieważ identyfikatory UID mogą być niezgodne). Wymaga także dostępu do sudo / root do pracy.

Kyle Smith
źródło
wydaje się, że nie ma prostszej opcji
instanceof mnie
1
to takie złe - ale bardzo fajne :)
warren
1
@warren: Przedmowa zrobiłem z „crazy”. :-D
Kyle Smith
2

Co powiesz na dodanie StrictModes nodo twojego /etc/ssh/sshd_config(i przeładowania / restartu sshd)?

edit: oops, ta opcja jest dostępna tylko po stronie serwera: /

Benoit
źródło
1

Jeśli dobrze pamiętam, ssh-agentnie sprawdza uprawnień klucza. To może działać:

[-S „$ SSH_AUTH_SOCK”] || eval $ (ssh-agent)
ssh-add path / to / id_rsa
grawitacja
źródło
Do Twojej wiadomości, to nie działa. ssh-addsprawdza uprawnienia do plików.
Kyle Smith,
0

Można zmodyfikować opcje montowania ( umask, uidi gid), aby garnitur?

Dan Carley
źródło
AFAIK Nie, to wolumin TrueCrypt, moją jedyną opcją jest zamontowanie go jako tylko do odczytu, a ssh nadal narzeka, że ​​to 0777
instanceof mnie