Làm thế nào tôi có thể ngăn cảnh báo Không có dữ liệu xauth; sử dụng dữ liệu xác thực giả để chuyển tiếp X11?


66

Mỗi lần tôi khởi tạo kết nối ssh từ máy Mac sang Linux (Debian) tôi đều nhận được cảnh báo này:

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

Điều này cũng xảy ra đối với các công cụ đang sử dụng ssh, như git hoặc mercurial.

Tôi chỉ muốn thực hiện một thay đổi cục bộ cho hệ thống của mình để ngăn điều này xuất hiện.

Lưu ý: Tôi có máy chủ X11 (XQuartz 2.7.3 (xorg-server 1.12.4)) trên Mac OS X (10.8.1) và nó đang hoạt động bình thường, tôi có thể khởi động thành công đồng hồ cục bộ hoặc từ xa.


1
Bạn đang sử dụng lệnh gì để ssh?
DerfK

@DerfK chỉ ssh hostnamenhưng trong tôi ~/.ssh/configtôi đã thêm ForwardX11 yesmột thời gian trước đây. Tuy nhiên, đây là thứ mà tôi muốn có ở đó.
sorin

Sử dụng Ubuntu 16.04 LTS (tháng 8 năm 2017) tôi bỏ cuộc. Điểm mấu chốt là mặc dù nó có lỗi, nhưng nó hoạt động. Tôi sử dụng ssh -Y hostnametừ Linux và ssh -x hostnamekhi sử dụng OpenSSH trên Windows.
SDsolar

Câu trả lời:


66

Không có giải pháp được đăng nào làm việc cho tôi. Hệ thống máy khách (máy tính để bàn) của tôi đang chạy macOS 10.12.5 (Sierra). Tôi đã thêm -vvào các tùy chọn cho sshlệnh và nó nói với tôi,

debug1: No xauth program.

có nghĩa là nó không có đường dẫn chính xác đến xauthchương trình. (Trên phiên bản macOS này, đường dẫn đến xauthkhông chuẩn.) Giải pháp là thêm dòng này vào /etc/ssh/ssh_config(có thể /etc/ssh/configtrong một số thiết lập) hoặc trong ~/.ssh/config(nếu bạn không có quyền quản trị):

XAuthLocation /opt/X11/bin/xauth

Bây giờ tin nhắn cảnh báo đã biến mất.


10
CHÚA ƠI. Nhiều năm tôi đã cố gắng tìm một giải pháp, và điều này đã làm việc. Năm tôi nói! Lưu ý rằng tôi đã làm điều này bằng cách thêm dòng đó dưới Host *mục trong ~/.ssh/configtệp của tôi thay vì chỉnh sửa /etc/ssh/ssh_config. Tài liệu duy nhất tôi tìm thấy cho điều này là trong man sshd_config.
Demitri

Cái này cũng có tác dụng với tôi. Tôi hiểu rằng hiện tại XQuartz không được duy trì tốt do thiếu kinh phí. Vì vậy, tôi nghĩ rằng các vấn đề chuyển như thế này thực sự ít hơn tôi mong đợi.
AlanObject

Trên Sierra cao; đây cũng là một trong những công việc cho tôi
mklein9

1
Lưu ý bạn có thể gặp vấn đề này ngay cả khi vỏ của bạn có thể tìm thấy xauth trong PATH của bạn! Tôi đoán khách hàng ssh đang vệ sinh PATH của bạn vì lý do bảo mật?
MarcH

1
Giải pháp này không hiệu quả với tôi. Tôi đang sử dụng Cygwin trên Win7. Việc thêm "XAuthLocation / usr / bin / xauth", dưới mục "Máy chủ *" hoặc trước dòng đó, trong ~ / .ssh / config, không có sự khác biệt.
David M. Karr

22

Tìm thấy nguyên nhân, tôi ~/.ssh/configkhông đầy đủ, bạn cần cả hai:

Host *
    ForwardAgent yes
    ForwardX11 yes

Sai lầm của tôi là tôi chỉ bao gồm tùy chọn ForwardX11.


12
Tôi không chắc tại sao điều này lại cần thiết / có liên quan. ForwardAgentđược sử dụng để cho phép các khóa được lưu trong bộ nhớ cache ssh-agentđể đi qua nhiều kết nối SSH lồng nhau. Nó không nên có bất kỳ liên quan đến X11. Và fwiw, theo một số người, đó không phải là một ý tưởng bảo mật tốt: heipei.github.io/2015/02/26/ gợi
underscore_d

2
Điều đó có vẻ không đúng, điều thực sự hữu ích là tắt chuyển tiếp X11 hoặc sửa cấu hình xauth để thiết lập nó. Nó không liên quan đến các đại lý ssh.
eckes

Giải pháp này không hiệu quả với tôi.
David M. Karr

Đây có phải ~/.ssh/configtrên máy khách macOS hoặc máy chủ Linux không? Tôi không có những tập tin này. Tôi có một cái tương tự/etc/ssh/sshd_config
Max Coplan

12

Để Ubuntu bash trên Windows 10 chạy ssh -X để có được môi trường GUI trên máy chủ từ xa

  • Đầu tiên

Cài đặt tất cả các mục sau đây. Trên cửa sổ, cài đặt Xming. Trên Ubuntu bash, sử dụng sudo apt installđể cài đặt ssh xauth xorg.

sudo apt install ssh xauth xorg
  • Thứ hai

Tới thư mục chứa ssh_configtập tin, của tôi là /etc/ssh.

  • Ngày thứ ba

Chỉnh sửa ssh_configlà quản trị viên (USE sudo). Bên trong ssh_config, loại bỏ các hash #trong các dòng ForwardAgent, ForwardX11, ForwardX11Trusted, và thiết lập các đối số tương ứng để yes.

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
  • Forth

Trong ssh_configtệp, xóa hàm băm #trước trước Port 22Protocol 2thêm một dòng mới ở cuối tệp để nêu vị trí tệp xauth XauthLocation /usr/bin/xauth, hãy nhớ ghi đường dẫn của tệp xauth.

# /etc/ssh/ssh_config

#   IdentifyFile ...
    Port 22
    Protocol 2
#   Cipher 3des
#   ...
#   ...
    ...
    ...
    GSSAPIDelegateCredentials no
    XauthLocation /usr/bin/xauth
  • Thứ năm

Bây giờ vì chúng tôi đã hoàn tất chỉnh sửa ssh_configtệp, hãy lưu nó khi chúng tôi rời khỏi trình chỉnh sửa . Bây giờ hãy vào thư mục ~hoặc $HOME, thêm export DISPLAY=localhost:0vào .bashrctập tin của bạn và lưu nó.

# ~/.bashrc
...
...
export DISPLAY=localhost:0
  • Cuối cùng

Chúng ta đang gần hoàn tất. Khởi động lại bash shell của bạn, mở Xmingchương trình của bạn và sử dụng ssh -X yourusername@yourhost. Sau đó tận hưởng môi trường GUI.

ssh -X yourusername@yourhost

Vấn đề cũng nằm ở hệ thống con Ubuntu trên Windows và liên kết là tại

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

Lưu ý: văn bản được liên kết bao gồm 2 lỗi chính tả ( XauthLocaionthay vì XauthLocation)


Câu hỏi không phải là về Windows.
kasperd

Trên MacOS, nó gần như giống nhau, sự khác biệt là thay vì Xming, chúng ta nên lấy XQuartzssh_configtệp nằm ở một vị trí khác, là của tôi /private/etc/ssh.
DestinyOne

Ngoài ra, dòng cuối cùng ssh_configsẽ là:XAuthLocation /opt/X11/bin/xauth
DestinyOne

2
Chỉnh sửa cần thiết: XauthLocaion-> XauthLocation(chỉnh sửa đó quá nhỏ để tôi thực hiện).
echristopherson

1
Bên cạnh đó cài đặt xming, ssh, xauth, và xorg(bước 1), điều duy nhất cần thiết đối với tôi làexport DISPLAY=localhost:0
cùng tên

11

