LINUX.ORG.RU
ФорумAdmin

SSH X11Forwarding + su (sudo) = «X11 connection rejected because of wrong authentication»

 , , , ,


0

1

Доброго времени суток!

Ситуация у меня следующая: есть сервер под управлением centos 6.3 и на нем работает сервер приложений jboss. Ос стоит в минимальной конфигурации т.к. нет смысла ставить все без надобности, лишь бы было. Сервер приложений работает как демон от пользователя jboss, специально созданного для этих целей. Для мониторинга и некоторого администрирования сервера приложений необходимо запускать приложение jconsole, которое работает в «иксах». Для этого я решил воспользоваться ssh с ключем -X для проброса «иксов» на удаленную машину.
Когда запускаю ssh -X root@удаленный_сервер_без_иксов, то вызвав jconsole все работает без проблем, за исключением того, что к серверу, запущенному от jboss подключиться не получится. В общем надо все это делать именно от пользователя jboss, что собственно я и пытался сделать, выполнив sudo -u jboss jconsole или же попробовав su jboss и дальше уже попытаться выполнить jconsole, но меня ждет одна и таже ошибка:

$ jconsole 
X11 connection rejected because of wrong authentication.
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.
        at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
        at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:110)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
        at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:119)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at java.awt.Toolkit$2.run(Toolkit.java:870)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:862)
        at javax.swing.UIManager.getSystemLookAndFeelClassName(UIManager.java:608)
        at sun.tools.jconsole.JConsole.<clinit>(JConsole.java:64)
Я понимаю, что тут надо бы было попробовать ssh -X jboss@удаленный_сервер_без_иксов, но пользователь jboss не имеет пароля и вообще создан только для запуска сервера приложений, с чем отлично и справляется:
groupadd -r jboss
useradd -r -M -g jboss jboss
у этого пользователя по определению не должно быть оболочки и под ним не стоит заходить. Под apache же мы не заходим...
Скорее всего я что-то не учел, прошу помочь разобраться как я могу и на елку влезть и ...

Заранее спасибо!


за исключением того, что к серверу, запущенному от jboss подключиться не получится

Надо разбираться почему? Что в логи пишет?

anton_jugatsu ★★★★
()

ssh -X root@удаленный_сервер_без_иксов
xhost +
sudo -u jboss jconsole

profit, йесс?

aol ★★★★★
()

А чего ты ожидал? Копируй $XAUTHORITY, проверяй на него права.

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)

либо ssh -Y что не хорошо

либо копать что не так делает xauth

Slackware_user ★★★★★
()
Ответ на: комментарий от vbv

Видимо я что-то не так понял снова, ибо:

$ ssh -X root@jb7as
Last login: Tue Feb  5 09:15:22 2013 from makpol
[root@jb7as ~]# export XAUTHORITY=~/.Xauthority
[root@jb7as ~]# su jboss
bash-4.1$ jconsole 
X11 connection rejected because of wrong authentication.
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.
        at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
        at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:110)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
        at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:119)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at java.awt.Toolkit$2.run(Toolkit.java:870)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:862)
        at javax.swing.UIManager.getSystemLookAndFeelClassName(UIManager.java:608)
        at sun.tools.jconsole.JConsole.<clinit>(JConsole.java:64)

MakPol
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.