Обхід перевірки дозволу файлу ssh key


29

У мене зашифрований том FAT (для сумісності), що містить файл приватного ключа та інші конфіденційні дані.

Я хочу підключитися до свого сервера через SSH за допомогою мого приватного ключа, але, звичайно, оскільки FAT не підтримує дозвіл на файл, він ігнорує мій ключ, кажучи, що його дозволи занадто відкриті.

Тож зараз я копіюю його десь на своєму жорсткому диску з 0600 дозволами, використовую його, а потім надійно стираю, але це біль.

Чи є спосіб обійти перевірку дозволу в цьому самому командному рядку ssh / scp?

Редагувати : Точність: це був обсяг TrueCrypt в ОС X.

Щодо рішення: Прийнята нижче відповідь вирішила мою проблему (за допомогою файлу ключів SSH, розташованого на томі TrueCrypt в Mac OS X), але це рішення. Схоже, немає способу "обійти дозволу перевірки дозволу файлів ключа".

Відповіді:


18

AFAIK, немає ніякого способу обійти перевірку дозволу на файл ключових файлів за допомогою ssh або ssh-add (і ви не зможете обманути його з іменем pipe або подібним). Крім того, ви насправді не хочете обманювати ssh, а просто мати можливість використовувати свої ключові файли.

Дійсно, обсяг TrueCrypt повинен зберігати ваші дані приватними, тому встановлення томів як читаних у всьому світі (поведінка TrueCrypt за замовчуванням) насправді не є оптимальним. Якщо ви використовуєте FAT-формат, ви дійсно повинні налаштувати параметри кріплення, як запропонував Ден Карлі.

Незважаючи на те, що параметри монтажу ще не підтримуються TrueCrypt для OS X (навіть якщо ви запускаєте TC за допомогою інтерфейсу командного рядка та параметрів монтування на мандатній сторінці - вже випробувано), OS X підтримує параметри встановлення параметрів монтажу на основі назви гучності .

Вам потрібно знати свій ідентифікатор користувача (як правило, 501, якщо ви перший / єдиний користувач комп'ютера). Ви можете отримати його за допомогою "id -u".

Скажімо, ви називаєте, що назва тома - "PRIVATE" (назви томів у великих літерах), а ваш uid - 501, все, що вам потрібно зробити, - це додати цей рядок до / etc / fstab:

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

Щоб створити / відредагувати цей файл, він повинен мати root (його немає в установці OSX за замовчуванням):

sudo vim /etc/fstab

Наступного разу, коли ви встановите гучність, вона матиме дозвіл 700 та ідентифікатор власника 501.

Це також працює з USB-накопичувачами (які зазвичай також форматовані у FAT).


працює чудово
instanceof

Я не міг отримати томат у форматі FAT, щоб отримати правильні дозволи за допомогою цього методу. Однак вибір "Mac OS Extended" та вибір параметра для монтажу на інших операційних системах дозволяє мені встановити дозволи з chmod.
порожній набір

Це чудово спрацювало. Коли я монтую захищений об'єм, я монтуюсь до певної точки мого домашнього каталогу. Я виявив, що мені довелося замінити значення "none" на явну назву точки монтування.
Алек Гек

1
Це працює навіть у тому випадку, коли /etc/fstabфайлів на новій ОС X немає. Просто створіть новий etc/fstabфайл із вищезазначеним
iggie

33

Додавання ключа від stdin працювало для мене:

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

1
чому це не має жодної пропозиції? він працює без коробки без монтажу, і ви все одно використовуєте ssh-агент, чи не так?
pscheit

4
працює як принадність - якщо прийнята відповідь
hdave

1
Це мене запустило. Використання WSL Ubuntu. Спасибі!
mydoglixu

7

Як божевільний спосіб вирішення проблеми, ви можете зробити образ диска обсягом ext2, що містить ваш приватний ключ, і змонтувати його як циклічний пристрій, а потім використовувати свій ключ ssh звідти.

Створіть порожній файл розміром 1 Мб:

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

Відформатуйте його ext2 (Натисніть Y, коли він каже, що це не пристрій):

mke2fs diskimg

Змонтуйте його десь (як корінь):

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

Тепер у вас є крихітна файлова система ext2, на яку можна встановлювати дозволи. Ви можете написати сценарій для його монтажу і переконатися, що ці дозволи мають правильний UID / GID залежно від системи, на якій ви працюєте (оскільки UID можуть не збігатися). Він також вимагає доступу до роботи sudo / root.


Здається, немає більш простого варіанту
instanceof мені

1
це так неправильно - але дуже круто :)
warren

1
@warren: Я зробив це передмовою з "божевільним". :-D
Кайл Сміт

2

Що з додаванням StrictModes noдо вашого /etc/ssh/sshd_config(та sshd для перезавантаження / перезавантаження)?

редагувати: ой, ця опція лише на сервері: /


1

Якщо я пам'ятаю правильно, ssh-agentне перевіряє ключові дозволи. Так це може спрацювати:

[-S "$ SSH_AUTH_SOCK"] || eval $ (ssh-агент)
ssh-add path / to / id_rsa

FYI, це не працює. ssh-addперевіряє дозволи на файли.
Кайл Сміт

0

Ви можете змінити ваші параметри монтування ( umask, uidі gid) в костюмі?


AFAIK Ні, це обсяг TrueCrypt, єдиний мій варіант - це встановити його лише для читання, а ssh все ще скаржиться, що це 0777
instanceof
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.