UbuntuマシンにVNC経由でリモートアクセスしたい。しかし、ユーザーがログインしている場合にのみ、Ubuntuマシンにアクセスできます。ログイン画面自体からVNC経由でubuntuマシンにアクセスしたいです。ログイン画面からすべてのWindowsマシンにアクセスできます。ただし、ログイン画面からUbuntuマシンにアクセスすることはできませんでした。何らかの方法がありますが、詳細については知りません。誰かがこの問題の解決策を提供できますか?
あなたの最善の策は、インストールすることです xrdp 。インストール後、RDPクライアントを使用してマシンに接続できます。ログイン画面の場合と同様に、資格情報の入力を求められます。
全体的に、 x11vnc
をお勧めします 。
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 [email protected] '~/bin/start_x11vnc.sh && sleep 10'
または、VNCサーバーホストから次を実行します。
~/bin/start_x11vnc.sh
ターミナル経由(または-forever
を init.dサービス 、 pstartサービス 、 systemdユニット としてデーモンとして起動しますまたはあなたが望む)
次に、クライアントホストから任意のVNCクライアントを実行し、127.0.0.1:5900
をポイントし、上記で保存したパスワードでログインします。
ほとんどの Xディスプレイマネージャー ( GDM 、 XDM 、 KDM など)X11の初期起動サーバーと それに対して認証 で MIT Magic Cookie と指定します。ディスプレイマネージャーに応じて、マジックCookieは さまざまな場所のいずれかにあります になります。
Ubuntu GDMログイン画面でVNCセッションを開くことができたのは幸運でした *注1 このスクリプト でマジック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
SSH経由でいつでもこのスクリプトを開始できます(start_x11vnc.sh
と呼びます)。gdm
ログイン画面からログインする前でも可能です。 x11vnc
サーバーを起動します。サーバーは SSHトンネル で接続できます。 (ssh -L 5900:127.0.0.1:5900
を使用するか、LocalForward 5900 127.0.0.1:5900
のホストのエントリに~/.ssh/config
を追加します)。
NOTE1:Ubuntu> = 17.10などのいくつかの新しいディストリビューションリリースでは、GDMログインXセッションの表示は、ログインしているユーザーのXセッションの表示とは完全に分離されています。したがって、最初にGDM Xセッションに接続し、ログインしてから、最後に新しく開始されたXセッションに接続を切断して再接続する必要があります。彼らがなぜこのように行うのかは謎ですが、このスクリプトの古いバージョンを壊しました。
VNC sshリモート接続でGDMログインを有効にするには、X11vncを試してください。 this answer も参照してください。
RDPを使用したくない場合、VNCでそれを行う方法は次のとおりです。
Sudo apt-get install x11vnc
(またはUbuntu Software Centerから-> X11VNCサーバー)パスワードを設定します。
Sudo mkdir /etc/x11vnc
Sudo x11vnc -storepasswd /etc/x11vnc/passwd
y
を選択してパスワードを保存します。
/etc/init
というx11vnc.conf
に空のファイルを作成します。
Sudo -H gedit /etc/init/x11vnc.conf
これをファイルに貼り付けます:
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
保存して閉じます
それでおしまい!これで、ログインする前でもVNCクライアントに接続できるようになります。
re:X11vncで試してください
x11vncは2011年9月から更新されていません!!!!既知のバグがあり、ポップアップダイアログ(任意のウィンドウの[ファイル]メニューをクリックするなど)がセッションを切断すると、x11vncのスタックスマッシュ終了をトリガーするバグが発生します。
Raspberry Piは:0のデスクトップマネージャーセッションに接続できます。なぜこれがUbuntuにとってこのような問題なのでしょうか?!?!最新のオペレーティングシステムでこれを行うには、なぜ孤立した7年前のプログラムに依存する必要があるのですか?