Bagaimana saya bisa mencegah peringatan Tidak ada data xauth; menggunakan data otentikasi palsu untuk penerusan X11?

66

Setiap kali saya memulai koneksi ssh dari Mac ke Linux (Debian) saya mendapatkan peringatan ini:

No xauth data; using fake authentication data for X11 forwarding.

Ini juga terjadi untuk alat yang menggunakan ssh, seperti git atau lincah.

Saya hanya ingin membuat perubahan lokal ke sistem saya untuk mencegah ini muncul.

Catatan: Saya memiliki server X11 (XQuartz 2.7.3 (xorg-server 1.12.4)) di Mac OS X (10.8.1) dan berfungsi dengan baik, saya dapat memulai jam secara lokal atau jarak jauh.

Sorin
sumber
1
Apa perintah yang Anda gunakan untuk ssh?
DerfK
@ DerfK hanya ssh hostnametetapi di saya, ~/.ssh/configsaya menambahkan ForwardX11 yesbeberapa waktu lalu. Masih ini adalah sesuatu yang ingin saya miliki di sana.
sorin
Menggunakan Ubuntu 16.04 LTS (Agustus 2017) saya menyerah. Intinya adalah bahwa meskipun itu memberikan kesalahan, itu berfungsi. Saya menggunakan ssh -Y hostnamedari Linux, dan ssh -x hostnameketika menggunakan OpenSSH di Windows.
SDsolar

Jawaban:

66

Tidak ada solusi yang diposting bekerja untuk saya. Sistem klien saya (desktop) menjalankan macOS 10.12.5 (Sierra). Saya menambahkan -vke opsi untuk sshperintah dan itu memberi tahu saya,

debug1: No xauth program.

yang berarti tidak memiliki jalur yang benar ke xauthprogram. (Pada versi macOS ini path ke xauthtidak standar.) Solusinya adalah menambahkan baris ini ke /etc/ssh/ssh_config(mungkin /etc/ssh/configdalam beberapa pengaturan) atau di ~/.ssh/config(jika Anda tidak memiliki hak admin):

XAuthLocation /opt/X11/bin/xauth

Sekarang pesan peringatan hilang.

nmgeek
sumber
10
YA TUHAN. Bertahun-tahun saya mencoba mencari solusi, dan ini berhasil. Tahun saya katakan! Perhatikan bahwa saya melakukan ini dengan menambahkan baris di bawah Host *entri di ~/.ssh/configfile saya alih-alih mengedit /etc/ssh/ssh_config. Satu-satunya dokumentasi yang saya temukan untuk ini adalah di man sshd_config.
Demitri
Ini juga bekerja untuk saya. Saya mengerti bahwa saat ini XQuartz tidak dirawat dengan baik karena kurangnya dana. Jadi saya pikir masalah porting seperti ini sebenarnya lebih sedikit dari yang saya harapkan.
AlanObject
Di High Sierra; ini juga yang bekerja untuk saya.
mklein9
1
Catatan Anda mungkin mengalami masalah ini bahkan ketika shell Anda dapat menemukan xauth di PATH Anda! Saya kira klien ssh sedang membersihkan PATH Anda untuk alasan keamanan?
MarcH
1
Solusi ini tidak berhasil untuk saya. Saya menggunakan Cygwin di Win7. Menambahkan "XAuthLocation / usr / bin / xauth", baik di bawah entri "Host *", atau sebelum baris itu, di ~ / .ssh / config, tidak ada bedanya.
David M. Karr
22

Menemukan penyebabnya, saya ~/.ssh/configtidak lengkap, Anda perlu keduanya:

Host *
    ForwardAgent yes
    ForwardX11 yes

Kesalahan saya adalah saya hanya menyertakan opsi ForwardX11.

Sorin
sumber
12
Saya tidak yakin mengapa ini diperlukan / relevan. ForwardAgentdigunakan untuk memungkinkan kunci yang di-cache masuk ssh-agentuntuk melewati beberapa koneksi SSH bersarang. Seharusnya tidak memiliki relevansi dengan X11. Dan fwiw, menurut beberapa orang, itu bukan ide yang baik dari segi
underscore_d
2
Itu tidak terdengar benar, yang membantu adalah mematikan X11 forwarding atau memperbaiki konfigurasi xauth untuk mengaturnya. Ini tidak terkait dengan agen ssh.
eckes
Solusi ini tidak berhasil untuk saya.
David M. Karr
Apakah ini ~/.ssh/configpada klien macOS atau server Linux? Saya tidak memiliki file-file ini. Saya punya yang serupa/etc/ssh/sshd_config
Max Coplan
12

Membiarkan Ubuntu bash di Windows 10 berjalan ssh -X untuk mendapatkan lingkungan GUI di server jauh

  • Pertama

Instal semua yang berikut ini. Di Jendela, instal Xming. Di Ubuntu bash, gunakan sudo apt installuntuk menginstal ssh xauth xorg.

sudo apt install ssh xauth xorg
  • Kedua

Pergi ke folder berisi ssh_configfile, milikku /etc/ssh.

  • Ketiga

Edit ssh_configsebagai administrator (USE sudo). Di dalam ssh_config, menghapus hash #dalam garis ForwardAgent, ForwardX11, ForwardX11Trusted, dan mengatur argumen yang sesuai untuk yes.

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
  • Keempat

Dalam ssh_configfile, hapus hash depan #sebelum Port 22dan Protocol 2, dan juga tambahkan baris baru di akhir file untuk menyatakan lokasi file xauth XauthLocation /usr/bin/xauth,, ingatlah menulis path file xauth Anda sendiri.

# /etc/ssh/ssh_config

#   IdentifyFile ...
    Port 22
    Protocol 2
#   Cipher 3des
#   ...
#   ...
    ...
    ...
    GSSAPIDelegateCredentials no
    XauthLocation /usr/bin/xauth
  • Kelima

Sekarang karena kita sudah selesai mengedit ssh_configfile, simpan ketika kita meninggalkan editor. Sekarang buka folder ~atau $HOME, tambahkan export DISPLAY=localhost:0ke .bashrcfile Anda dan simpan.

# ~/.bashrc
...
...
export DISPLAY=localhost:0
  • Terakhir

Kami hampir selesai. Mulai ulang shell bash Anda, buka Xmingprogram Anda dan gunakan ssh -X yourusername@yourhost. Kemudian nikmati lingkungan GUI.

ssh -X yourusername@yourhost

Masalahnya juga ada di subsistem Ubuntu di Windows, dan tautannya ada di

https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776

Catatan: teks yang ditautkan mencakup 2 kesalahan ketik ( XauthLocaionbukan XauthLocation)

DestinyOne
sumber
Pertanyaannya bukan tentang Windows.
kasperd
Pada MacOS hampir sama, perbedaannya bukan Xming, kita harus dapatkan XQuartz, dan ssh_configfile di lokasi yang berbeda, milikku /private/etc/ssh.
DestinyOne
Dan juga, baris terakhir ssh_configadalah:XAuthLocation /opt/X11/bin/xauth
DestinyOne
2
Sunting diperlukan: XauthLocaion-> XauthLocation(sunting itu terlalu kecil untuk saya buat).
echristopherson
1
Selain memasang xming, ssh, xauth, dan xorg(langkah 1), satu-satunya hal yang dibutuhkan bagi saya adalahexport DISPLAY=localhost:0
eponymous
11

Seperti disebutkan, tampaknya xauthpada OS X Yosemite telah mengalami kemunduran ke versi lama yang tidak berfungsi dengan $DISPLAYpengaturan XQuartz :

% xauth -V
1.0.9
% xauth generate $DISPLAY .
xauth: (argv):1:  bad display name "/private/tmp/com.apple.launchd(...)/org.macosforge.xquartz:0" in "add" command
tamu
sumber
1
Saya menguji baris yang sama pada OS X 10.11, dan saya tidak mendapatkan kesalahan. Masih versi XQuartz yang sama.
sorin
1
@guest xauth generate $DISPLAY .Perintah Anda berfungsi pada Mac OS X High Sierra (10.13), dan itu menyelesaikan No xauth data; using fake authentication data for X11 forwarding.pb saya .
SebMa
2

Ada bug di MacOS saat ini. Saya menemukan ini juga. Perbaikan untuk saya termasuk menambahkan yang berikut ke .bash_profile saya

dispdir=`dirname $DISPLAY`
dispfile=`basename $DISPLAY`
dispnew="$dispdir/:0"
if [ -e $DISPLAY -a "$dispfile" = "org.x:0" ]; then
  mv $DISPLAY $dispnew
fi
export DISPLAY=$dispnew

Pada dasarnya nama untuk pipa file yang terkait dengan root X Anda tidak dapat ditangani dengan benar, dan karenanya perlu diperbaiki. :-)

Tux Merah
sumber
Saya ragu ini akan menyelesaikan kesalahan dalam aplikasi GUI OS X, seperti SourceTree.
sorin
Mengkonfirmasi itu berfungsi pada Sierra untuk menjalankan emacs menggunakan X - karena Mac adalah server. ini harus bekerja secara luas dalam kasus di mana klien menggunakan mesin jarak jauh
Mark Mullin
2

Termasuk

XAuthLocation / opt / local / bin / xauth di ~ / .ssh / config

di macOS saya Sierra 10.12.6 bekerja untuk saya. Perubahan kecil dari jawaban 7).

Kepler Oliveira Filho
sumber
1

saya baru saja menghapus ~ / .Xauthority (mesin tujuan) dari folder root saya dan ssh -X 192.168.123.1 lagi dan ik berfungsi.

Marcel Kraan
sumber
Saya dapat mengkonfirmasi ini adalah jawaban di Mac OS Sierra 10.12.4. Menghapus ~ / .Xauthority pada server SSH melakukan trik: ~$ mv ~/.Xauthority ~/.Xauthority.bak Cookie ajaib baru secara otomatis dimasukkan kembali ~ / .Xauthority setelah saya login lagi. Tidak diperlukan skrip Bash sama sekali.
Kenneth Pegasus
1

Dalam kasus saya itu adalah masalah .Xauthority yang berisi cookie Magic tidak diteruskan, Fabby di http://askubuntu.com/questions/571116/ merekomendasikan pada 2014-11-14 untuk menambahkan baris ini di akhir .bashrc atau . profil untuk memungkinkan penerusan kunci xauth antara pengguna saat memanggil su:

export $(dbus-launch)

Saya menambahkan juga sebelumnya:

export XAUTHORITY=~/.Xauthority 

untuk memastikan remote dipanggil dengan ssh -X ̍ @ akan menemukannya.

Dalam kasus saya. Xauthority adalah symlink ke pengguna asli / home //.Xauthority saya su ...

  cd /home/<child_user>;ln -sf /home/<parent_user>/.Xauthority .xAuthority

dengan hak yang benar:

  sudo chown <parent_user> /home/<parent_user>/.profile
  chmod a+rw /home/<parent_user>/.profile 

sehingga dapat diakses ke dan ke. akan dapat memicu aplikasi pada dan menampilkan hasil X-windowed di layar lokal di seluruh akun proxy!

TIP: Periksa daftar xauth ... apakah mencerminkan cookie ajaib aktif.

serba informatik
sumber
0

Saya akan menambahkan ini sebagai komentar, tetapi saya tidak memiliki cukup perwakilan. Menambahkan satu baris lagi ke solusi sorin bekerja untuk saya.

Buka file konfigurasi ssh Anda dengan vim ~/.ssh/config Kemudian tambahkan baris ini ke sana:

Host *
    ForwardAgent yes
    ForwardX11 yes
    XAuthLocation /opt/X11/bin/xauth

Anda dapat memeriksa xauthlokasi Anda dengan:

which xauth
ssanch
sumber
Tidak yakin apakah ini benar-benar berfungsi karena lokasi xauth akan berbeda pada setiap mesin jarak jauh. Milik Anda terlihat seperti MacOS, tetapi Linux memilikinya di lokasi yang berbeda. Saya sebagian besar mulai menonaktifkan ForwardX11 secara lengkap karena saya hampir tidak pernah menggunakannya.
sorin