ssh mengembalikan pesan “Permintaan penerusan X11 gagal pada saluran 1”

33

Ketika saya ssh ke server jauh yang tidak menjalankan semua jenis lingkungan desktop X11 saya mendapatkan pesan berikut.

$ ssh user@server
X11 forwarding request failed

$ ssh user@server ls
X11 forwarding request failed on channel 1
file1
file2
...

Bagaimana saya bisa menyingkirkan pesan-pesan ini?

slm
sumber

Jawaban:

38

Pesan-pesan ini dapat dihilangkan melalui 1 dari 3 metode, hanya menggunakan opsi SSH. Anda selalu dapat mengirim pesan /dev/nulljuga, tetapi metode ini mencoba menangani pesan melalui konfigurasi, bukan hanya menjebak dan membuangnya.

Metode # 1 - instal xauth

Server yang Anda kirim ulang mengeluh bahwa ia tidak dapat membuat entri di file pengguna .Xauthority, karena xauthtidak diinstal. Jadi Anda dapat menginstalnya di setiap server untuk menghilangkan pesan yang mengganggu ini.

Pada Fedora 19 Anda menginstal xauthseperti ini:

$ sudo yum install xorg-x11-xauth

Jika kemudian Anda mencoba sshmasuk ke server Anda akan melihat pesan bahwa entri sedang dibuat di file pengguna .Xauthority.

$ ssh root@server
/usr/bin/xauth:  creating new authority file /root/.Xauthority
$

Info masuk berikutnya tidak akan lagi menampilkan pesan ini.

Metode # 2 - nonaktifkan melalui ForwardX11

Anda dapat memerintahkan sshklien untuk tidak mencoba mengaktifkan penerusan X11 dengan memasukkan parameter SSH ForwardX11.

$ ssh -o ForwardX11=no root@server

Anda dapat melakukan hal yang sama dengan -xsakelar:

$ ssh -x root@server

Ini hanya akan menonaktifkan sementara pesan ini, tetapi merupakan opsi yang baik jika Anda tidak dapat atau tidak mau menginstal xauthpada server jarak jauh.

Metode # 3 - nonaktifkan melalui sshd_config

Ini biasanya adalah default tetapi jika tidak, Anda dapat mengatur sshdserver Anda sehingga X11Forwarding tidak aktif, masuk /etc/ssh/sshd_config.

X11Forwarding no

Dari 3 metode yang biasanya saya gunakan # 2, karena saya akan sering ingin X11Forwardinguntuk sebagian besar server saya, tetapi kemudian tidak ingin melihat X11....peringatan

$ HOME / .ssh / config

Sering kali pesan ini bahkan tidak muncul. Mereka biasanya hanya hadir ketika Anda memiliki entri berikut di $HOME/.ssh/configfile Anda , di bagian atas.

ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes

GatewayPorts yes

Jadi ini adalah pengaturan ini, yang pada akhirnya mendorong pembuatan X11..pesan - pesan itu, jadi sekali lagi, metode # 2 tampaknya menjadi yang paling tepat jika Anda ingin beroperasi dengan ForwardX11 yessecara default, tetapi kemudian secara selektif menonaktifkannya untuk koneksi tertentu dari sshperspektif klien. .

Keamanan

Biasanya tidak disarankan untuk dijalankan ForwardX11 yessetiap saat. Jadi jika Anda ingin mengoperasikan koneksi SSH Anda di manor yang paling aman, sebaiknya lakukan hal berikut:

  1. Jangan sertakan ForwardX11 yesdalam $HOME/.ssh/configfile Anda
  2. Hanya gunakan ForwardingX11 saat Anda perlu via ssh -X user@server
  3. Jika Anda bisa, nonaktifkan X11Forwardingsepenuhnya di server sehingga tidak diizinkan

Referensi

slm
sumber
Bisakah Anda membantu saya dengan unix.stackexchange.com/questions/470331/… ?
overexchange
Sebagai catatan, saya menerima pesan ketika saya sedang mencoba untuk menjalankan X klien pada remote server. Mereka tidak akan meluncurkan karena $ DISPLAY tidak disetel. Saya berhasil memperbaikinya dengan saran pertama Anda: instal xauth.
Tom Ellis
13

Dalam kasus saya, menambahkan string ini untuk /etc/ssh/sshd_configmemecahkan masalah:

X11UseLocalhost no
pengguna3132194
sumber
Ini bekerja untuk saya (server sudah menginstal xauth). Terima kasih.
Paul Higgins
Ini muncul untuk menyelesaikan masalah saya, tetapi saya tidak mengerti mengapa, yang memprihatinkan. Saya memiliki apa yang seharusnya menjadi tiga mesin Debian 7 yang identik, salah satunya tiba-tiba berhenti menerima locahostpenerusan X11. Penerusan X11 pada dua lainnya masih bekerja. Adakah yang tahu apa yang bisa berubah?
Kyle Strand
12

Berlari menyeberang hari ini dan pukuli kepalaku untuk sementara waktu sampai aku menemukan pengaturan ssh:

Jika itu RHEL 7 (centOS, OEL, dll), dan itu telah menonaktifkan ipv6, perlu:

AddressFamily inet

atur di / etc / ssh / sshd_config.

Systemspoet
sumber
jika hanya pesan kesalahan yang terkait dengan ini ...
Jack Wasey
kamu tahu apa yang lucu? Saya menemukan ini hari ini dan mencari di Google, menemukan artikel ini, dan menemukan komentar saya sendiri dari empat tahun lalu dan berkata, "OH YEAH ITULAH MASALAHNYA."
Systemspoet
2

Variasi kecil lainnya adalah jika Anda ingin berhenti melihat pesan ini (yaitu berhenti mencoba meneruskan X11) untuk server tertentu tetapi tetap mempertahankan default ke ForwardX11 ya untuk semua koneksi lainnya.

Untuk skenario ini, Anda bisa menonaktifkan penerusan X11 untuk host (atau rentang) tertentu di ~ / .ssh / config Anda. Sesuatu seperti ini:

host 10.1.1.*
ForwardX11 no 

Pengakuan: Ini adalah sedikit hiasan untuk jawaban yang ada (dan sangat lengkap) yang ada - karena saya tidak bisa berkomentar!

philarmour
sumber
2

Jika menjalankan klien dalam mode verbose ( ssh -v user@host) memberi Anda

debug1: Remote: No xauth program; cannot forward with spoofing.

tetapi xauthmemang diinstal pada server, maka itu mungkin karena sshd mencari xauth yang dapat dieksekusi di lokasi yang salah ( / usr / X11R6 / bin / xauth biasanya). Seseorang dapat memperbaikinya dengan mengatur

XAuthLocation /usr/bin/xauth

di / etc / sshd / sshd_config (atau apa pun yang dikonfigurasikan dengan server Anda).

Anton Samsonov
sumber
Ini bekerja untuk saya di CentOS 7. Itulah pesan kesalahan yang saya lihat.
Brian Minton
Ini adalah masalah saya, mencoba masuk dari jarak jauh ke Mac. Di sana mantra yang benar adalah XAuthLocation / opt / X11 / bin / xauth
Leon Avery
1

Mengkonfigurasi penerusan X11 berdasarkan per host

Selain semua jawaban luar biasa yang sudah ada di sini, Anda dapat mengonfigurasi ForwardX11berdasarkan per host, jadi jika hanya servergagal seperti ini, Anda dapat menambahkan entri ke ~/.ssh/configfile Anda dari formulir berikut:

Host server server.domain.dom
    ForwardX11 no

Anda bahkan dapat menggunakan entri seperti ini sebagai alias untuk seluruh rangkaian konfigurasi

Host my.server
    HostName server.domain.dom
    User user
    Port 1234
    ForwardX11 no

Ini sangat berguna jika Anda telah mengatur nama server Autocomplete untuk SSH dan SCP .

Mark Booth
sumber
1

Saya menemukan pertanyaan ini setelah bertemu sshd-xauthbug yang berumur hampir satu dekade. Dua solusi dilaporkan, yang pertama melewati xauth, yang kedua mengatasi bug.


Solusi 1 - memotong xauth

  • local - mesin lokal yang melayani Xserver.
  • remote - mesin jarak jauh yang melayani aplikasi yang menggerakkan data ke Xserver

Jarak jauh /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

Remote ~/.Xauthoritykosong atau tidak ada

Di lokal:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

Dalam pengujian, lokal menjalankan Ubuntu 18.05, remote menjalankan Debian Jesse.

Saya juga memposting solusi ini sebagai jawaban pertanyaan lain.


Solusi 2 - mengatasi bug sshd / xauth

Solusi ini dekat dengan solusi @systempoet di atas , walaupun itu saja tidak cukup.

Selain memodifikasi /etc/ssh/sshd_configpada jarak jauh:

AddressFamily inet

/etc/hosts pada remote juga dimodifikasi:

::1     localhost ip6-localhost ip6-loopback

Jika salah satu dikomentari, pesan kesalahan

X11 forwarding request failed on channel 0

muncul setelah ssh -X ...panggilan. Selain itu /var/log/auth.logmenunjukkan kesalahan:

sshd[...]: error: Failed to allocate internet-domain X11 display socket

Tes untuk menghasilkan bug (sebelum diperbaiki):

Mesin lokal:

$ Xephyr -ac -screen 1280x800 -br -reset -terminate  :2 &
$ DISPLAY=:2 ssh -X  user@remote
X11 forwarding request failed on channel 0
Craig Hicks
sumber
0

Satu hal penting yang perlu diperhatikan setelah melakukan perubahan konfigurasi adalah Anda harus mematikan sshd sehingga mengambil perubahan:

cat /var/run/sshd.pid | xargs kill -1

menjadi pengguna root.

unixia
sumber
-2
  1. Tetapkan 2 opsi berikut di /etc/ssh/sshd_configdalam host RHEL Anda

    X11Forwarding yes X11UseLocalhost no

  2. sudo /etc/init.d/sshd reload

  3. sudo yum install xauth
  4. ssh kembali ke host RHEL Anda dengan -X switch: ssh -X yourname@rhelbox
pengguna149406
sumber