Соответствующий исходный код из версии 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;