Обойти проверку прав доступа к файлу ssh


29

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

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

Поэтому в настоящее время я копирую его куда-нибудь на свой жесткий диск с разрешениями 0600, используя его, а затем надежно стирая, но это боль.

Есть ли способ обойти проверку прав доступа в этой самой командной строке ssh / scp?

Изменить : Точность: это был том TrueCrypt на OS X.

Решение: принятый ниже ответ решил мою проблему (используя файл ключа SSH, расположенный на томе TrueCrypt с Mac OS X), но это обходной путь. Похоже, что нет никакой возможности «проверить разрешение файла ключа bypasssh».

Ответы:


18

AFAIK, нет способа обойти проверку прав доступа к ключевому файлу с помощью ssh или ssh-add (и вы не можете обмануть его с помощью именованного канала или чего-то подобного). Кроме того, вы на самом деле не хотите обманывать 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

Чтобы создать / отредактировать этот файл, вы должны быть суперпользователем (его нет при установке OSX по умолчанию):

sudo vim /etc/fstab

В следующий раз при подключении тома у него будет разрешение 700 и идентификатор владельца 501.

Это также работает с USB-накопителями (которые обычно также отформатированы в FAT).


работает отлично
instanceof меня

Я не мог получить том в формате FAT, чтобы получить правильные разрешения с помощью этого метода. Однако, выбрав «Mac OS Extended» и выбрав опцию монтирования в других операционных системах, я могу установить разрешения с помощью chmod.
emptyset

Это сработало чудесно. Когда я монтирую защищенный том, я подключаюсь к определенной точке в моем домашнем каталоге. Я обнаружил, что мне пришлось заменить значение none на явное имя точки монтирования.
Алек Гик

1
Это работает, даже если /etc/fstabна новой OS X нет файла. Просто создайте новый etc/fstabфайл с вышеупомянутым
iggie

33

Добавление ключа от стандартного ввода работало для меня:

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

1
почему у этого нет ни одного возражения? он работает из коробки без монтирования, и вы все равно используете ssh-agent, не так ли?
pscheit

4
работает как шарм - должен быть принятый ответ
hdave

1
Это помогло мне. Используя WSL Ubuntu. Благодарность!
mydoglixu

7

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

Создайте 1MB пустой файл:

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

Отформатируйте его ext2 (нажмите Y, когда он говорит, что это не устройство):

mke2fs diskimg

Смонтируйте его где-нибудь (как root):

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

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


кажется, что нет более простого варианта
instanceof me

1
это так неправильно - но очень круто :)
Уоррен

1
@ Warren: я сделал предисловие с «сумасшедшим». :-D
Кайл Смит

2

Как насчет добавления StrictModes noв ваш /etc/ssh/sshd_config(и перезагрузить / перезапустить sshd)?

edit: упс, эта опция только на стороне сервера: /


1

Если я правильно помню, ssh-agentне проверяет ключевые разрешения. Так что это может сработать:

[-S "$ SSH_AUTH_SOCK"] || eval $ (ssh-agent)
ssh-add path / to / id_rsa

К вашему сведению, это не работает. ssh-addпроверяет права доступа к файлу
Кайл Смит

0

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


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