Saya menggunakan Open SSH (OpenSSH_6.6.1p1, OpenSSL 1.0.1i 6 Agustus 2014) di Windows 8.1. Penerusan X11 tampaknya tidak berfungsi. Variabel lingkungan DISPLAY tampaknya tidak diatur.
Misalnya, jika saya menggunakan BitVise atau Putty untuk terhubung, dan menjalankan env, saya melihat:
[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
Jika saya menggunakan 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
Jawaban:
Sudahkah Anda menetapkan
DISPLAY
variabel lingkungan pada klien? Saya tidak yakin shell mana yang Anda gunakan, tetapi dengan turunan shell Bourne (seperti bash), silakan coba:Atau jika Anda menggunakan cmd.exe:
sumber
set DISPLAY=anything
diikuti olehssh -X user@remote
pengembalianCreateProcessW failed error:2 ssh_askpass: posix_spawn: No such file or directory Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Unsetting variabel lingkungan denganset DISPLAY=
memungkinkan saya untuk ssh berhasil lagi, tetapi tanpa bekerja penerusan X. Tidak masuk akal bagi saya bahwa pengaturan DISPLAY harus menyebabkan perangkat lunak meminta kata sandi saya dengan cara ini. github.com/PowerShell/Win32-OpenSSH/issues/1088 github.com/PowerShell/Win32-OpenSSH/issues/1088Ketika Anda menjalankan
ssh -X remotehost
dan AndaDISPLAY=localhost:10
disajikan ke host jarak jauh.ssh
mendengarkan port itu dan meneruskan lalu lintas kembali ke sistem panggilan, menggunakan nilai aslinyaDISPLAY
untuk menentukan alamat server.Mungkin pada sistem lokal Anda, Anda punya
DISPLAY=:0
. Atau jika belum, itulah yang sedang default. Ini menginstruksikan sistem lokal untuk menggunakan soket domain UNIX untuk berkomunikasi dengan layar. SayangnyaXming
pada Windows tidak mengatur soket domain UNIX sehinggassh
penerusan X11 Anda gagal dengan kesalahan semacam ini:Cara mengatasinya - setidaknya sejauh ini
Xming
- cukup sederhana. UbahDISPLAY
variabel untuk merujuk soket TCP yang mendengarkan daripada soket domain UNIX.Anda mungkin harus menyesuaikan
Xming
konfigurasi Anda untuk mendengarkan pada port TCP lokal 6000. Berikut adalah caranya saya mulaiXming
:Dan di sini ada bukti untuk mengkonfirmasi bahwa
Xming
mendengarkan di port tcp / 6000:sumber
localhost:0
.DISPLAY=:0
Adakah ide mengapa berfungsi dengan baik pada WSL + XMing untukxeyes
, tetapi tidak untukssh -X
? Apakahssh -X
mengartikan $ DISPLAY berbeda dari klien X11 lokal lainnya? Apakah klien X11 lain mundur secara otomatislocalhost:0
tetapissh -X
tidak?man X
situ tertulis bahwa nama host kosong di DISPLAY =: 0 berarti "Transportasi lokal yang paling efisien akan dipilih." Jadi mungkinssh -X
menggunakan algoritma yang berbeda untuk melakukan itu dibandingkan dengan mengatakanxeyes
?DISPLAY=:0
danssh -X
meneruskannya dengan senang hati.Dengan ssh di Windows10 dan Xming, saya sepertinya mendapatkan hasil "baik" (?) Dengan:
dan membuat objek C: \ dev \ tty misalnya dengan
dan menggunakan
ssh -Y
(bukanssh -X
).sumber