Forum: PC Hard- und Software Guacamole + xrdp => keine Verbindung


von Matthias S. (da_user)


Lesenswert?

Tag,

ich habe heute Guacamole als Docker-Compose (von "boschkundendienst" auf 
GitHub) eingerichtet, funktioniert soweit ganz gut: SSH-Verbindungen 
funktionieren und eine RDP-Verbindung zu einem Windows10-Rechner klappt 
auch.

Nun versuche ich auf einen Raspi mit aktuellen Raspian und xrdp 
zuzugreifen. Von Windows aus mit dem eingebauten RDP-Clienten 
funktioniert das.

Guacamole schmeißt hierbei allerdings einen Fehler. Im Browser:
1
Der entfernte Computer ist gegenwärtig nicht erreichbar. Versuchen Sie die Aktion erneut oder kontaktieren Sie Ihren Systemadministrator.

Der Guacamole-Container:
1
21:31:41.603 [http-nio-8080-exec-8] INFO  o.a.g.tunnel.TunnelRequestService - User "user" connected to connection "4".
2
Exception in thread "Thread-76" java.lang.IllegalStateException: Message will not be sent because the WebSocket session has been closed
3
  at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:449)
4
  at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:307)
5
  at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:249)
6
  at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:191)
7
  at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:36)
8
  at org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:152)
9
  at org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.access$200(GuacamoleWebSocketTunnelEndpoint.java:53)
10
  at org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$2.run(GuacamoleWebSocketTunnelEndpoint.java:253)
11
21:31:48.130 [http-nio-8080-exec-8] INFO  o.a.g.tunnel.TunnelRequestService - User "user" disconnected from connection "4". Duration: 6525 milliseconds

Am vielversprechendsten ist wohl das Log aus dem guacd-Container:
1
guacd[1722]: INFO:  RDP server closed/refused connection: Server refused connection (wrong security type?)

Ich habe jetzt in den Einstellungen unter Parameter - Authentifizierung 
- Sicherheitsmodus alle Varianten durch. Keine Besserung.

Hat wer evtl. sachdienliche Hinweise?

von Eric I. (i716)


Lesenswert?

Trage in die user-mapping config folgendes ein

<param name="security">tls</param>
<param name="ignore-cert">true</param>

Dann sollte es funktionieren

von Matthias S. (da_user)


Lesenswert?

Hi,

Danke für den Hinweis.
Frage: user-mapping config File am Raspi oder in einem der Container?

von Eric I. (i716)


Lesenswert?

Matthias S. schrieb:
> Hi,
> Danke für den Hinweis.
> Frage: user-mapping config File am Raspi oder in einem der Container?

Ich kenne dein Docker-Setup nicht.
Aber natürlich muss die XML Datei im Container bearbeitet werden.
Wenn Du die Änderung über einen Neustart des Containers hinweg 
beibehalten möchtest, solltest Du die config Dateien natürlich in einem 
Volume oder bind mount vorhalten.

von Matthias S. (da_user)


Lesenswert?

Eric I. schrieb:
> Aber natürlich muss die XML Datei im Container bearbeitet werden.

So natürlich war das für mich nicht, kann ja auch sein, dass das eine 
Datei ist, die zum xrdp-Server gehört ;-)

Eric I. schrieb:
> Ich kenne dein Docker-Setup nicht.

Ich hänge unten meine aktuelle Docker-Compose an, da ich hier 
tatsächlich noch irgendwie ein Problem habe. Basis ist folgendes 
Compose:
https://github.com/boschkundendienst/guacamole-docker-compose

Anscheinend ist es so, dass beim guacd-Container das /etc/guacamole (in 
diesem sitzt die user-mapping.xlr) nicht so einfach nach außen mountbar 
ist, man muss das mit einer Env-Variablen machen:
1
docker run --name some-guacamole    \
2
    ...
3
    -v /local/path:/some-directory   \
4
    -e GUACAMOLE_HOME=/some-directory \
5
    -d -p 8080:8080 guacamole/guacamole
https://guacamole.apache.org/doc/gug/guacamole-docker.html#guacamole-docker-guacamole-home

Das habe ich über ein Volume gemacht. Verzeichnis besteht ist aber leer. 
Also eine user-mapping.xlr erstellt und die von dir geposteten Zeilen da 
reingeschrieben.
Problem bleibt damit leider immer noch das gleiche.

Hier mein Docker-Compose (die Kommentare vorher lasse ich weg, lassen 
sich über den GitHub-Link abrufen. Nginx habe ich weggelassen):
1
version: '2.0'
2
3
# networks
4
# create a network 'guacnetwork_compose' in mode 'bridged'
5
networks:
6
  guacnetwork_compose:
7
    driver: bridge
8
9
volumes:
10
  guacamole_home:
11
12
# services
13
services:
14
  # guacd
15
  guacd:
16
    container_name: guacd_compose
17
    image: guacamole/guacd
18
    networks:
19
      guacnetwork_compose:
20
    restart: always
21
    volumes:
22
    - ./drive:/drive:rw
23
    - ./record:/record:rw
24
  # postgres
25
  postgres:
26
    container_name: postgres_guacamole_compose
27
    environment:
28
      PGDATA: /var/lib/postgresql/data/guacamole
29
      POSTGRES_DB: guacamole_db
30
      POSTGRES_PASSWORD: 'ChooseYourOwnPasswordHere1234'
31
      POSTGRES_USER: guacamole_user
32
    image: postgres:15.2-alpine
33
    networks:
34
      guacnetwork_compose:
35
    restart: always
36
    volumes:
37
    - ./init:/docker-entrypoint-initdb.d:z
38
    - ./data:/var/lib/postgresql/data:Z
39
40
  # guacamole
41
  guacamole:
42
    container_name: guacamole_compose
43
    depends_on:
44
    - guacd
45
    - postgres
46
    environment:
47
      GUACD_HOSTNAME: guacd
48
      POSTGRES_DATABASE: guacamole_db
49
      POSTGRES_HOSTNAME: postgres
50
      POSTGRES_PASSWORD: 'ChooseYourOwnPasswordHere1234'
51
      POSTGRES_USER: guacamole_user
52
      GUACAMOLE_HOME: /guacamole-home
53
    image: guacamole/guacamole
54
    volumes:
55
    - guacamole_home:/guacamole-home
56
    links:
57
    - guacd
58
    networks:
59
      guacnetwork_compose:
60
    ports:
61
## enable next line if not using nginx
62
    - 9080:8080/tcp # Guacamole is on :8080/guacamole, not /.
63
## enable next line when using nginx
64
##    - 8080/tcp
65
    restart: always

von Matthias S. (da_user)


Lesenswert?

Tag,

ich habe heute festgestellt, dass der RasPi tatsächlich gar nicht mehr 
im Netzwerk erreichbar war. Das könnte auch schon bei meinen Tests am 
30. so gewesen sein.
Neustart hat das Problem behoben und seitdem ist auch die RDP-Verbindung 
über Guacamole möglich. Das erstellen der user-mapping.xml dürfte also 
was gebracht haben.

Vielen Dank Eric!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.