dropbear startet nicht - debug.cfg Problem

duffy6

Mitglied
Mitglied seit
24 Dez 2007
Beiträge
309
Punkte für Reaktionen
2
Punkte
18
Hallo zusammen,

ich krieg keinen Zugang zu meinem Dropbear Server. Das Skript will wohl nicht so richtig.
Könntet ihr Euch das mal anschauen?

Das ganze läuft mit Freetz 1.0.3.

Code:
#!/bin/sh

LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led  ] ; then
  LED_DEVICE=/var/led
  echo "set led: ${LED_DEVICE}"
fi
# start internet phone led flashing
echo "set internet phone led to blink (modul=14, state=3)"
echo 14,3 > ${LED_DEVICE}

# check kernel version
KERNEL_VERSION=`uname -r | grep 2.6`
if [ -z "${KERNEL_VERSION}" ]
then
  KERNEL_VERSION="linux24"
  ETHERWAKE="etherwake"
else
  KERNEL_VERSION="linux26"
  ETHERWAKE="ether-wake"
fi

# init busybox var
BUSYBOX="/bin/busybox"

# wait to be able to interrupt in case of emergency
sleep 120

if [ -z "$(busybox | grep telnetd)" ]
then
  while !(ping -c 1 ftp.the-construct.com)
  do
    sleep 5
  done
  # check if file already exists
  if [ ! -f /var/tmp/busybox ]
  then
    wget -qO /var/tmp/busybox http://ftp.the-construct.com/files/${KERNEL_VERSION}/busybox
    # make it executable
    chmod +x /var/tmp/busybox
  fi
  # set busybox var
  BUSYBOX="/var/tmp/busybox"
fi
# start telnet deamon with password of web gui
${BUSYBOX} telnetd -l /sbin/ar7login

major=`grep tffs /proc/devices`
tffs_major=${major%%tffs}




# load SSH-Server (dropbear) and etherwake

# CONFIGURATION

# SSH
# port
dropbearport="22"
# password
PASSWD='HIER PASSWORT'

# Etherwake
# MAC address
wolmac="HIER EINE MAC"
# interface to use for WOL
# intf = std  - ata
# eth0 = LAN1 - WAN
# eth1 = LAN2 - LAN1
wolinterface="eth0"

# CONFIGURATION END