Như đã lưu ý, có vẻ như xauthtrên OS X Yosemite đã chuyển sang phiên bản cũ không hoạt động với $DISPLAYcài đặt của 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

1
Tôi đã thử nghiệm các dòng tương tự trên OS X 10.11 và tôi không gặp bất kỳ lỗi nào. Vẫn là phiên bản tương tự của XQuartz.
sorin

1
@guest xauth generate $DISPLAY .Lệnh của bạn đã hoạt động trên Mac OS X High Sierra (10.13) của tôi và nó đã giải quyết được No xauth data; using fake authentication data for X11 forwarding.pb của tôi .
SebMa

2

Có một lỗi trong MacOS tại thời điểm này. Tôi đã đi qua điều này quá. Bản sửa lỗi cho tôi liên quan đến việc thêm phần sau vào .bash_profile của tôi

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

Về cơ bản, tên cho đường ống tệp được liên kết với gốc X của bạn không thể được xử lý chính xác và do đó cần phải sửa. :-)


Tôi nghi ngờ điều này sẽ giải quyết lỗi trong các ứng dụng GUI OS X, như SourceTree.
sorin

Xác nhận nó hoạt động trên Sierra để chạy emacs bằng X - vì Mac là máy chủ. điều này sẽ hoạt động rộng rãi trong trường hợp máy khách ở trên một máy từ xa
Mark Mullin

2

Kể cả

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

trong macOS Sierra 10.12.6 của tôi đã làm việc cho tôi. Một thay đổi nhỏ từ câu 7).


1

tôi vừa xóa ~ / .Xmasterity (máy đích) khỏi thư mục gốc của tôi và ssh -X 192.168.123.1 một lần nữa và ik đã hoạt động.


Tôi có thể xác nhận đây là câu trả lời trên Mac OS Sierra 10.12.4. Xóa ~ / .Xmasterity trên máy chủ SSH thực hiện thủ thuật: ~$ mv ~/.Xauthority ~/.Xauthority.bak Một cookie ma thuật mới đã tự động được đặt lại vào ~ / .Xmasterity khi tôi đăng nhập lại. Không có kịch bản Bash là bắt buộc cả.
Kenneth Pegasus

1

Trong trường hợp của tôi, đó là vấn đề .Xmasterity chứa cookie Magic không được chuyển tiếp, Fabby trên http://askubfox.com/questions/571116/ khuyến nghị vào ngày 2014-11-2014 để thêm dòng này vào cuối .bashrc hoặc . cấu hình để cho phép chuyển tiếp các khóa xauth giữa những người dùng khi gọi su:

export $(dbus-launch)

Tôi cũng đã thêm trước đây:

export XAUTHORITY=~/.Xauthority 

để đảm bảo từ xa được gọi với ssh -X @ sẽ tìm thấy nó.

Trong trường hợp của tôi .Xmasterity là một liên kết tượng trưng đến người dùng ban đầu /home//.Xmasterity tôi su từ ...

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

với quyền chính xác:

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

vì vậy nó có thể truy cập đến và sẽ có thể kích hoạt các ứng dụng trên và hiển thị kết quả cửa sổ X trên màn hình cục bộ trên toàn bộ tài khoản proxy!

MIPO: Kiểm tra danh sách xauth ... nếu phản ánh cookie ma thuật trên.


0

Tôi sẽ thêm điều này như một bình luận, nhưng tôi không có đủ đại diện. Thêm một dòng nữa vào giải pháp của sorin làm việc cho tôi.

Mở tệp cấu hình ssh của bạn với vim ~/.ssh/config Sau đó thêm các dòng này vào nó:

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

Bạn có thể kiểm tra lại xauthvị trí của mình bằng:

which xauth

Không chắc chắn nếu điều này thực sự hoạt động bởi vì vị trí xauth sẽ khác nhau trên mỗi máy từ xa. Bạn trông giống như một chiếc MacOS, nhưng Linux có nó ở vị trí khác nhau. Tôi hầu như bắt đầu vô hiệu hóa ForwardX11 hoàn toàn vì tôi gần như không bao giờ sử dụng nó.
sorin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.