Kohaliku konsooli vĂ€lja lĂŒlitamine x11vnc kasutamise ajal

Tere, kÔik!

Internetis on palju artikleid selle kohta, kuidas seadistada kaugĂŒhendus olemasolevale Xorg sessioonile x11vnc kaudu, kuid ma ei leidnud kusagilt, kuidas samal ajal kohaliku monitori ja sisendit vĂ€lja lĂŒlitada, et keegi, kes istub kaugarvuti lĂ€hedal, ei nĂ€eks seda, mida teete, ja ei saaks nuppudele vajutada. Allpool on minu viis, kuidas muuta x11vnc sarnasemaks Windowsi RDP-le.

Nii et eeldame, et te juba oskate x11vnc kasutada, kui ei, siis saate googeldada vÔi lugeda nÀiteks siit.

Antud: kĂ€ivitame x11nvc, ĂŒhendame sellega kliendi, kĂ”ik töötab, kuid arvuti kohaliku konsooli on samuti vĂ”imalik vaadata ja sisestada.

Tahame: peame vĂ€lja lĂŒlitama kohaliku konsooli (monitor + klaviatuur + hiir) nii, et mitte midagi ei saa nĂ€ha ja ei saa sisse kirjutada.

LĂŒlitame monitorid vĂ€lja

Esimene mĂ”te oli lihtsalt monitor xrandri kaudu vĂ€lja lĂŒlitada, nĂ€iteks nii:

$ xrandr --output CRT1 --off

aga sel juhul hakkab akendesĂŒsteem (mul on KDE) arvama, et monitor on tĂ”eliselt vĂ€lja lĂŒlitatud ja hakkab aknaid ning paneele ringi viskama, kĂ”ik lĂ€heb paigast Ă€ra ja muutub kurvaks.
On huvitavam viis, mis seisneb monitori unereĆŸiimi saatmises, seda saab teha nĂ€iteks nii:

$ xset dpms force off

aga siinki ei ole kĂ”ik sujuv. SĂŒsteem Ă€ratab monitori esimesel sĂŒndmusel. Aitab lihtne lahendus tsĂŒkli nĂ€ol:

while :
do
    xset dpms force off
    sleep .5
done

Edasi ei hakanud ma mÔtlema - lihtsalt ei viitsinud, see tÀidab oma eesmÀrki - monitorid ei nÀita midagi, isegi kui nuppudele vajutada, hiirega tuhnida jne.

UPD:

AitĂ€h amarao veel ĂŒks viis, et vĂ€hendada heledust nulli:

$ xrandr --output CRT1 --brightness 0

LĂŒlitame sisendi vĂ€lja

Sise sisendi vĂ€ljalĂŒlitamiseks kasutasin xinputi. KĂ€ivitamisel ilma parameetriteta toob see vĂ€lja seadmete loendi:

$ xinput
⎡ Virtuaalne tuumikpointer                           id=2    [meister pointer  (3)]
⎜   ↳ Virtuaalne tuumik XTEST pointer                id=4    [orjade pointer  (2)]
⎜   ↳ Logitech USB Laser hiir                      id=9    [orjade pointer  (2)]
⎣ Virtuaalne tuumikklaviatuur                       id=3    [meister klaviatuur (2)]
    ↳ Virtuaalne tuumik XTEST klaviatuur           id=5    [orjade klaviatuur (3)]
    ↳ Toite nupp                                  id=6    [orjade klaviatuur (3)]
    ↳ Toite nupp                                  id=7    [orjade klaviatuur (3)]
    ↳ Unenupp                                    id=8    [orjade klaviatuur (3)]
    ↳ USB 2.0 Kaamera: HD 720P Webcam              id=10   [orjade klaviatuur (3)]
    ↳ HID 041e:30d3                               id=11   [orjade klaviatuur (3)]
    ↳ AT TĂ”lgitud komplekt 2 klaviatuur            id=12   [orjade klaviatuur (3)]

Seadmed Virtuaalne tuumik
 vĂ€lja lĂŒlitamine ei Ă”nnestu — kuvab vea, kuid teisi saab sisse ja vĂ€lja lĂŒlitada, nĂ€iteks nii saab minutiks arvutita jÀÀda:

xinput disable 9; sleep 60; xinput enable 9

Valmis lahendus

Oma juhtumi jaoks tegin skripti, mida kĂ€itan ssh sessioonis. See vaikib kohalikku sisendi ja tĂ”stab x11vnc serveri ĂŒles, ning skripti lĂ”petamisel taastab kĂ”ik nagu oli. LĂ”puks sain kolm skripti, siin need on (uuendatud).

switch_local_console:

#!/bin/sh

case $1 in
    1|on)
    desired=1
    ;;
    0|off)
    desired=0
    ;;
    *)
    echo "USAGE: $0 0|1|on|off"
    exit 1
    ;;
esac

keyboards=`xinput | grep -v "XTEST" | grep "slave  keyboard" | sed -re 's/^.*sid=([0-9]+)s.*$/1/'`
mouses=`xinput | grep -v "XTEST" | grep "slave  pointer" | sed -re 's/^.*sid=([0-9]+)s.*$/1/'`
monitors=`xrandr | grep " connected" | sed -re 's/^(.+) connected.*$/1/'`

for device in $mouses
do
    xinput --set-prop $device "Device Enabled" $desired
done

for device in $keyboards
do
    xinput --set-prop $device "Device Enabled" $desired
done

for device in $monitors
do
    xrandr --output $device --brightness $desired
done

disable_local_console:

#!/bin/sh

trap "switch_local_console 1" EXIT

while :
do
    switch_local_console 0
    sleep 1
done

Tegelikult peamine skript (mul on kaks ekraani, tĂ”stan ĂŒhe ĂŒhise serveri ja iga ekraani kohta ĂŒhe).

vnc_server:

#!/bin/bash

[[ ":0" == "$DISPLAY" ]] && echo "Should be run under ssh session" && exit 1

export DISPLAY=:0

killall x11vnc

rm -r /tmp/x11vnc
mkdir -p /tmp/x11vnc/{5900,5901,5902}

params="-fixscreen V=5 -forever -usepw -noxkb -noxdamage -repeat -nevershared"

echo "Starting VNC servers"

x11vnc -rfbport 5900 $params 2>&1 | tinylog -k 2 -r /tmp/x11vnc/5900 &
x11vnc -rfbport 5901 $params -clip 1920x1080+0+0 2>&1 | tinylog -k 2 -r /tmp/x11vnc/5901 &
x11vnc -rfbport 5902 $params -clip 1920x1080+1920+0 2>&1 | tinylog -k 2 -r /tmp/x11vnc/5902 &

echo "Waiting VNC servers"
while [ `ps afx | grep -c "x11vnc -rfbport"` -ne "4" ]
do
    sleep .5
done

echo "Disabling local console"
disable_local_console

echo "Killing VNC servers"
killall x11vnc

Tegelikult kĂ”ik. Logime sisse ssh, kĂ€ivitame vnc_server, kuni see elab, on meil vnc kaudu juurdepÀÀs ja kohalik konsool on vĂ€lja lĂŒlitatud.

AitÀh tÀhelepanu eest, tÀiustused ja parandused on teretulnud.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster