SSH аутентификация с открытым / закрытым ключом из подключенного домашнего каталога AFS - PullRequest
2 голосов
/ 24 января 2012

Я пытаюсь настроить доступ к git-серверу под управлением gitolite с компьютера OS X с домашним каталогом, смонтированным AFS.Разрешения Unix игнорируются AFS, и, исходя из моего понимания проблемы, в AFS есть исправление подделки разрешений OS X, которое устанавливает все разрешения на 666, так что Finder может по-прежнему открывать файлы локально.

Когда выпопытайтесь пройти аутентификацию на git-сервере, который вы получите

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @ 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
Permissions 0666 for '$HOME/.ssh/id_dsa' are too open

, потому что ssh считает, что закрытый ключ слишком виден (это не так, поскольку разрешения фактически управляются списками ACL AFS).chmod не влияет на локальные разрешения Unix.

Вот нить Nabble об обнаруженной мной проблеме, которая не сильно помогла:

http://old.nabble.com/User-friendly-Mac-OS-X-patch-causes-SSH-hardship-tt8851573.html#a8851573

кто-нибудь знает работу вокруг?Есть ли способ фальсифицировать разрешения .ssh на что-то вроде 700?

Ответы [ 2 ]

0 голосов
/ 02 августа 2015

Соответствующий исходный код из версии 6.6 утилиты OpenSSH ssh приведен ниже. По сути, ssh требует, чтобы файл ключа был в режиме 0600 (или более строгом), если файл принадлежит пользователю, запустившему ssh. Если файл принадлежит какому-то другому идентификатору, он может иметь любые разрешения, позволяющие его читать.

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

Если у кого-то есть необходимые навыки, более практичным решением было бы создание настраиваемой версии ssh из переносимого исходного кода .

    if (fstat(fd, &st) < 0)
            return 0;
    /*
     * if a key owned by the user is accessed, then we check the
     * permissions of the file. if the key owned by a different user,
     * then we don't care.
     */
#ifdef HAVE_CYGWIN
    if (check_ntsec(filename))
#endif
    if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
            error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
            error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");
            error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
            error("Permissions 0%3.3o for '%s' are too open.",
                (u_int)st.st_mode & 0777, filename);
            error("It is required that your private key files are NOT accessible by others.");
            error("This private key will be ignored.");
            return 0;
    }
    return 1;
0 голосов
/ 25 июля 2012

Вы можете попробовать изменить файл / etc / ssh_config, чтобы использовать указанный файл идентификации. Вставить что-то подобное, возможно:

Host <gitolite-server-host>
  IdentityFile <identity-file-location> # this defaults to your ~/.ssh/id_rsa
  User <gitolite-username>
...