Perbedaan antara VNC dan ssh -X

27

Mengapa Anda menggunakan VNC (atau dalam hal ini NX) alih-alih hanya menggunakan ssh -X (-Y). Saya membaca bahwa VNC menggunakan lebih sedikit bandwidth, tetapi apakah ada perbedaan / kelebihan lain dengan masing-masing alat?

The Boatman Silent
sumber

Jawaban:

30

Selain masalah bandwidth dan latensi (yang dapat sedikit berbeda), perbedaan besar adalah fungsi yang disediakannya.

VNC mengekspor seluruh sesi, desktop, dan semua, sementara ssh akan menjalankan satu program dan menampilkan jendelanya di workstation Anda.

Server VNC mengekspor sesi yang bertahan bahkan ketika Anda memutuskan koneksi layar Anda, dan Anda dapat menghubungkan kembali nanti dengan semua jendela terbuka dll. Ini tidak mungkin dengan ssh X tunnel, karena ketika server X Anda mati, windows pergi .

dkagedal
sumber
5
Itulah alasan terbesar saya selalu menggunakan VNC, tidak pernah mengarahkan X window. (Saya menggunakan VNC melalui terowongan ssh). Ketika saya menutup penutup di laptop saya, koneksi terputus. Dengan ssh -X, tidak ada cara untuk melanjutkan - Saya harus memulai kembali aplikasi dari awal. Dengan VNC (baik langsung maupun melalui ssh tunnel), saya dapat menyambung kembali dan melanjutkan tepat di mana saya tinggalkan.
David Cary
8
Meskipun sedikit OT (karena Q ini mungkin hanya tentang aplikasi GUI): jika aplikasi GUI yang sebenarnya tidak diperlukan, dan hanya akses shell dasar yang akan dilakukan (misalnya, xterm), maka lakukan "ssh" diikuti oleh "layar bash". Jika terputus (laptop ditutup, vpn terputus, dll), shell jarak jauh tetap aktif. Login ulang & sambungkan kembali melalui "layar -r". Saya hanya membahas ini karena saya telah melihat orang menjalankan vnc hanya untuk akses shell dasar (atau menjalankan xterm jarak jauh yang ditampilkan secara lokal); sebagian besar waktu (tapi tentu saja tidak selalu), akses shell sederhana sudah cukup.
michael
1
@ michael_n Saya tertarik dengan hal yang Anda katakan tentang bash layar ini, tetapi saya tidak dapat membuatnya berfungsi. Saya mengetik 'ssh -X -t myusername @ remotehost screen bash' dan setelah koneksi turun saya ketik 'layar -r', tetapi dikatakan 'tidak ada layar untuk dilanjutkan'. apa yang harus saya lakukan?
simona
2
@simona setelah ssh sukses login, kemudian jalankan layar: ssh user@host; dan setelah login screen bash:; untuk memutuskan sambungan, ctrl+adiikuti oleh ctrl+d. Anda dapat keluar dan masuk lagi, lalu: screen -lsdan screen -r. Keluar dari bash, keluar dari sesi layar. Untuk lebih banyak (lebih banyak), lihat berbagai tutorial di layar GNU
michael
9

ssh -Xmengalihkan perintah X11 ke server X lokal Anda. Jadi seolah-olah Anda menjalankan program secara lokal, ketika itu benar-benar berjalan di komputer di ujung lainnya. Ini sangat lambat karena menggunakan banyak bandwidth. (Inilah yang dibicarakan orang ketika mereka mengatakan X11 adalah "jaringan transparan.")

VNC dan aplikasi desktop jarak jauh lainnya sebagai gantinya membiarkan komputer lain memproses semua gambar grafik dan sebagainya dan menangkap, pada dasarnya, tangkapan layar dan mengirimkannya kembali ke komputer Anda. Ini bisa tampak jauh lebih cepat, karena jauh lebih sedikit informasi yang diperlukan untuk menampilkan semuanya. Namun, itu juga mengirimkan seluruh desktop, bukan satu aplikasi.

Saya tidak merekomendasikan penggunaan ssh -Xmelalui Internet karena satu alasan sederhana: Ini akan menggunakan semua bandwidth Anda yang tersedia. Ini cukup berguna daripada LAN, menurut saya, jadi jika Anda hanya perlu satu aplikasi dan tidak ingin harus menjalankan seluruh desktop, ini adalah cara yang baik untuk melakukannya. Kalau tidak, cukup gunakan VNC.

greyfade
sumber
3
"Ini sangat lambat karena menggunakan banyak bandwidth. Protokol X11 sangat kompleks dan sering melibatkan pengiriman piksel besar bolak-balik melintasi koneksi." - ini salah, protokol X11 tidak terlalu rumit dan tidak melibatkan pengiriman piksel besar bolak-balik melintasi koneksi. Datang dan bergabunglah dengan proposal ini untuk mempelajari lebih lanjut tentang Sistem X Window: area51.stackexchange.com/proposals/20129/the-x-window-system
1
@ Sherlock: Yah, faktanya tetap menggunakan banyak bandwidth. Saya menghapus kalimat yang menyinggung itu.
greyfade
1
NX adalah cara yang efisien untuk mengirimkan data protokol X11 melalui jaringan. Ini memampatkan data, menyediakan sesi caching dan terowongan yang luas melalui SSH.
Adam Byrtek
4

VNC akan membagikan seluruh desktop dari sistem jarak jauh. Ini membutuhkan desktop lengkap pada sistem jarak jauh.

ssh -X memungkinkan Anda menjalankan aplikasi X tunggal dari server jarak jauh. Sistem jarak jauh tidak perlu menjalankan desktop yang lengkap, dan Anda seringkali hanya perlu beberapa paket untuk diinstal pada sistem jarak jauh.

ssh -Xdapat berguna saat menginstal paket perangkat lunak yang rumit melalui koneksi jarak jauh. Beberapa produk perangkat lunak dapat menggunakan penginstal GUI (Oracle Database, dll). Saya tidak ingin menginstal dan desktop Gnome yang lengkap di server jarak jauh saya. Jadi, Anda menginstal satu atau dua paket X11 (Xauth?) Di server jarak jauh, dan mengizinkan DBA untuk menjalankan pemasang Oracle dari jarak jauh menggunakan sesuatu yang sederhana seperti 'ssh -X / media / cdrom / oracle-installer'.

Stefan Lasiewski
sumber