Saya memiliki mesin yang menjalankan Ubuntu yang saya SSH dari dari mesin Fedora 14 saya. Saya ingin meneruskan X dari mesin Ubuntu kembali ke Fedora sehingga saya dapat menjalankan program grafis dari jarak jauh. Kedua mesin berada di LAN.
Saya tahu bahwa -X
opsi ini memungkinkan penerusan X11 di SSH, tetapi saya merasa seperti saya kehilangan beberapa langkah.
Apa langkah-langkah yang diperlukan untuk meneruskan X dari mesin Ubuntu ke Fedora melalui SSH?
ssh
xorg
xforwarding
Tuan Shickadance
sumber
sumber
Jawaban:
Penerusan X11 perlu diaktifkan di sisi klien dan sisi server.
Di sisi klien , opsi
-X
(kapital X) untukssh
mengaktifkan penerusan X11, dan Anda dapat menjadikan ini default (untuk semua koneksi atau untuk koneksi khusus) denganForwardX11 yes
in~/.ssh/config
.Di sisi server ,
X11Forwarding yes
harus ditentukan dalam/etc/ssh/sshd_config
. Perhatikan bahwa defaultnya adalah penerusan (beberapa distribusi menyalakannya dalam pengaturan standarnya/etc/ssh/sshd_config
), dan bahwa pengguna tidak dapat mengesampingkan pengaturan ini.The
xauth
Program harus diinstal pada sisi server. Jika ada program X11 di sana, sangat mungkinxauth
ada di sana. Dalam kasus yang tidak mungkinxauth
diinstal di lokasi yang tidak standar, dapat dipanggil melalui~/.ssh/rc
(di server!).Perhatikan bahwa Anda tidak perlu mengatur variabel lingkungan apa pun di server.
DISPLAY
danXAUTHORITY
secara otomatis akan diatur ke nilai yang tepat. Jika Anda menjalankan ssh danDISPLAY
tidak diatur, itu berarti ssh tidak meneruskan koneksi X11.Untuk mengkonfirmasi bahwa ssh meneruskan X11, periksa baris yang berisi
Requesting X11 forwarding
dalamssh -v -X
output. Perhatikan bahwa server tidak akan membalas dengan cara apa pun, tindakan pencegahan keamanan menyembunyikan detail dari penyerang potensial.sumber
xhost +
.xhost
berasal dari era yang lebih lembut ketika memiliki mesin yang terhubung ke jaringan berarti Anda dapat dipercaya.xhost +
berarti siapa pun yang dapat menipu IP Anda dapat mengendalikan sesi X server Anda.ssh -X
akan mengatur semua otorisasi yang diperlukan. Jika penerusan X11 dinonaktifkan di konfigurasi server, bicarakan dengan administrator Anda; jika itu tidak berhasil, lihat Meneruskan X11 melalui SSH jika konfigurasi server tidak mengizinkannya .~/.ssh/config
dan/etc/ssh/sshd_config
di tempat yang sama. Saya tidak tahu apakah itu file yang berbeda atau hanya perubahan nomenklatur..Xauthority
file. Jika menggunakan Red Hat atau sistem lain dengan SELinux, periksa konteks SELinux, lihat unix.stackexchange.com/questions/36540/…ssh -X
menjalankanxterm &
untuk mendapatkan terminal grafis sebagai ujian utama untuk melihat apakah itu berfungsi.Untuk mendapatkan penerusan X11 bekerja lebih dari ssh, Anda perlu 3 hal di tempat.
Jika Anda memiliki # 1 dan # 2 di tempat tetapi tidak ada # 3, maka Anda akan berakhir dengan variabel lingkungan DISPLAY yang kosong.
Sup-ke-kacang, inilah cara agar penerusan X11 berfungsi.
Di server Anda, pastikan / etc / ssh / sshd_config berisi:
Anda mungkin perlu SIGHUP sshd sehingga mengambil perubahan ini.
Di server Anda, pastikan Anda telah menginstal xauth.
Jika Anda belum menginstal xauth, Anda akan mengalami masalah "kosong DISPLAY environment variable".
Di klien Anda, sambungkan ke server Anda. Pastikan untuk memberitahu ssh untuk mengizinkan penerusan X11. aku lebih memilih
tapi kamu mungkin suka
atau Anda dapat mengatur ini di ~ / .ssh / config Anda.
Saya berlari ke variabel lingkungan DISPLAY kosong ini sebelumnya hari ini ketika ssh'ing ke server baru yang saya tidak kelola. Melacak bagian xauth yang hilang cukup menyenangkan. Inilah yang saya lakukan, dan apa yang dapat Anda lakukan juga.
Di workstation lokal saya, di mana saya seorang administrator, saya memverifikasi bahwa / etc / ssh / sshd_config telah diatur untuk meneruskan X11. Ketika saya ssh -X kembali ke localhost, saya mendapatkan DISPLAY saya diatur dengan benar.
Memaksa DISPLAY untuk tidak disetel tidak terlalu sulit. Saya hanya perlu melihat apa yang sshd dan ssh lakukan untuk mengaturnya dengan benar. Inilah hasil lengkap dari semua yang saya lakukan di sepanjang jalan.
Alih-alih menggunakan sudo untuk memaksa menyalin file ssh_host_ {dsa, rsa} _key saya ke tempatnya, saya menggunakan ssh-keygen untuk membuat yang dummy untuk saya sendiri.
Bilas-dan-ulangi dengan -t dsa:
Edit ~ / dummy-sshd / sshd_config untuk menunjuk ke file kunci ssh_host baru yang benar.
Jalankan sshd pada port baru dalam mode non-detach:
Aduh, lebih baik perbaiki jalur itu:
Pop terminal baru dan ssh in ke localhost di port 50505:
Lihatlah tiga baris terakhir di sana. Saya kebetulan memiliki DISPLAY yang ditetapkan, dan memiliki dua baris yang tampak bagus dari / usr / bin / xauth.
Dari sana adalah permainan anak-anak untuk memindahkan / usr / bin / xauth ke /usr/bin/xauth.old saya, lepaskan sambungan dari ssh dan hentikan sshd, kemudian jalankan sshd dan ssh kembali ke localhost.
Ketika / usr / bin / xauth hilang, saya tidak melihat DISPLAY tercermin di lingkungan saya.
Tidak ada yang brilian terjadi di sini. Sebagian besar saya beruntung dalam memilih pendekatan yang waras untuk mencoba mereproduksi ini di mesin lokal saya.
sumber
export DISPLAY=:10
. Saya tidak pernah menebak jumlah tampilan itu.Pastikan bahwa:
xauth
menginstal di server (lihat:xauth info
/xauth list
).Di server
/etc/ssh/sshd_config
file Anda memiliki baris berikut:Di sisi klien,
~/.ssh/config
file Anda memiliki baris berikut:Di sisi klien, Anda telah menginstal X server (mis. MacOS: XQuartz; Windows: Xming).
Kemudian untuk melakukan penerusan X11 menggunakan SSH, Anda perlu menambahkan
-X
ssh
perintah Anda , misalnyakemudian verifikasi bahwa Anda
DISPLAY
adalah tidak kosong:Jika ya, maka memiliki parameter verbose untuk ssh (
-v
), periksa apakah ada peringatan, misalnyaJika Anda punya X11 yang tidak dipercaya seperti yang ditunjukkan di atas, maka coba
-Y
panji sebagai gantinya (jika Anda mempercayai tuan rumah):Lihat: Apa yang dimaksud dengan "Peringatan: penyiapan penerusan X11 tidak terpercaya: data kunci xauth tidak dihasilkan" artinya ketika ssh'ing dengan -X?
Jika Anda telah memperingatkan: Tidak ada data xauth , Anda dapat mencoba membuat
.Xauthority
file baru , misLihat: Membuat / membangun kembali file .Xauthority baru
Jika Anda mendapat peringatan berbeda dari di atas, ikuti petunjuk selanjutnya.
sumber
Cara mengatasinya adalah menambahkan baris ini ke
/etc/ssh/sshd_config
:https://joshua.hoblitt.com/rtfm/2013/04/how_to_fix_x11_forwarding_request_failed_on_channel_0/
sumber
Membiarkan Ubuntu bash di Windows 10 berjalan
ssh -X
untuk mendapatkan lingkungan GUI di server jauhInstal semua yang berikut ini. Di Jendela, instal
Xming
. Di Ubuntu bash, gunakansudo apt install
untuk menginstalssh xauth xorg
.Pergi ke folder berisi
ssh_config
file, milikku/etc/ssh
.Edit
ssh_config
sebagai administrator (USEsudo
). Di dalamssh_config
, menghapus hash#
dalam garisForwardAgent
,ForwardX11
,ForwardX11Trusted
, dan mengatur argumen yang sesuai untukyes
.Dalam
ssh_config
file, hapus hash depan#
sebelumPort 22
danProtocol 2
, dan juga tambahkan baris baru di akhir file untuk menyatakan lokasi file xauthXauthLocaion /usr/bin/xauth
,, ingatlah menulis path file xauth Anda sendiri.Sekarang karena kita sudah selesai mengedit
ssh_config
file, simpan ketika kita meninggalkan editor. Sekarang buka folder~
atau$HOME
, tambahkanexport DISPLAY=localhost:0
ke.bashrc
file Anda dan simpan.Kami hampir selesai. Mulai ulang shell bash Anda, buka
Xming
program Anda dan gunakanssh -X yourusername@yourhost
. Kemudian nikmati lingkungan GUI.Masalahnya juga ada di subsistem Ubuntu di Windows, dan tautannya ada di
https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776
sumber
Tambahkan
X11UseLocalhost no
ke/etc/ssh/sshd_config
dan mulai ulang server SSH.Jika Anda tidak mendapatkan DISPLAY, periksa apakah xauth diinstal dengan benar dan kemudian coba lagi.
RHE / CEntos tidak memiliki masalah ini, ini adalah masalah Ubuntu!
sumber
Bagi saya masalahnya adalah opsi mount nodev untuk / sistem file tmp. X11 membutuhkan file khusus untuk dibuat di sana.
Jadi periksa apa saja opsi mount untuk sistem file / tmp jika Anda menggunakan partisi atau disk terpisah untuk itu.
sumber
Untuk menambah jawaban luar biasa sebelumnya (pengaturan
~/.ssh/config
dan pemeriksaan untuk melihat apakahDISPLAY
variabel lingkungan diatur pada klien, pengaturan/etc/ssh/sshd_config
dan pemasanganxauth
pada server), pastikanxterm
juga diinstal pada klien, mis.sumber
xauth
bisa dikunci.Menggunakan
Pada mesin yang saya coba
ssh
kunci rusakxauth
. Keluar darissh
sesi setelah mengeluarkanxauth -b
lalu masuk kembali akhirnya memungkinkan saya untuk berhasilecho $DISPLAY
. Cobalah ini sebelum membuat ulang.Xauthority
sumber
X11Forwarding
harus ditetapkan pada server SSH (dalam kasus Anda kotak Ubuntu) di dalamnyasshd_config
, dan Anda harus mengizinkan X11 untuk diteruskan untuk klien SSH (kotak Fedora Anda) dengan meneruskan-X
opsi atau mengeditssh_config
file untuk menambahkanForwardX11
default.sumber
xauth
diinstal pada mesin remote, jika hal-hal x otoritas tidak akan berfungsi.DISPLAY
?$DISPLAY
jikaX11Forwarding
diaktifkan danxauth
hadir pada sistem klien.export DISPLAY=:10.0
tetapi tidak sebaliknya. Kalau tidak, ia mengeluh tidak dapat menemukan:0
. Mungkin hal lain diperlukan agar ini terjadi secara otomatis?