# try to load files from USB drive
for f in /var/media/ftp/*
do
  if [ -f ${f}/_binaries/dropbear ]
  then
    echo "${f}/_binaries/dropbear"
    cp ${f}/_binaries/dropbear /var/tmp/dropbear
  fi
  
if [ -f ${f}/_binaries/sftp-server ]
  then
    echo "${f}/_binaries/sftp-server"
    cp ${f}/_binaries/sftp-server /var/tmp/
fi

done

# check if file already exists
if [ ! -f /var/tmp/dropbear ]
then
  # wait for server
  while !(ping -c 1 ftp.the-construct.com)
  do
    sleep 5
  done
  # load files
  wget -qO /var/tmp/dropbear http://ftp.the-construct.com/files/${KERNEL_VERSION}/dropbear
fi

# try to load files from USB drive
for f in /var/media/ftp/*
do
  if [ -f ${f}/files/${KERNEL_VERSION}/busybox ]
  then
    echo "${f}/files/${KERNEL_VERSION}/busybox"
    cp ${f}/files/${KERNEL_VERSION}/busybox /var/tmp/busybox
  fi
done


# check if file already exists
if [ ! -f /var/tmp/busybox ]
then
  # wait for server
  while !(ping -c 1 ftp.the-construct.com)
  do
    sleep 5
  done
  # load files
  wget -qO /var/tmp/busybox http://ftp.the-construct.com/files/${KERNEL_VERSION}/busybox
fi

# make them executable
cd /var/tmp
chmod +x /var/tmp/busybox
chmod +x /var/tmp/dropbear
chmod +x /var/tmp/sftp-server

# set busybox var
BUSYBOX="/var/tmp/busybox"

# change root password
${BUSYBOX} sed -e "/root:/s#^root:[^:]*:#root:${PASSWD}:#" -i /var/tmp/shadow

# create symlink for dropbearkey
ln -s /var/tmp/dropbear dropbearkey

${BUSYBOX} uudecode -o /var/tmp/dropbear_rsa_host_key << 'RSA'
begin 600 /var/tmp/dropbear_rsa_host_key
HIER STEHT EIN KEY
end

RSA

${BUSYBOX} uudecode -o /var/tmp/dropbear_dss_host_key << 'DSS'
begin 600 /var/tmp/dropbear_dss_host_key
HIER STEHT EIN KEY
end

DSS

# start dropbear
sleep 60
/var/tmp/dropbear -p ${dropbearport} -r /var/tmp/dropbear_rsa_host_key -d /var/tmp/dropbear_dss_host_key

# create simplified WOL script
echo "${BUSYBOX} ${ETHERWAKE} -i ${wolinterface} ${wolmac}" > /var/tmp/startpc

# make it executable
chmod +x /var/tmp/startpc


#SFTP login Pfad Änderung: Bei login direkt in USB-Speicher Pfad
sed -i "s,:/:,:/var/media/ftp/:,g" /var/tmp/passwd


# stop internet phone led flashing
echo 14,1 > ${LED_DEVICE}

"Connection refused" ist die Fehlermeldung.

Wie könnte ich nach dem Fehler suchen?

Danke und Gruß
duffy6
 
Wenn du schon freetz benutzt, warum dann dropbear extern nachladen und nicht den aus freetz nutzen? Oder hast du etwa auch im Freetz den dropbear mit drin?
Ansonsten:
- Per telnet auf die Box und mal "ps" aufrufen
- evtl das Startscript direkt in der Shell starten, um Fehlermeldungen zu sehen (sh -x /var/flash/debug.cfg)

Jörg
 
Wenn du schon freetz benutzt, warum dann dropbear extern nachladen und nicht den aus freetz nutzen? Oder hast du etwa auch im Freetz den dropbear mit drin?
Das hätte ich gerne so gehabt. Allerdings hatte ich nach dem Booten der Freetz Images mit integriertem dropbear immer ne Bootschleife ;-(
Per telnet auf die Box und mal "ps" aufrufen
Code:
PID USER       VSZ STAT COMMAND
    1 root      1168 S    init       
    2 root         0 SWN  [ksoftirqd/0]
    3 root         0 SW<  [events/0]
    4 root         0 SW<  [khelper]
    5 root         0 SW<  [kthread]
    6 root         0 SW<  [kblockd/0]
   23 root         0 SW<  [pdflush]
   24 root         0 SW<  [pdflush]
   26 root         0 SW<  [aio/0]
   25 root         0 DW   [kswapd0]
   62 root         0 SW   [pm_info]
   66 root         0 SW<  [CPMAC]
   70 root         0 SW   [mtdblockd]
   96 root         0 SW   [tffsd_mtd_0]
  300 root         0 SWN  [jffs2_gcd_mtd6]
  325 root         0 SW<  [capi_oslib]
  326 root         0 SW<  [capi_oslib]
  327 root         0 SW   [capitransp]
  334 root         0 SW   [glob_codecs]
  350 root         0 SW<  [khubd]
  431 root      7376 R N  /usr/bin/avm/ctlmgr 
  445 root      1768 S    wpa_authenticator 
  499 root         0 SWN  [scsi_eh_0]
  500 root         0 SWN  [usb-storage]
  519 root      7376 S N  /usr/bin/avm/ctlmgr 
  521 root      7376 S N  /usr/bin/avm/ctlmgr 
  526 root      7376 S N  /usr/bin/avm/ctlmgr 
  559 root      2868 S    igdd 
  571 root      2428 S    multid 
  628 root      2912 S    dsld -i -n 
  634 root      2196 S    usermand 
  641 root      1168 S    telnetd -l /sbin/ar7login 
  642 root      5308 S    telefon a127.0.0.1 
  646 root      4200 S <  voipd 
  649 root      2216 S    pbd 
  650 root      2216 S    pbd 
  655 root      2216 S    pbd 
  656 root      2216 S    pbd 
  657 root      5308 S    telefon a127.0.0.1 
  658 root      5308 S    telefon a127.0.0.1 
  659 root      5308 S    telefon a127.0.0.1 
  673 root       656 S    /bin/run_clock -c /dev/tffs -d 
  707 root       808 S    ftpd -D -q -t 120 -m 15 -h FRITZ!Box Fon WLAN 7170 
  721 root      2220 S    /usr/bin/faxd -a 
  731 root      1420 S    capiotcp_server -p5031 -m99 
  750 root      1172 S    httpd -P /var/run/webcfg.pid -p 81 -c /mod/etc/httpd.
  791 root      2868 S    igdd 
  792 root      2868 S    igdd 
  793 root      2868 S    igdd 
  838 root      2736 S    mediasrv 
  845 root         0 RWN  [kdsld_token]
  847 root      2736 S    mediasrv 
  849 root      2736 S    mediasrv 
  850 root      2736 S    mediasrv 
  859 root      5308 S    telefon a127.0.0.1 
  860 root      5308 S    telefon a127.0.0.1 
  861 root      5308 S    telefon a127.0.0.1 
  951 root      2776 S N  smbd 
 1088 root      1312 S    /bin/ash /usr/sbin/callmonitor 
 1089 root      1172 S    logger -t callmonitor -p daemon.info 
 1110 root      1312 S    /bin/ash /usr/sbin/callmonitor 
 1111 root      1164 S    sleep 20000d 
 1112 root      1312 S    /bin/ash /usr/sbin/callmonitor 
 1113 root      1312 S    /bin/ash /usr/sbin/callmonitor 
 1114 root      1168 S    busybox nc 127.0.0.1 1012 
 1176 root      1172 S    httpd -P /var/run/webcfg-wol.pid -p 82 -c /mod/etc/ht
 1178 root      1168 S    init       
 1241 root      3212 S N  smbd 
 1609 root      3124 S N  smbd 
 1610 root      1188 S    -sh 
 1709 root      1192 S    httpd -P /var/run/webcfg.pid -p 81 -c /mod/etc/httpd.
 1710 root       872 S    /usr/bin/haserl -u 10000 -U /var/tmp rudi_shellcmd.cg
 1711 root      1180 S    /bin/sh 
 1715 root      1172 S    sh 
 1716 root      1168 S    sed -e s/&/\&amp;/g ; s/</\&lt;/g ; s/>/\&gt;/g 
 1717 root      1164 S    head -c 64000 
 1718 root      1172 R    ps

evtl das Startscript direkt in der Shell starten, um Fehlermeldungen zu sehen (sh -x /var/flash/debug.cfg)
Der Aufruf klappt, aber ohne Fehlermeldung.

Anscheinend wird der Dienst ja auch gar nicht gestartet (siehe "ps" oben).
hmm...ideen?

gruß
duffy6


EDIT: Nach dem manuellen Ausführen des Skriptes in der Shell kann ich den Dropbear erreichen.
Aber wieso funktioniert der Aufruf in der debug.cfg nicht?
 
Zuletzt bearbeitet:
Hattest du denn da das debug.cfg-Skript für den dropbear rausgenommen? Nicht, dass es da Überschneidungen gab.
Ansonsten: Hattest du bei freetz sftp mit angewählt und ggf. das sftp nicht statisch gebaut? Es könnte dann an den zur AVM-Version verschiedenen openssl Libraries liegen.

Zum debug.cfg: War denn das Binary schon vorhanden, als du das händisch aufgerufen hast? Wenn es so beim Start der Box nicht startet mal schauen, ob denn "/var/tmp/dropbear" existiert und auch ob es ausführbar ist. So könnte man das etwas eingrenzen.

Jörg
 
Hattest du denn da das debug.cfg-Skript für den dropbear rausgenommen? Nicht, dass es da Überschneidungen gab.
Das Skript hatte ich rausgenommen.

Ansonsten: Hattest du bei freetz sftp mit angewählt und ggf. das sftp nicht statisch gebaut? Es könnte dann an den zur AVM-Version verschiedenen openssl Libraries liegen.
sftp hatte ich mit ausgewählt. Wo hätte ich denn "statisch" wählen können. Nicht im menuconfig Menu oder?
Wenn sich damit die Bootschleife vermeiden liesse würde ich natürlich dropbear direkt mit einbauen.


Zum debug.cfg: War denn das Binary schon vorhanden, als du das händisch aufgerufen hast? Wenn es so beim Start der Box nicht startet mal schauen, ob denn "/var/tmp/dropbear" existiert und auch ob es ausführbar ist. So könnte man das etwas eingrenzen.
Hab jetzt mal die Files händisch kopiert und den Dropbear gestartet:
Dropbear startet ohne Fehler, aber erscheint nicht als Dienst (mit "ps" überprüft).
Zum Verzweifeln...
 
Beim freetz 1.0.3 war das wenn ich mich recht entsinne mit dem statischen Bauen entweder nicht drin oder nicht korrekt. Ich schaue das nochmal nach.

Zum Eingrenzen/Testen kannst du es ja mal ohne sftp bauen (und musst dann aber vermutlich manuell noch libssl und libcrypto wieder abwählen).

Jörg

EDIT In 1.0.3 war sftp noch nicht drin, wenn ich das richtig sehe???
Wenn du z.B. den 1.1-stable Branch nutzt, müsstest du, damit sftp wirklich statisch gebaut wird (das wählt man hier im 1.1-stable nicht bei "dropbear" sondern unter Testing->openssh), noch die Datei freetz-stable-1.1/make/openssh/openssh.mk etwas ändern:
Statt
Code:
...
$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_CONFIGURE)

$($(PKG)_BINARY): $($(PKG)_DIR)/.configured 
	PATH="$(TARGET_PATH)" \
		$(MAKE) -C $(OPENSSH_DIR) sftp-server \
		LDFLAGS=$(OPENSSH_LDFLAGS)

$($(PKG)_TARGET_BINARY): $($(PKG)_BINARY)
	$(INSTALL_BINARY_STRIP)
...
dann:

Code:
...
$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_CONFIGURE)

$($(PKG)_BINARY): $($(PKG)_DIR)/.configured 
	PATH="$(TARGET_PATH)" \
		$(MAKE) [B]LDFLAGS=$(OPENSSH_LDFLAGS)[/B] -C $(OPENSSH_DIR) sftp-server 

$($(PKG)_TARGET_BINARY): $($(PKG)_BINARY)
	$(INSTALL_BINARY_STRIP)
...

Und dann prüfen, ob ggf. die Libraries noch gewählt sind, und die dann abwählen.
 
Zuletzt bearbeitet:
Beim freetz 1.0.3 war das wenn ich mich recht entsinne mit dem statischen Bauen entweder nicht drin oder nicht korrekt. Ich schaue das nochmal nach.
Hätte auch gegen Freetz 1.1 nix einzuwenden. Es MUSS nicht 1.0.3 sein.

Besagte Probleme mit der Bootschliefe hatte ich bei 1.0.3 und 1.1!
 
Lass mal sftp weg, mach ein "make config-cleam-deps". Wenn am Edne das make noch ne Warnung wegen libcrypto/libssl kommt, dann hast du weitere Pakete mit den ssl-libs. Die musst du auch wo es geht statisch bauen oder erstmal deaktivieren.
 
Werde die Lösung mit debug.cfg weiter verfolgen. Hatte gestern schon wieder zweimal eine Bootschleife nach dem Flashen. Das nervt ;-)


Also zu der Lösung mit der debug.cfg zurück:
Wie kann es denn sein, dass das der Dropbear, wenn ich das Skript manuell aufrufe funktioniert und aus der debug.cfg heraus nicht?
Die Files werden noch ins tmp Verzeichnis kopiert, auch der dropbear Start verläuft ohne Fehlermeldung - aber der Dienst steht danach nicht unter "ps".

Hat da jmd ne Erklärung? Fehlersuchhinweise?

Danke und Gruß,
duffy6
 
Die debug.cfg hat nichts mit Freetz zu tun, sondern ist ein Bestandteil der AVM-Firmware.
Kam die Warnung am Ende das "make"-Prozesses nach entfernen aller Pakete oder Patches, die die libcrypto/libssl ersetzen und tr069 entfernen? Wenn ja, dann ist das kein Wunder, wenn nein, liegt es am Inhalt der dubg.cfg? Diese muss natürlich keine dropbear-Sachen mehr enthalten, wenn es per Freetz auf der Box ist.

Ich frage mich ehrlich, wieso du unbedingt an einer wenig Komfortablen Lösung per debug.cfg festhältst, dennoch aber bei den Freetz-Experten nachfragst, die das anders lösen.

Also allgemeine Vorgehensweise für dich für den Anfang:
Auf der Box wenn du im Verzeichnis der debug.cfg bist:
Code:
echo ""> debug.cfg
in deinem freetz-build-ordner:
Code:
rm -f .config
make menuconfig
nur und ausschliesslich deine Box anwählen, keine Patches, und als Pket ausschliesslich dropbear, kein sftp oder sonst etwas aus den Optionen dabei. Danach ein "beherztes"
Code:
make
und das entstandene Image auf die Box bekommen. Wenn es dann läuft, und dropbear entsprechend auch, kannst du beginne, deine PAketauswahl wieder zu erweitern, bis du die Warnung am Ende des make bekommst. Dies PAket solltest du dann nicht so einfach auf die Box bringen.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.