¿Cómo puedo evitar que ssh intente crear ~ / .ssh?

Estoy trabajando en una copy de security basada en rsync para un sistema FreeNAS.

Parte del process de respaldo implica iniciar session en el sistema remoto que sirve como almacenamiento de respaldo. Cada vez que hago eso, obtengo el post

Could not create directory '/root/.ssh'. 

Supongo que esto se debe a que /root es de solo lectura, porque cuando bash crear ~/.ssh manualmente, recibo:

 mkdir: /root/.ssh: Read-only file system 

Debido a esto, ya he movido el file known_hosts más apropiado para mi process de respaldo y estoy usando -o UserKnownHostsFile para resolver cualquier problema relacionado con eso.

Sin embargo, ssh todavía intenta crear la carpeta ~/.ssh cuando lo invoco. ¿Cómo puedo conseguir que no intente crear la carpeta?

Vuelva a montar el sistema de files raíz de lectura-escritura temporalmente y cree un enlace simbólico para .ssh que apunte a algún lugar donde ssh pueda escribir. De esta manera, también puede hacer cosas como agregar keys ssh en el futuro, o permitir nuevos conocidos_nuevos sin tener que ir a pasos extenuantes adicionales. Y podría deshacerse de su opción -o UserKnownHostsFile al mismo time.

La solución mencionada aquí es buena, pero estaba buscando una que no requiriera ~ / .ssh para estar presente o requiriera un bash para que se creara (ejecutándose en Windows, distribuyendo un MSYS construido ssh.exe, pero ejecutándose en otras máquinas sin MSYS / Cygwin instalado).

Desafortunadamente, parece que la rutina está codificada en el código fuente, independientemente del valor que le dé a 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 } 

Sin embargo, es interesante observar que intenta expandir la variable de entorno $HOME para determinar el directory de inicio. Dado que el búfer está alnetworkingedor de 256 bytes, podemos omitir la condición if desbordando el búfer (definiendo HOME a una cadena de más de 256 bytes), por ejemplo:

 export HOME=$HOME/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././.