Как я могу мешать ssh пытаться создать ~/.ssh?

У меня была подобная проблема, и при установке LANG в .bash_profile не добивался цели, я узнал, что в Gnome, локаль по умолчанию может быть установлена в начале сессии с экрана входа в систему GDM. Это может быть сделано без корневого доступа.

4
25.10.2013, 21:42
2 ответа

Повторно смонтируйте корневое чтение-запись файловой системы временно и сделайте символьную ссылку для .ssh, который указывает где-нибудь, где ssh может записать. Таким образом, можно также сделать, вещам нравится, добавляют, что ssh вводит будущее, или позвольте новый known_hosts, не имея необходимость переходить к дополнительным напряженным шагам. И Вы могли избавиться от Вашего -o UserKnownHostsFile опция одновременно.

5
27.01.2020, 20:49
  • 1
    +1, простой и эффективный. Примечание стороны другой подход в том же духе просто изменяет определенное местоположение пользователя для их корневого каталога, чтобы быть rw смонтированное пространство. –  Jimmy Hoffa 25.10.2013, 23:03
  • 2
    Ваше предложение является, вероятно, способом пойти. По некоторым причинам я принял это /root мог бы быть воссоздан от других данных в каждой перезагрузке, но я никогда на самом деле проверил это. Я проверю это и возвращу Вам :) –  Der Hochstapler 26.10.2013, 03:57
  • 3
    +oliversalzburg, Который унес бы дыру в моей идее. Но Вы могли работать вокруг что, если Вы узнаете, где это воссоздает /root от и изменение оригинала. –  kurtm 26.10.2013, 04:05

Упомянутое здесь решение хорошее, но я искал такое, которое не требовало бы наличия ~/.ssh или попытки его создания (, работающего в Windows, распространяющего встроенный MSYS ssh.exe, но работает на других машинах без MSYS/Cygwin ).

К сожалению, кажется, что подпрограмма жестко запрограммирована в исходном коде, независимо от того, какое значение вы присвоитеUserKnownHostsFile:

    r = snprintf(buf, sizeof buf, "%s%s%s", pw->pw_dir,
        strcmp(pw->pw_dir, "/") ? "/" : "", _PATH_SSH_USER_DIR);
    if (r > 0 && (size_t)r < sizeof(buf) && stat(buf, &st) < 0) {
#ifdef WITH_SELINUX
        ssh_selinux_setfscreatecon(buf);
#endif
        if (mkdir(buf, 0700) < 0)
            error("Could not create directory '%.200s'.",
                buf);
#ifdef WITH_SELINUX
        ssh_selinux_setfscreatecon(NULL);
#endif
    }

Однако интересно отметить, что он пытается расширить переменную окружения $HOME, чтобы определить домашний каталог. Поскольку размер буфера составляет около 256 байт, мы можем фактически обойти условие if, переполнив буфер (, определяющий HOME, строкой длиннее 256 байт ), например.:

export HOME=$HOME/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././.
7
27.01.2020, 20:49

Теги

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