Fedora 29/gnome을 실행하는 Linux 상자가 있습니다. 직장에 있는 동안 항상 로그인 상태를 유지하므로 집에 도착하면 VNC를 통해 원격으로 연결하여 계속 작업할 수 있습니다.
이전 Fedora(제 생각에는 16개)에서는 정전/충돌 등이 발생한 경우 컴퓨터를 재부팅하고 VNC를 통해 로그인 화면을 볼 수 있도록 로그인 화면에서 x11vnc를 시작하는 방법에 대한 정보를 온라인에서 찾았습니다. 이것은 시스템화 이전 시대였습니다.
Fedora 29에서는 이 작업을 수행할 수 있는 방법을 찾지 못했습니다. 회사에서 로그인하면 x11vnc가 실행되는데 VNC를 통해 원격으로 로그인할 수 있게 해주는 마법의 물약을 찾을 수 없습니다. 이제 집에서 풀타임으로 일하기 때문에 로그아웃한 후에도 지속되는 세션을 시작할 수 없습니다. 나는 작업하는 사람을 찾아 그들에게 기계에 접근하는 방법을 설명하고 VNC 세션을 실행하기 위한 비밀번호를 알려주어야 합니다(예, VNC는 비밀번호로 보호되어 있습니다).
로그인 화면에서 부팅하도록 Fedora 29/gnome을 설정하는 방법을 아는 사람이 있습니까? 이것이 누락된 경우 telnet/ssh를 통해 이 문제가 발생하도록 하는 방법이 있습니까? 회사에서 구성한 노트북에서 Win10을 실행하고 있기 때문에 SSH를 통한 터널링은 실행 가능한 옵션이 아닌 것 같습니다.
이것은 /usr/lib/systemd/system/x11vnc.service입니다:
[Unit]
Description=X11vnc
After=graphical.target
[Service]
Type=forking
ExecStart=/root/X11vnc_init
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=X11VNC
SyslogFacility=local5
SyslogLevel=debug
[Install]
WantedBy=graphical.target
...이것은 /root/X11vnc_init입니다:
#!/usr/bin/perl
if($ARGV[0] eq "stop"){system("killall -9 x11vnc"); exit 0;}
$DM="";
$LIGHT=`pgrep -x lightdm`; chomp $LIGHT;
if($LIGHT){
$DM="lightdm";
print "Found Lightdm Display manager\n";
goto nextstep;
}
$KDM=`pgrep -x kdm`; chomp $KDM;
if($KDM){
$DM="kdm";
print "Found KDM Display manager\n";
goto nextstep;
}
$GDM=`pgrep -x gdm`; chomp $GDM;
if($GDM){
$DM="gdm";
$dm=`ps ax |grep gdm |grep \\\\-auth |grep -v grep`;chomp $dm;
($junk1,$junk2)=split(/-auth /,$dm);
($junk3,$junk4)=split(/\/gdm\/Xauthority /,$junk2);
$authfile="$junk3/gdm/Xauthority";
print "Found GDM Display manager with authfile $authfile\n";
goto nextstep;
}
$XDM=`pgrep -x xdm`; chomp $XDM;
if($XDM){
$dm=`ps ax |grep xdm |grep authdir |grep -v grep`; chomp $dm;
($a,$filename)=split(/authdir\/authfiles\//,$dm);
$authfile="/var/lib/xdm/authdir/authfiles/$filename";
$DM="xdm";
print "Found XDM Display manager with authfile $authfile\n";
goto nextstep;
}
$SDDM=`pgrep -x sddm`; chomp $SDDM;
if($SDDM){
$dm=`ps ax |grep sddm |grep var/run |grep -v grep`; chomp $dm;
($junk1,$junk2)=split(/-background/,$dm);
($junk3,$junk4)=split(/var\/run\/sddm\//,$junk1);
$filename="/var/run/sddm/$junk4";
$authfile="$filename";
$DM="sddm";
print "Found SDDM Display manager with authfile $authfile\n";
goto nextstep;
}
nextstep:
if($DM eq "gdm"){$AUTH="-auth $authfile";}
if($DM eq "lightdm"){ $AUTH="-auth /var/run/lightdm/root/:0 ";}
if($DM eq "kdm" ){ $AUTH="-auth guess ";}
if($DM eq "xdm" || $DM eq "sddm"){$AUTH="-auth $authfile ";}
if(!$DM){
print "NO Compatible dm found\n";
exit 0;
}
my $pid = fork();
$XCMD="/usr/bin/x11vnc \
-rfbauth /root/x11vncpasswd \
-nap -many -norepeat 5 -alwaysshared -dontdisconnect \
-shared -nolookup \
$AUTH \
-rfbport 5900 -no6 -xkb -display :0 &";
$XCMD=~s/\n/ /gm;
open tmpsh,">/tmp/tmpvnc.sh";
print tmpsh "#!/bin/bash
sleep 10;
$XCMD
";
close tmpsh;
system("chmod 755 /tmp/tmpvnc.sh");
system("/tmp/tmpvnc.sh &");
exit 0;
감사해요,
표시