LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4955|回复: 8

我的VNC远程桌面黑屏,一个小正方形光标,奇怪!

[复制链接]
发表于 2007-5-18 11:42:47 | 显示全部楼层 |阅读模式
有装过vnc的大侠么,我的进入后黑屏。从Windows的VNC Viewer进入Linux,只是黑屏,光标是个小方块 .
要如何设定阿?我用rpm安装vncserver后,将.vnc/xstartup内的内容注释掉,写上 gnome &  ,后来改为startkde & 都不行。
从Windows的Run VNC Viewer输入服务器IP:5900(只有5900可以进入,其他的拒绝访问)进入就是黑屏,只有一个小正方形的光标。
[root@local ~]# vncserver

New 'local:1 (root)' desktop is local:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/local:1.log

[root@local ~]#
查看root/.vnc/local:1.log的内容:
[root@local .vnc]# vi local:1.log

Couldn't open RGB_DB '/usr/X11R6/lib/X11/rgb'

Xvnc version 4.0 - built Jun 14 2004 12:01:28
Underlying X server release 40201000, The XFree86 Project, Inc


Fri May 18 11:10:09 2007
vncext:      VNC extension running!
vncext:      Listening for VNC connections on port 5901
vncext:      Listening for HTTP connections on port 5801
vncext:      created VNC server for screen 0
error opening security policy file /usr/X11R6/lib/X11/xserver/SecurityPolicy
Could not init font path element /usr/X11R6/lib/X11/fonts/misc/, removing from list!
Could not init font path element /usr/X11R6/lib/X11/fonts/Speedo/, removing from list!
Could not init font path element /usr/X11R6/lib/X11/fonts/Type1/, removing from list!
Could not init font path element /usr/X11R6/lib/X11/fonts/CID/, removing from list!
Could not init font path element /usr/X11R6/lib/X11/fonts/75dpi/, removing from list!


郁闷阿,搞了两周了都没搞出来!
发表于 2007-5-18 14:38:33 | 显示全部楼层
你要设置 vncserver 的启动文件,
应该是在
~/.vnc/xstartup
回复 支持 反对

使用道具 举报

发表于 2007-5-18 21:29:49 | 显示全部楼层
你的很奇怪呢, 你试试用它的默认的会怎么样?
我用的是realvnc 版本4.1.1(比较老了,而且还听说有漏洞,不过debian一直没更新). 一直都没有问题.

vnc默认的端口是59xx. 按理说第一个server是5901,第二个是5902
而且你的log里也说了是听5901
vncext: Listening for VNC connections on port 5901

所以你连5900肯定是有问题的.
你可以sudo netstat -tap 看一下有没有类似这样的东西

  1. tcp        0      0 *:5901                  *:*                     LISTEN     6527/Xvnc4
复制代码


我以前用inetd的方式连接,在/etc/inetd.conf里加上

  1. localhost:5951 stream tcp wait lastart   /usr/bin/Xvnc Xvnc -inetd -query localhost -once securitytypes=none
复制代码

localhost:5951表示只听从本机的连接. 这样强制先用ssh连上去

  1. ssh user@host -L 5951:localhost:5951 -X
复制代码

然后vncviewer :51才能连上.
wait表示关掉viewer时不退出, 直到logout.
/usr/bin/Xvnc是Xvnc的路径.
Xvnc -inetd -query localhost -once securitytypes=none 这是运行的参数.
securitytypes=none 表示不验证密码. (因为上面已经限制了它只听localhost的端口)

说明:inetd方式要求gmd/xdm/kdm启动XDMCP

我现在用的最多的是直接连到:0上
我在/etc/gdm/Init/Default里加上

  1. x0vncserver -localhost -PasswordFile /home/lastart/.vnc/passwd &
复制代码

这样每次启动gdm我就可以连上,-localhost 参数限制只能在本机上连. 不足是不能启动vncconfig

而且realvnc早就内建了一个叫vnc的模块,在xorg.conf里调用就可以直接连上:0.
详细见http://www.realvnc.com/products/free/4.1/x0.html
但是我测试觉得不稳定. 经常一退出viewer,那边的X就重启, 所以才用了上面的方法.

更详细的参见man Xvnc/vncserver
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 12:09:11 | 显示全部楼层
呵呵,谢谢关注!我现在察看监听情况如下:
[root@local ~]# sudo netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 dns1:2208                   *:*                         LISTEN      2240/hpiod         
tcp        0      0 *:swat                      *:*                         LISTEN      2274/xinetd         
tcp        0      0 *:netbios-ssn               *:*                         LISTEN      19004/smbd         
tcp        0      0 *:5900                      *:*                         LISTEN      2796/vino-server   
tcp        0      0 *:sunrpc                    *:*                         LISTEN      2047/portmap        
tcp        0      0 *:976                       *:*                         LISTEN      2066/rpc.statd      
tcp        0      0 *:ftp                       *:*                         LISTEN      2285/vsftpd         
tcp        0      0 dns1:ipp                    *:*                         LISTEN      6467/cupsd         
tcp        0      0 dns1:smtp                   *:*                         LISTEN      2303/sendmail: acce
tcp        0      0 *:microsoft-ds              *:*                         LISTEN      19004/smbd         
tcp    13851      0 local:5900                  192.168.1.220:aal-lm        CLOSE_WAIT  2796/vino-server   
tcp     1303      0 local:5900                  192.168.1.220:pn-requester  CLOSE_WAIT  2796/vino-server   
tcp        1      0 local:5900                  192.168.1.22:inova-ip-disco ESTABLISHED 2796/vino-server   
tcp     2482      0 local:5900                  192.168.1.220:down          CLOSE_WAIT  2796/vino-server   
tcp     1141      0 local:5900                  192.168.1.220:global-dtserv CLOSE_WAIT  2796/vino-server   
tcp        1      0 local:38095                 opal.cat.pdx.edu:http       CLOSE_WAIT  2416/python         
tcp     8557      0 local:5900                  192.168.1.220:starschool    CLOSE_WAIT  2796/vino-server   
tcp     1795      0 local:5900                  192.168.1.220:ardusuni      CLOSE_WAIT  2796/vino-server   
tcp     6503      0 local:5900                  192.168.1.220:icg-iprelay   CLOSE_WAIT  2796/vino-server   
tcp     1189      0 local:5900                  192.168.1.220:fc-ser        CLOSE_WAIT  2796/vino-server   
tcp        0      0 *:ssh                       *:*                         LISTEN      2264/sshd           
tcp        0      0 localhost.localdomain:ipp   *:*                         LISTEN      6467/cupsd         
tcp        0      0 local:ssh                   ::ffff:192.168.1.220:wafs   ESTABLISHED 16602/1            
[root@local ~]#
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 12:19:43 | 显示全部楼层
我的Linux主机在那边机房里,也没有显示器,所以我也想直接连:0。怎么配置呢?
我用root用户进去的(可以么?),然后Vi到/etc/gdm/Init/Default内:
[root@local Init]# vi Default

#!/bin/sh
# Stolen from the debian kdm setup, aren't I sneaky
# Plus a lot of fun stuff added
#  -George

PATH=/usr/binPATH
OLD_IFS=$IFS

gdmwhich () {
  COMMAND="$1"
  OUTPUT=
  IFS=:
  for dir in $PATH
  do
    if test -x "$dir/$COMMAND" ; then
      if test "x$OUTPUT" = "x" ; then
        OUTPUT="$dir/$COMMAND"
      fi
    fi
  done
  IFS=$OLD_IFS
  echo "$OUTPUT"
}

sysresources=/etc/X11/Xresources

# merge in defaults
if [ -f "$sysresources" ]; then
    xrdb -merge "$sysresources"
fi

sysmodmap=/etc/X11/Xmodmap

XMODMAP=`gdmwhich xmodmap`
if [ x$XMODMAP != x ] ; then
  if [ x$GDM_PARENT_DISPLAY = x ]; then
    if [ -f $sysmodmap ]; then
      $XMODMAP $sysmodmap
    fi
  else
    ( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $XMODMAP -pke ) | $XMODMAP -
  fi

  #
  # Switch Sun's Alt and Meta mod mappings
  #

  UNAME=`gdmwhich uname`
  PROCESSOR=`$UNAME -p`
  if [ x$PROCESSOR = xsparc ]; then
    if $XMODMAP | /usr/bin/grep mod4 | /usr/bin/grep Alt > /dev/null 2>/dev/null
    then
      $XMODMAP -e "clear Mod1" \
               -e "clear Mod4" \
               -e "add Mod1 = Alt_L" \
               -e "add Mod1 = Alt_R" \
               -e "add Mod4 = Meta_L" \
               -e "add Mod4 = Meta_R"
    fi
  fi
fi

SETXKBMAP=`gdmwhich setxkbmap`
if [ x$SETXKBMAP != x ] ; then
  # FIXME: is this all right?  Is this completely on crack?
  # What this does is move the xkb configuration from the GDM_PARENT_DISPLAY
  # FIXME: This should be done in code.  Or there must be an easier way ...
  if [ -n "$GDM_PARENT_DISPLAY" ]; then
    XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
    if [ -n "$XKBSETUP" ]; then
      XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'`
      XKBTYPES=`echo "$XKBSETUP" | grep '^types' | awk '{ print $2 }'`
      XKBCOMPAT=`echo "$XKBSETUP" | grep '^compat' | awk '{ print $2 }'`
      XKBSYMBOLS=`echo "$XKBSETUP" | grep '^symbols' | awk '{ print $2 }'`
      XKBGEOMETRY=`echo "$XKBSETUP" | grep '^geometry' | awk '{ print $2 }'`
      if [ -n "$XKBKEYMAP" ]; then
        $SETXKBMAP -keymap "$XKBKEYMAP"
      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" -a -n "$XKBGEOMETRY" ]; then
        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" ]; then
        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
      elif [ -n "$XKBSYMBOLS" ]; then
        $SETXKBMAP -symbols "$XKBSYMBOLS"
      fi
    fi
  fi
fi

exit 0

好长哦!按仁兄说的,加一句(什么我忘了:(),要加到那个位置呢?
回复 支持 反对

使用道具 举报

发表于 2007-5-22 13:04:33 | 显示全部楼层
加在exit 0前面就可以了.

你已经启动了vino可能会冲突.  两种应该只能用一种
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 13:44:41 | 显示全部楼层
Post by lastart
加在exit 0前面就可以了.

你已经启动了vino可能会冲突.  两种应该只能用一种
那应该怎样去掉vino呢?谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-28 11:52:19 | 显示全部楼层
如何解答呢?多多评论以下,对错都是个启发啊!
回复 支持 反对

使用道具 举报

发表于 2007-5-29 19:47:08 | 显示全部楼层
你可以把vino包卸掉或或者只把vino文件改名/删除.  当然也可以选择把vnc卸掉. 设置一下vino你估计没设置过吧? man vino看一下.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表