• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

NX via Router und DSL

A

Anonymous

Gast
Hallo,
ich möchte gerne einmal folgendes realisieren - sofern möglich.

System SuSE10.2 in der Schule und privat. In der Schule geht es über einen Linuxrouter per DSL6000 ins Internet

Ich kann folgendes machen:
Von zuhause per ssh -X -C user@router_ip auf den Linux-Router anmelden.
Dann von dort per ssh -X -C userxy@Terminalserver_ip auf den SuSE10.2 TS anmelden. Dort dann zB durch Eingabe auf der Konsole von konqueror denselbigen starten. Das klappt auch alles, nur ist es recht zäh.

Mittels NomaschineNX sollte doch ein erheblicher Perfomancegewinn möglich sein. Allerdings weiß ich nicht wie, da ich mit Nomaschine noch keinerlei Erfahrungen habe.
Kann mir jemand weiterhelfen?

cu
 
Ich habe eine ähnliche Konstruktion, auch wenn ich einen SSH-Hop weniger habe.
Man kann NX über SSH tunneln. Das stellt einen jedoch vor das Problem, daß Port 22 ein privilegierter ist und nicht so einfach geforwarded (seltsames Wort) werden kann. Deshalb habe ich das so gelöst, daß bei mir zwei SSH-Dämonen laufen, einer für die normale Shell, der nach außen lauscht und einer, der nur an localhost lauscht auf Port 2222 (einfach ein beliebiger Port jenseits von 1024, 2222 war gut zu merken). Dazu habe ich die /etc/init.d/sshd erweitert (alle configs unten angehängt) und die /etc/nxserver/node.conf so geändert, daß NX auf Port 2222 lauscht und eine zusätzliche /etc/ssh/sshd_config.extern gebaut. Nun tunnele ich diesen Port und verbinde mich dann mit dem Tunnel. Klappt einwandfrei und hat den Vorteil, daß kein SSH-Server nach außen lauscht, der eine Passwortidentifikation zuläßt, was NX aber benötigt. Ich denke, das könnte auch für Dich funktionieren.

/etc/ssh/sshd_config

Code:
Port 2222
ListenAddress 0.0.0.0
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys2
PasswordAuthentication no
UsePAM yes
X11Forwarding yes 
Subsystem       sftp    /usr/lib/ssh/sftp-server
LANG, see sshd_config(5).
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 
AcceptEnv LC_IDENTIFICATION LC_ALL

/etc/ssh/sshd_config_extern
Code:
Port 23
Protocol 2

LoginGraceTime 2m
PermitRootLogin without-password

RSAAuthentication no
PubkeyAuthentication yes

PasswordAuthentication no

UsePAM no
X11Forwarding yes 
X11DisplayOffset 10
X11UseLocalhost yes
PermitUserEnvironment yes
Compression yes

Subsystem       sftp    /usr/lib/ssh/sftp-server

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 
AcceptEnv LC_IDENTIFICATION LC_ALL
GatewayPorts no
AllowTcpForwarding yes
KeepAlive yes
IgnoreRhosts yes
IgnoreUserKnownHosts no
PrintMotd yes
StrictModes no
PermitEmptyPasswords no

/etc/init.d/sshd
Code:
#! /bin/sh
# Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany.
#
# Author: Jiri Smid <feedback@suse.de>
#
# /etc/init.d/sshd
#
#   and symbolic its link
#
# /usr/sbin/rcsshd
#
### BEGIN INIT INFO
# Provides: sshd
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start the sshd daemon
### END INIT INFO

SSHD_BIN=/usr/sbin/sshd
test -x $SSHD_BIN || exit 5

SSHD_SYSCONFIG=/etc/sysconfig/ssh
test -r $SSHD_SYSCONFIG || exit 6
. $SSHD_SYSCONFIG

#Die PIDFILE-Variablenverwendung habe ich gestrichen, da sich sonst eventuell die beiden sshds in die Quere kommen
SSHD_PIDFILE=/var/run/sshd.init.pid

#Die Optionen f�r den extern lauschenden sshd
SSHD_OPTS="-f /etc/ssh/sshd_config_extern -p 23"

. /etc/rc.status

# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_failed        set local and overall rc status to failed
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status

# First reset status of this service
rc_reset

case "$1" in
    start)
        if ! test -f /etc/ssh/ssh_host_key ; then
            echo Generating /etc/ssh/ssh_host_key.
            ssh-keygen -t rsa1 -b 1024 -f /etc/ssh/ssh_host_key -N ''
        fi
        if ! test -f /etc/ssh/ssh_host_dsa_key ; then
            echo Generating /etc/ssh/ssh_host_dsa_key.
            
            ssh-keygen -t dsa -b 1024 -f /etc/ssh/ssh_host_dsa_key -N ''
        fi
        if ! test -f /etc/ssh/ssh_host_rsa_key ; then
            echo Generating /etc/ssh/ssh_host_rsa_key.
            
            ssh-keygen -t rsa -b 1024 -f /etc/ssh/ssh_host_rsa_key -N ''
        fi
        echo -n "Starting SSH daemon"
        ## Start daemon with startproc(8). If this fails
        ## the echo return value is set appropriate.

        startproc -f /usr/sbin/sshd 
#zweiter, extern lauschender sshd
        startproc -f /usr/sbin/sshd $SSHD_OPTS 

        # Remember status and be verbose
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down SSH daemon"
        ## Stop daemon with killproc(8) and if this fails
        ## set echo the echo return value.

        killproc -TERM /usr/sbin/sshd

        # Remember status and be verbose
        rc_status -v
        ;;
    try-restart)
        ## Stop the service and if this succeeds (i.e. the 
        ## service was running before), start it again.
        $0 status >/dev/null &&  $0 restart

        # Remember status and be quiet
        rc_status
        ;;
    restart)
        ## Stop the service and regardless of whether it was
        ## running or not, start it again.
        $0 stop
        $0 start

        # Remember status and be quiet
        rc_status
        ;;
    force-reload|reload)
        ## Signal the daemon to reload its config. Most daemons
        ## do this on signal 1 (SIGHUP).

        echo -n "Reload service sshd"

        killproc -HUP /usr/sbin/sshd

        rc_status -v

        ;;
    status)
        echo -n "Checking for service sshd "
        ## Check status with checkproc(8), if process is running
        ## checkproc will return with exit status 0.

        # Status has a slightly different for the status command:
        # 0 - service running
        # 1 - service dead, but /var/run/  pid  file exists
        # 2 - service dead, but /var/lock/ lock file exists
        # 3 - service not running

        checkproc /usr/sbin/sshd

        rc_status -v
        ;;
    probe)
        ## Optional: Probe for the necessity of a reload,
        ## give out the argument which is required for a reload.

        test /etc/ssh/sshd_config -nt $SSHD_PIDFILE && echo reload
        ;;
    *)
        echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
        exit 1
        ;;
esac
rc_exit

/etc/nxserver/node.conf
Code:
----snip-----
# General FreeNX directives
#########################################################################

# The host name which is used by NX server. It's should be used if it's
# different than the default hostname (as returned by `hostname`)
#SERVER_NAME="$(hostname)"

# The port number where local 'sshd' is listening.
SSHD_PORT=2222
-----snap-----
 
Oben