Я использую Open SSH (OpenSSH_6.6.1p1, OpenSSL 1.0.1i 6 августа 2014 г.) в Windows 8.1. Пересылка X11 не работает. Переменная окружения DISPLAY не установлена.
Например, если я использую BitVise или Putty для подключения и запускаю env, я вижу:
[marko@vm:~]$ env
XDG_SESSION_ID=6
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=192.168.1.174 61102 22
SSH_TTY=/dev/pts/0
USER=marko
MAIL=/var/mail/marko
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/marko
LANG=en_CA.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
SHLVL=1
HOME=/home/marko
LANGUAGE=en_CA:en
LOGNAME=marko
SSH_CONNECTION=192.168.1.174 61102 192.168.1.64 22
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=localhost:10.0
_=/usr/bin/env
Если я вместо этого использую OpenSSH (ssh -X marko @ vm):
[marko@vm:~]$ env
XDG_SESSION_ID=8
TERM=cygwin
SHELL=/bin/bash
SSH_CLIENT=192.168.1.174 61150 22
SSH_TTY=/dev/pts/1
USER=marko
MAIL=/var/mail/marko
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/marko
LANG=en_CA.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
SHLVL=1
HOME=/home/marko
LANGUAGE=en_CA:en
LOGNAME=marko
SSH_CONNECTION=192.168.1.174 61150 192.168.1.64 22
XDG_RUNTIME_DIR=/run/user/1000
_=/usr/bin/env
Ответы:
Вы установили
DISPLAY
переменную среды на клиенте? Я не уверен, какую оболочку вы используете, но с производной оболочки Bourne (например, bash) попробуйте:Или, если вы используете cmd.exe:
источник
set DISPLAY=anything
с последующимssh -X user@remote
возвратомCreateProcessW failed error:2 ssh_askpass: posix_spawn: No such file or directory Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Unsetting переменной окружения с помощьюset DISPLAY=
позволяет мне снова успешно выполнить ssh, но без работы X forwarding. Для меня не имеет никакого смысла, что настройка DISPLAY должна заставить программное обеспечение запрашивать мой пароль таким образом. github.com/PowerShell/Win32-OpenSSH/issues/1088 github.com/PowerShell/Win32-OpenSSH/issues/1088Когда вы запускаете,
ssh -X remotehost
и вы получаетеDISPLAY=localhost:10
удаленный хост.ssh
прослушивает этот порт и перенаправляет трафик обратно в вызывающую систему, используя его исходное значениеDISPLAY
для определения адреса сервера.Вполне вероятно, что в вашей локальной системе у вас есть
DISPLAY=:0
. Или, если вы этого не сделали, это то, что он по умолчанию. Это указывает локальной системе использовать сокет домена UNIX для связи с дисплеем. К сожалению,Xming
в Windows не установлен этот сокет домена UNIX, поэтому вашssh
пересылка X11 завершается с ошибкой такого рода:Исправить - по крайней мере, насколько это возможно
Xming
- довольно просто. ИзменитеDISPLAY
переменную так, чтобы она ссылалась на прослушивающий сокет TCP, а не на сокет домена UNIX.Возможно, вам придется адаптировать свою
Xming
конфигурацию для прослушивания на локальном TCP-порту 6000. Вот как я начинаюXming
:И вот подтверждение того, что
Xming
прослушивает порт tcp / 6000:источник
localhost:0
.DISPLAY=:0
прекрасно работает на WSL + XMing дляxeyes
, но не дляssh -X
? Отличается лиssh -X
интерпретация $ DISPLAY от других локальных клиентов X11? Отвечают ли другие клиенты X11 автоматически,localhost:0
ноssh -X
нет?man X
нем написано, что пустое имя хоста в DISPLAY =: 0 означает «Будет выбран наиболее эффективный локальный транспорт». Так может быть,ssh -X
использует другой алгоритм, чтобы сделать это по сравнению с сказатьxeyes
?DISPLAY=:0
иssh -X
отправляю это счастливо.С ssh в Windows10 и Xming я, кажется, получаю "хорошие" (?) Результаты с:
и создание объекта C: \ dev \ tty, например, с
и с помощью
ssh -Y
(неssh -X
).источник