Xlib: No protocol specified

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=
root@donald-bash# /usr/openwin/bin/xclock
Xlib: connection to "" refused by server
Xlib: No protocol specified

Error: Can't open display:

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

Who is Participating?
Brian UtterbackConnect With a Mentor Principle Software EngineerCommented:
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.
Brian UtterbackPrinciple Software EngineerCommented:
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.
tietohackerAuthor Commented:
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?
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

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

Brian UtterbackPrinciple Software EngineerCommented:
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.
tietohackerAuthor Commented:
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?

Brian UtterbackPrinciple Software EngineerCommented:
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?
tietohackerAuthor Commented:
No its not commented out.
Im sorry but I dont get the DISPLAY variable set after relogin.
tietohackerAuthor Commented:
"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.


Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.