¿Cómo evito que el inicio de sesión remoto ssh rompa dbus?

10

Estoy ejecutando openSUSE 11.3 en mi estación de trabajo en el trabajo con KDE, no tengo acceso de root a él. El shell predeterminado se ha establecido en tcsh. Cuando inicie sesión en mi estación de trabajo e inicie sesión de forma remota desde mi MacBook con OS X 10.6 usando ssh, así:

ssh -X -C [email protected]

todo funciona bien; sin embargo, una vez que termino, recibo errores DBUS en la sesión de mi estación de trabajo cada vez que intento iniciar algo con una GUI, incluido, desafortunadamente, el cuadro de diálogo de cierre de sesión desde el panel de la barra de tareas. Me estoy cansando de matar startkdesolo para cerrar sesión en estas situaciones.

En línea, he encontrado muchas instrucciones para conectarme a una sesión dbus existente usando ssh, pero me gustaría hacer lo contrario, dejar la sesión dbus existente completamente intacta por la sesión de inicio de sesión remoto ssh.

Si lo hago

ssh -X -C [email protected] dbus-launch konsole

eso funciona, por lo que solo el shell de inicio de sesión interactivo está rompiendo dbus. ¿Cómo debo modificar ~/.cshrc? Tenga en cuenta que no tengo permiso para modificar /etc/cshrc, /etc/loginetc.

Puedo enumerar los contenidos de esos archivos aquí, si es necesario.

Actualizar:

Aquí hay un gran archivo tar con todos los scripts que pude encontrar:

http://dl.dropbox.com/u/17203983/cshrc.tgz

usuario1079118
fuente
Sí, publique el contenido de los archivos de inicialización que marcan la diferencia. Además, describa con precisión qué comandos interrumpen la sesión local (¿se está ejecutando dbus-launch konsoleque interrumpe la sesión local? ¿O simplemente un inicio de sesión ssh interactivo donde presiona exitinmediatamente?).
Gilles 'SO- deja de ser malvado'
@Gilles Hmm, traté de editar mi pregunta con el contenido de los archivos, pero hay demasiados caracteres. Descubriré cómo y dónde puedo subirlos. Mientras tanto, dbus-launch konsole no interrumpe la sesión local, mientras que un inicio de sesión ssh interactivo desde la línea de comando seguido inmediatamente por la salida lo hará. De hecho, incluso solo hacer un rsync también rompe dbus (para mí parece extraño que rsync ejecute los scripts de inicio de sesión de forma predeterminada, pero lo hace).
user1079118
Prueba pastebin.com para archivos grandes.
Gilles 'SO- deja de ser malvado'

Respuestas:

1

En realidad, las sesiones dbus son por máquina y por pantalla X.

Cuando realiza una sesión SSH remota, utiliza una pantalla X11 diferente (normalmente localhost: 10)

Si mata todos los dbus y lo inicia en la sesión SSH, funciona ... para la sesión SSH. Pero obviamente rompe todas las otras sesiones de dbus en la máquina.

Lo que se necesita es verificar si ya existe una sesión para la máquina + pantalla, si es así, úsela, si no, inicie un nuevo dbus para esa combinación e informe a la sesión al respecto.

Mire https://unix.stackexchange.com/a/188877/32769 para ver un bloque bash que puede poner en su archivo $ HOME / .bash_profile para hacer esas pruebas y hacer lo correcto.

Pablo Saratxaga
fuente