[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Starta X-applikationer från ssh



> Den 31 december 2010 02:06 skrev Stefan Alfredsson <alfs@debian.org>:
>>
>> On 30 Dec 2010, at 23:53, Ivar Edebro wrote:
>>> Nu har jag,
>>> när KDE startat upp, skrivit xhost + i en konsol. Då kan jag logga in
>>> med
>>> ssh från en annan dator och starta lokala X-kommandon.
>>>
>>> Det stora problemet nu är säkerhetshålet att använda xhost +.
>>
>> En något säkrare variant är att bara öppna för vissa IP-adresser. T.ex.
>> xhost +192.168.0.123.
>
> Mycket bättre lösning.  Men fortfarande kan alla som loggar (hackar)
> in sig på den maskinen komma åt X11-servern.  Borde i det här fallet
> även fungera med xhost +localhost och sedan ansluta till localhost:1?
> Det eftersom han ju använder ssh för att logga in på maskinen.
>
>>> Någon som kan tipsa mig eller länka till läsning till hur jag på ett
>>> säkrare sätt kan auktorisera en eller flera datorer att starta lokala
>>> x-kommandon på lokal klient?
>>
>> MIT magic cookies via xauth är mekanismen för att lösa detta. Det går ut
>> på att den som vill ansluta till en X-server måste skicka med en
>> "hemlig/delad nyckel", som angetts av den som startat X-servern.
>>
>> Loggar du in med ssh till X-servern och med samma användare som startat
>> X går detta automatiskt eftersom den då använder din egen ~/.Xauthority
>> . Loggar du in med ssh med en annan användare, eller om du vill
>> fjärransluta med X-protokollet, behöver du kopiera kakan.
>>
>> Med xauth exporteras kakorna och kan importeras på de maskiner du vill
>> köra X-applikationen ifrån.
>> Manualsidan xauth(1) har ett exempel som du kan använda:
>>
>> EXAMPLE
>>       The most common use for xauth is to extract the entry for  the
>>  current
>>       display,  copy  it  to  another  machine,  and merge it into the
>> user's
>>       authority file on the remote machine:
>>
>>               %  xauth extract - $DISPLAY | rsh otherhost xauth merge -
>>
>>
>> (byt ut rsh mot ssh). När du sedan på otherhost kör en X-applikation
>> använder den ~/.Xauthority för att autenticera mot den display du
>> ansluter till (dvs din KDE session).
>>
>> Se också till att din X-server tillåter TCP-uppkopplingar. Detta är
>> avslaget som standard. Justeras i /etc/X11/xinit/xserverrc:
>
> Detta är väl inte nödvändigt om man kör X11-klienten från samma
> maskin?  Bara sätta omgivningsvariabeln "DISPLAY till ":1" eller
> starta kommandot med växeln "-display :1"  om man vill använda den
> andra arbetsplatsen.
>

Precis!
Det är just det jag haft problem med när jag sökt lösningar på mitt
problem tidigare då xauth löser problemet att låta en applikation köras på
en maskin men visa GUI på en annan.

Jag har två maskiner - foo och bar.
foo är en Debian med KDE. Är normalt sett inloggad som USER1 på KDE. (En
förutsättning?)
bar är en Windowsmaskin.

Jag kör ssh (putty) från bar till foo. Jag loggar in som användare USER1.
För att förenkla problemet så vill jag starta xclock så att den syns i den
nuvarande X-sessionen som USER1 redan har på foo. Antingen på :0.0 eller
på :0.1. Båda skärmarna finns och fungerar på foo.

Dvs, ingen x-forwarding. Ur foo's perspektiv körs xclock lokalt och visas
lokalt. Däremot så startas det genom en ssh-session från en annan dator.

Frågan är då om xhost är rätt lösning? Är xhost +localhost säkert nog? Jag
antar att USER1 måste vara inloggad på KDE lokalt på foo. Vilket
startupscript kan jag då ange xhost i för att det ska gälla i den
sessionen? Kan jag ange xhost +localhost "globalt"?

Tack för svar hittills.

Gott nytt år på er!!
//Ivar


Reply to: