Solved

Xlib: No protocol specified

Posted on 2008-10-24
8
6,717 Views
Last Modified: 2013-12-27
Hi,
I have winXP on my desktop and have Xming X server installed. I daliy login to solaris and linux machines via putty ssh with X11 forwarding turned on to display solaris and linux X programs to my pc.

But today I logged on the a server I never been to before and there I could not display X programs. I've tried with ssh and telnet via putty. When I login via ssh with X11 forwarding I dont have any DISPLAY varible at all. Then I use telnet and set the DISPLAY variable manualy and then try to start a program I get the following error:

root@donald-bash# export DISPLAY=192.10.1.101:0
root@donald-bash# /usr/openwin/bin/xclock
Xlib: connection to "192.10.1.101:0.0" refused by server
Xlib: No protocol specified

Error: Can't open display: 192.10.1.101:0
root@donald-bash#

Why do I get this?
Is there a way to restrict X displays in the solaris/linux box?

0
Comment
Question by:tietohacker
  • 4
  • 4
8 Comments
 
LVL 22

Expert Comment

by:blu
ID: 22795499
If you go to one of the other servers that works with X-forwarding, and change the DISPLAY variable to what you have above and then start xclock, does it work?

I think you have two separate problems.  One is that x-forwarding is not working on the new server. The other is why direct X connections (not over ssh) do not work.

I suspect that the direct X connections do not work for any of the servers, not just the new one. The reason you don't know that is that x-forwarding is working on the others.

As to the X-forwarding, the server must have x-forwarding configured in the sshd configuration file, otherwise X-forwarding does not work. On the new server, look for the file /etc/shh/sshd_config. In that file look for a line that says "X11Forwarding yes". If
that line does not exist or is commented out, that is the problem.
0
 

Author Comment

by:tietohacker
ID: 22795744
Hi blu,
I dont have any /etc/ssh dir at all. The sshd daemon exists under /usr/local/sbin and ssh + ssh-keygen etc. exists under /usr/local/bin.
If this dir doesent exists, can I create it and the file you mentioned?
0
 
LVL 22

Expert Comment

by:blu
ID: 22795960
Yes, that should work just fine. Take a look at the corresponding directory from the working servers. Do not copy any files other than the sshd_config file, the others are system specific.
0
Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Author Comment

by:tietohacker
ID: 22811110
Blu,
I found the sshd_config file in /usr/local/etc/ dir. I made the changes and comment out:
X11Forwarding yes

Tried to login again, but no DISPLAY variable is set even if I have the "X11 forwarding" button marked in putty.
Also tried to create the /etc/ssh dir and placed the sshd_config file in that dir but that didnt work either.

Is there a way to see which config file sshd is useing and where it exists?

/T
0
 
LVL 22

Expert Comment

by:blu
ID: 22811616
You want to make sure "X11Forwarding yes" is not commented out.

Please uncomment it, then login in again. Do you get a DISPLAY variable set this time? If so, what is it set to?
0
 

Author Comment

by:tietohacker
ID: 22811959
No its not commented out.
Im sorry but I dont get the DISPLAY variable set after relogin.
/T
0
 
LVL 22

Accepted Solution

by:
blu earned 125 total points
ID: 22812177
The first thing to try is to look at the running sshd on the server. The command line option for setting the config file is
-f, so you can use /usr/ucb/ps auxwww to see if it is set on the top level sshd.

If not, look to see the path it is running from. From your description, it sounds like it is /usr/local/sbin. Look for the sshd binary in there. Then run this command "strings sshd | grep conf"

This should display the pre-compiled conf file location. Then go find that file and make sure that X11Forwarding is turned on there.
0
 

Author Comment

by:tietohacker
ID: 22812556
"ps -ef | grep sshd" tells me that the binary exists under /usr/local/sbin.
If I type "strings sshd | grep conf" it tels me that it uses /usr/local/etc/sshd_conf as the config file anfd that one I have chaged.

I then made:
"kill -HUP pid"
After a relogin everything works fine! It was only a HUP to the sshd process that was necessary.

THANKS!

/T
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A metadevice consists of one or more devices (slices). It can be expanded by adding slices. Then, it can be grown to fill a larger space while the file system is in use. However, not all UNIX file systems (UFS) can be expanded this way. The conca…
Hello to you all, I hear of many people congratulate AWS (Amazon Web Services) on how easy it is to spin up and create new EC2 (Elastic Compute Cloud) instances, but then fail and struggle to connect to them using simple tools such as SSH (Secure…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question