3

У меня есть каталог .ssh внутри зашифрованного разреженного изображения. то есть ~/.ssh является символической ссылкой на /Volumes/VolumeName/.ssh

Проблема в том, что когда я пытаюсь подключиться к этой машине с помощью открытого ключа, я вижу следующее сообщение об ошибке в /var/log/secure.log:

Authentication refused: bad ownership or modes for directory /Volumes

Любой способ решить это в чистом виде?

Обновить:

Права доступа к ~/.ssh и authorized_keys верны:

> ls -ld ~
drwxr-xr-x+ 77 vitaly  staff  2618 Mar 16 08:22 /Users/vitaly/
> ls -l ~/.ssh
lrwxr-xr-x  1 vitaly  staff  22 Mar 15 23:48 /Users/vitaly/.ssh@ -> /Volumes/Astrails/.ssh
> ls -ld /Volumes/Astrails/.ssh 
drwx------  3 vitaly  staff  646 Mar 15 23:46 /Volumes/Astrails/.ssh/
> ls -ld /Volumes/Astrails/
drwx--x--x@ 18 vitaly  staff  1360 Jan 12 22:05 /Volumes/Astrails//
> ls -ld /Volumes/
drwxrwxrwt@ 5 root  admin  170 Mar 15 20:38 /Volumes//

Сообщение об ошибке говорит, что проблема с /Volumes, но я не вижу проблемы.

Да, это o +w, но это также +t, который должен быть в порядке, но, очевидно, это не так.

Проблема в том, что я не могу изменить / разрешения томов (или, скорее, не должен), но я хочу, чтобы вход с открытым ключом работал.

Сначала я подумал о монтировании образа в другом месте, а затем /Volumes, но он автоматически настраивается при входе в систему при стандартном монтировании OSX. Я спросил об этом здесь: Как изменить каталог монтирования образа диска по умолчанию на osx . Единственный ответ, который я получил, это «Вы не можете»;)

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

3 ответа3

3

$ man sshd_config ; ответ здесь

 StrictModes
         Specifies whether sshd(8) should check file modes and
         ownership of the user's files and home directory before
         accepting login.  This is normally desirable because
         novices sometimes accidentally leave their directory or
         files world-writable.  The default is ``yes''.

$ sudo emacs /etc/sshd_config ; отключить режим проверки

-   #StrictModes yes
+   StrictModes no

$ /usr/sbin/sshd ; перезапустить sshd

Только не забудьте сохранить ваши права доступа к файлу .ssh.

0

Теперь я не уверен, как это сделать конкретно в OS/X, но, поскольку OS/X является системой BSD, она должна быть похожа на FreeBSD.

Вот как вы это делаете на FreeBSD.

sshd не будет следовать символическим ссылкам для своих ключевых файлов. Это сделано специально для безопасности. Итак, вам нужно изменить, где sshd пытается искать ключевые файлы.

Вам нужно будет изменить файл /etc/ssh/sshd_config и найти запись AuthorizedKeysFile . По умолчанию используется .ssh/authorized_keys (который относится к домашнему каталогу пользователя).

Измените запись на полный (абсолютный) путь к фактическому местоположению файла авторизованного ключа. Существует определенное количество доступных замен токенов - наиболее полезным является %u который заменяется именем пользователя, вошедшего в систему.

Например:

AuthorizedKeysFile /Volumes/EncryptedData/%u/.ssh/authorized_keys

даст вам /Volumes/EncryptedData/vitaly/.ssh/authorized_keys

Если когда-либо только один пользователь будет использовать систему, то вполне безопасно опустить расширение% u и просто использовать один путь - но будьте осторожны: если вы добавите больше пользователей, они все будут использовать один и тот же файл ключей, так что Хорошая идея - использовать расширение имени пользователя с самого начала, только если вы не хотите добавлять пользователя через 6 месяцев и забыть, что вы сделали это.

Итак, если у вас есть файл /etc /ssh /sshd_config в вашей системе, тогда этот метод должен работать.

0

Убедитесь, что разрешения правильные. Смотрите здесь

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .