ログイン画面からVNC経由でubuntuマシンにアクセスする方法は?


17

UbuntuマシンにVNC経由でリモートアクセスしたい。しかし、ユーザーがログインしている場合にのみ、Ubuntuマシンにアクセスできます。ログイン画面自体からVNC経由でubuntuマシンにアクセスしたいのです。ログイン画面からすべてのWindowsマシンにアクセスできます。ただし、ログイン画面からUbuntuマシンにアクセスすることはできませんでした。何らかの方法がありますが、詳細については知りません。誰かがこの問題の解決策を提供できますか?


他のマシンが同じLAN上にある場合は、VNCの代わりにXDMCPを使用するだけで可能です。同じLAN上にない場合、ネットワーク上の加速されていないXは遅すぎる可能性があります。
ロビングリーン

回答:


10

最善の策はxrdp をインストールすることですxrdpをインストールする。インストール後、RDPクライアントを使用してマシンに接続できます。ログイン画面に表示されるように、資格情報の入力を求められます。


xrdpをインストールしましたが、ログイン画面からubuntuマシンにアクセスできません。
karthick87

@karthick:VNCでマシンに接続していますか、それともRDPクライアントを使用していますか?
ネイサンオスマン

マシンにRDPクライアントが見つかりません。それはどこにありますか?
karthick87

@karthick:クライアントとしてUbuntuを使用していますか?その場合、使用するプログラムは「ターミナルサーバークライアント」と呼ばれます。Windowsでは、「リモートデスクトップ」IIRCと呼ばれます。
ネイサンオスマン

ええありがとう Terminal Server Clientのランチャーを作成することは可能ですか?
karthick87

5

全体的に、私はお勧めしx11vncます。

TL; DR

apt-get -y install x11vnc
x11vnc -storepasswd

パスワードを入力すると、デフォルト~/.vnc/passwd でINSECURE暗号化形式で保存されますキーがわかっているため、復号化できます。..ファイルシステムのパーミッションで保護する)

chmod 600 ~/.vnc/passwd

ヘルパースクリプトをローカルに保存します。

mkdir ~/bin/
curl https://gist.githubusercontent.com/trinitronx/76d2bf98489e5e3e84fa/raw/53885d87f91320b574ca4f7d609e4bb268274f68/start_x11vnc.sh  > ~/bin/start_x11vnc.sh && chmod +x ~/bin/start_x11vnc.sh

VNCクライアントホストから:

ssh -f  -L 5900:127.0.0.1:5900 -p 22 youruser@your-ubuntu-host.example.com '~/bin/start_x11vnc.sh && sleep 10'

または、VNCサーバーホストから次を実行します。

~/bin/start_x11vnc.sh

端子を介して(またはとデーモンとして、それを起動し-foreverinit.dディレクトリサービス成り上がりサービスsystemdにユニットただし、またはあなたが望みます)

ここで、クライアントホストから任意のVNCクライアントを実行し、ポイント127.0.0.1:5900します:、上記で保存したパスワードでログインします。

X11「マジッククッキー」を使用する

ほとんどのXディスプレイマネージャーGDMXDMKDMなど)は、初期X11サーバーを起動し、MIT Magic Cookie認証します。ディスプレイマネージャーに応じて、マジックCookieはさまざまな場所のいずれかにあります

Ubuntu GDMログイン画面でVNCセッションを開くことができたのは幸運でし* NOTE1 このスクリプトでマジックCookieを見つけました:

#!/bin/bash
DEFAULT_DISPLAY=:0
X11VNC_DISPLAY="$DEFAULT_DISPLAY"

if [ -x /usr/bin/x11vnc ]; then
     [ "$1" == '-nocache' ] && CACHE_FLAG='-noncache' || CACHE_FLAG='-noncache'
     [ "$2" == '-guess' ] && GUESS_FLAG='-auth guess' || GUESS_FLAG=''
         [ -f /root/.vnc/passwd ] && PASSWORD="/root/.vnc/passwd"
         [ -f $HOME/.vnc/passwd ] && PASSWORD="$HOME/.vnc/passwd"
         [ ! -z "$PASSWORD" ] && x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage
    EXIT_CODE=$?
     if [ $EXIT_CODE -ne 0 ]; then

        echo "\n*********************************************************************"
        echo "*** Could not start x11vnc!  Trying again with gdm MAGIC_COOKIE! ***"
        echo "*********************************************************************\n"

        # Old GDM location for Ubuntu <= 17.10
        MAGIC_COOKIE_FILE=`sudo find /var/run/gdm/ -iname database | grep for-gdm`

        # New GDM location for Ubuntu >= 17.10
        [ -z "$MAGIC_COOKIE_FILE" ] && NUM_MAGIC_COOKIE_FILE_SESSIONS=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' 2>/dev/null | wc -l`
        if [ -z "$MAGIC_COOKIE_FILE" -a "$NUM_MAGIC_COOKIE_FILE_SESSIONS" -gt 1 ]; then
            # Find the current user's session
            MAGIC_COOKIE_FILE=`sudo find /run/user/$(id -u) -iwholename '*/gdm/*' -iname '*Xauthority'`
            X11VNC_DISPLAY=":1"
        else
            # Find the GDM user's session (or whichever shows up first in ps list)
            # This should pick up the original gdm session which grabs :0
            # If you login after gdm login screen, your Xorg server may end up on another display!
            # Workaround for now is to restart x11vnc on that display number
            [ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' | head -n1`
        fi
        # Old lightdm location for Ubuntu <= 17.10
        [ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /var/lib -name '.Xauthority' -o -wholename '/var/run/lightdm/root/:0' | head -n1`
        #sudo bash -c "[ -z \"$MAGIC_COOKIE_FILE\" -a -e /var/run/lightdm/root/:0 ]" && MAGIC_COOKIE_FILE='/var/run/lightdm/root/:0'
        [ -n "$MAGIC_COOKIE_FILE" -a -z "$GUESS_FLAG" ] && AUTH_COOKIE_FLAG="-auth $MAGIC_COOKIE_FILE"
        [ ! -z "$PASSWORD" ] && sudo x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage ${AUTH_COOKIE_FLAG}
    fi
fi

このスクリプトはstart_x11vnc.sh、SSH経由でいつでも開始できます(gdmログイン画面でログインする前でも可能です)。x11vncサーバーを起動し、SSHトンネルを介して接続できます。(のホストのエントリを使用ssh -L 5900:127.0.0.1:5900または追加LocalForward 5900 127.0.0.1:5900します~/.ssh/config)。

注1:Ubuntu> = 17.10などのいくつかの新しいディストリビューションリリースでは、GDMログインXセッションの表示は、ログインしているユーザーのXセッションの表示とは完全に分離されています。したがって、最初にGDM Xセッションに接続し、ログインしてから、最後に新しく開始されたXセッションに接続を切断して再接続する必要があります。彼らがなぜこのように行うのかは謎ですが、このスクリプトの古いバージョンを壊しました。


動作しません。VNCクライアントが接続してすぐに閉じます
-Dims

:@Dimsは、コマンド使用vncviewer <remote_ip>
Gokul NC

スクリプトはUbuntuの新しいバージョンで壊れていました...ハックで更新し、再び動作するようにしました。現在、gdmディスプレイセッションはログインセッションから分離されているようです。Ubuntuでこのスクリプトを使用している場合、最初にGDMログイン画面に移動し、ログインするとこのXセッション画面が空白になります。ここで、最初のx11vncプロセスを停止し、スクリプトを再実行して、個別のログイン済みXセッションとディスプレイに再接続する必要があります。
TrinitronX

2

VNC sshリモート接続でGDMログインを有効にするには、X11vncを試してください。この回答も参照してください。


0

RDPを使用したくない場合、VNCでそれを行う方法は次のとおりです。

  1. X11VNCサーバーのインストール:(sudo apt-get install x11vncまたはUbuntu Software Centerから-> X11VNCサーバー)
  2. パスワードを設定します。

    sudo mkdir /etc/x11vnc
    sudo x11vnc -storepasswd /etc/x11vnc/passwd
    

    yパスワードの保存を選択します。

  3. /etc/initcalledに空のファイルを作成しますx11vnc.conf

    sudo -H gedit /etc/init/x11vnc.conf
    
  4. これをファイルに貼り付けます:

    start on login-session-start
    
    exec x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc/passwd -rfbport 5900 -bg -o /var/log/x11vnc.log
    
  5. 保存して閉じます

  6. Ubuntuを再起動します

それでおしまい!これで、ログインする前であっても、VNCクライアントに接続できるようになります。


これはうまくいきませんでした。
メイス

@maceおもしろいことに、それは私にとってはうまくいきました。おそらくUbuntuバージョンに依存していました。残念ながら、この手順を実行したとき、Ubuntuのバージョンを覚えていません。
ディディエA.

0

re:X11vncで試してください

x11vncは2011年9月から更新されていません!!!! 既知のバグがあり、ポップアップダイアログ(任意のウィンドウで[ファイル]メニューをクリックするなど)がセッションを切断するたびにx11vncのスタックスマッシュ終了をトリガーするバグが発生します。

Raspberry piは:0のデスクトップマネージャーセッションに接続できますが、なぜこれがUbuntuにとってこのような問題なのでしょうか?!?!最新のオペレーティングシステムでこれを行うには、孤立した7年前のプログラムに依存する必要があるのはなぜですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.