У меня есть зашифрованный том FAT (для совместимости), содержащий файл с секретным ключом и другие конфиденциальные данные.
Я хочу подключиться к моему серверу через SSH, используя свой закрытый ключ, но, конечно же, поскольку FAT не поддерживает разрешение файлов, он игнорирует мой ключ, говоря, что его разрешения слишком открыты.
Итак, в настоящее время я копирую его в другое место на своем жестком диске с разрешениями 0600, использую его, а затем безопасно стираю, но это боль.
Есть ли способ обойти проверку разрешений в этой самой командной строке ssh / scp?
редактировать: Precision: это был том TrueCrypt на OS X.
О решении: Принятый ниже ответ решил мою проблему (используя файл ключа SSH, расположенный на томе TrueCrypt с Mac OS X), но это обходной путь. Похоже, нет возможности «обойти проверку прав доступа ключевого файла».
Добавление ключа из stdin сработало для меня:
cat /path/to/id_rsa | ssh-add -k -
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
Для создания / редактирования этого файла вам необходимо иметь root-права (его нет в стандартной установке OSX):
sudo vim /etc/fstab
В следующий раз, когда вы смонтируете том, у него будет разрешение 700 и идентификатор владельца 501.
Это также работает с USB-накопителями (которые обычно тоже отформатированы в FAT).
В качестве безумного обходного пути вы можете создать образ диска тома ext2, содержащий ваш закрытый ключ, и смонтировать его как устройство цикла, а затем использовать свой ssh-ключ оттуда.
Создайте пустой файл размером 1 МБ:
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.
А как насчет добавления StrictModes no
на ваш /etc/ssh/sshd_config
(и перезагрузить / перезапустить sshd)?
изменить: ой, эта опция только на стороне сервера: /
Если я правильно помню, ssh-agent
не проверяет ключевые разрешения. Так что это может сработать:
[ -S "$SSH_AUTH_SOCK" ] || eval $(ssh-agent)
ssh-add path/to/id_rsa
Можете ли вы изменить параметры монтирования (umask
, uid
и gid
) в соответствии с?