Какой инструмент можно использовать для хранения ключей ssh ​​и как его настроить?

Оба вызова mount в показанном коде требуют изменений. В первом вызове при создании монтирования можно не указывать флаг MS_SHARED; это вызывает вашу ошибку EINVAL. Вместо этого просто создайте монтирование без этого флага (, т. е. аргумент flagsдолжен быть равен 0 ). Это создаст новую точку монтирования с типом распространения по умолчанию. Это либо MS_SHARED, если родительское монтирование также имеет совместное распространение, либо тип распространения — MS_PRIVATE. (Подробнее см. в разделе ПРИМЕЧАНИЯ на странице руководства mount_namespaces(7).)

Во втором вызове mount()вам не нужен флаг MS_REMOUNT, и фактически, когда вы используете этот флаг, флаг MS_PRIVATEигнорируется. См., в частности, крепление (2)страницу руководства (,обратите внимание на слова «с проведением испытаний в порядке, указанном здесь»):

   A call to mount() performs one of a number  of  general  types  of
   operation,  depending  on  the  bits specified in mountflags.  The
   choice of which operation to perform is determined by testing  the
   bits  set  in  mountflags,  with  the tests being conducted in the
   order listed here:

   *  Remount an existing mount: mountflags includes MS_REMOUNT.

   *  Create a bind mount: mountflags includes MS_BIND.

   *  Change the propagation type of an  existing  mount:  mountflags
      includes  one of MS_SHARED, MS_PRIVATE, MS_SLAVE, or MS_UNBIND‐
      ABLE.

   *  Move an existing mount to a new location:  mountflags  includes
      MS_MOVE.

   *  Create  a  new  mount:  mountflags  includes  none of the above
      flags.

Просто удалите флаг MS_REMOUNTво втором вызове mount(), и вы должны получить результат, который, (я думаю, )вам нужен.

Я не совсем уверен в причинах, по которым требуется этот двухэтапный -процесс, но я подозреваю, что причина в ограничениях дизайна mount()API. В этот API постоянно добавлялись части на протяжении многих лет (, см. приведенный выше текст для доказательства этого ), и к тому времени, когда была добавлена ​​функция распространения монтирования (примерно в 2005 году ), это, вероятно, было единственный обратно совместимый способ сделать это.

0
23.01.2021, 09:06
1 ответ

Установите модуль pam_sshPAM. Идея похожа, но она работает только с SSH-агентом — нет промежуточного набора ключей и нет общих функций хранения паролей. Вместо этого ваш пароль для входа будет напрямую использоваться в качестве парольной фразы ключа SSH для загрузки ~/.ssh/id_rsa, а также любых ключей, которые вы ввели в ~/.ssh/session-keys.d/*.

Модуль pam _ssh будет автоматически поддерживать один экземпляр агента ssh -во всех сеансах.


(Обратите внимание, что установка pam _ssh в Debian также будет иметь побочный эффект в виде активации пространства имен pam _, которое дает каждому пользователю уникальный экземпляр /tmp — это может вызвать некоторую путаницу.)


Тем не менее, по-прежнему должна быть возможность использовать GNOME Keyring без графического пользовательского интерфейса — модуль pam_gnome_keyringне ограничивается использованием GDM; его также можно активировать для входа в систему с помощью текстового -. (Хотя его нужно вызывать с немного другими параметрами, для немедленной инициализации демона набора ключей -вместо того, чтобы ждать, пока GNOME сделает это позже.)

0
18.03.2021, 22:35

Теги

Похожие вопросы