LINUX.ORG.RU
ФорумAdmin

X11 connection rejected because of wrong authentication


0

0

не запускаются X-овые приложения из chroot за ssh %( т.е. сначала делаю ssh на соседний комп (там xcalc запускается) потом c смопощью скрипла, приведенного ниже, вхожу в chroot-ное окружение, где xcalc и все осталье X-овые программки говорят либо, что не могут открыть дисплей, либо (если дисплей указать тот, который получил после ссх) субжевое сообщение... помогите разобраться :)

#!/bin/sh
#
# This script runs a shell inside chroot as a 'build' user.  If any arguments
# supplied, those are the command to be run, otherwise the interactive shell
# will be invoked.
#

CHROOT_PATH=$0
case "$0" in
    /*) CHROOT_PATH=$(dirname "$0");;
    *)  CHROOT_PATH=$(dirname $(pwd)/"$0");;
esac

HTTP_PROXY=
FTP_PROXY=

# Quote argument for shell.
# Usage example: eval "$var_name=\"$(quote_shell "$var_value")\""
quote_shell() {
        local out="$*"
        if [ -z "${out##*[\"\$\`\\\\]*}" ]; then
                out="$(printf %s "$out" |sed -e 's/["$`\\]/\\&/g')" ||
                        return 1
        fi
        printf %s "$out"
    #` # Hey, Emacs, your syntax highlighter is wrooong!
}

quote_args() {
    for i in "$@"; do
        echo -n \"$(quote_shell "$i")\"
        echo -n " "
    done
    echo
}

if [ "$#" -eq 0 ]; then
    # Interactive shell
    SU_CMD=-i
else
    # Single command. Double quoting to pass through two su(1) invocations. Blergh.
    S=$(quote_args "$@")
    QS=$(quote_args "$S")
    SU_CMD="-c $QS"
fi

if [ -n "$HTTP_PROXY" ]; then
    ENV_EXPORT="http_proxy=$HTTP_PROXY; export http_proxy;"
fi
if [ -n "$FTP_PROXY" ]; then
    ENV_EXPORT="$ENV_EXPORT ftp_proxy=$FTP_PROXY; export ftp_proxy;"
fi

if [ -f /proc/cpuinfo ]; then
    NCPUS=$(grep -c '^processor' /proc/cpuinfo)
    ENV_EXPORT="$ENV_EXPORT DEB_BUILD_OPTIONS=parallel=$NCPUS"
fi

exec sudo chroot "$CHROOT_PATH" su - -l -c "$ENV_EXPORT exec \$SHELL $SU_CMD" build

Ответ на: комментарий от sdio

есго там изначально не было, я поставил из пакетов. и xauth ругался либо аналогично, либо

build@metamini:~$ randomkey=`/usr/bin/ksh -c 'echo $(( $RANDOM * $RANDOM * 2 ))'`
build@metamini:~$ echo $randomkey 
965168700
build@metamini:~$ xauth add localhost:10 . $randomkey
xauth: (argv):1:  key contains odd number of or non-hex characters
и в чруте нет ссхд нужно поставить?

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

Если вы заходите под обычным пользователем, а потом уходите в chroot, то нужно просто копировать в chroot файл ~/.Xauthority, а chroot правильно устанавливать переменные среды DISPLAY и XAUTHORITY, последняя должна содержать в себе путь к файлу .Xauthority (относительно chroot корня).

Или можно с помощью xauth извлекать ключ из ~/.Xauthority и заносить его в /chroot/.Xauthority, но, аналогично, нужно правильно устанавливать переменные среды.

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

sshd в chroot не нужен. Схема работы ssh -X очень простая. После логина процесс sshd начинает слушать порт 6010 (или выше) на localhost, выставляет переменную DISPLAY и создаёт (с помощью) xauth запись в файле ~/.Xauthority. Причём создаёт её с помощью команды generate, то есть ключ это не рандомное число, а что-то, создаваемое с помощью generate, вытаскиваемое из файла с помощью extract (nextract) и записываемое в файл с помощью add `xauth extract`.

X-клиенты читают переменную среды DISPLAY, понимают, что нужно коннектиться к localhost:6010 и берут из файла .Xauthority соотв. запись.

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

спасибо большое! :)

я утром уже узнал, при правильно установленом DISPLAY в чруте, подложить туда же (в хомяк) .Xauthority :)

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