| | |
|
|
|
|
sshd unter optware/ipkg auf dem CH3WNAS: EAFNOSUPPORT |
|
|
|
Einige hatten es gestern im IRC vermutlich mitbekommen: Ich beschäftigte mich fast ausschließlich mit meinem zweiten NAS - dem CH3WNAS von Conceptronic (Grab'n'Go Wireless NAS Media Store). Unabhängig davon, dass man nur über Umwege brauchbare Anleitungen und Programme findet (dazu schreibe ich in den nächsten Tagen noch etwas), schaffte ich es einfach nicht auf den sshd von optware/ipkg zuzugreifen. Der steinige Weg, optware/ipkg zu installieren ist in den nächsten Tagen vielleicht noch einen Blogeintrag wert...
Das erste Problem war, dass man die Rechte der RSA und DSA Keys in /opt/etc/openssh ändern muss, da diese standardmäßig auf 0777 standen. Danach wurde es allerdings lustig: Der sshd lief, lauschte auf der richtigen IP, am richtigen Port, aber ich konnte keine Verbindung herstellen. Der Port war zwar erreichbar, aber die Verbindung wurde sofort wieder beendet. An der von Haus aus fehlerhaften passwd konnte es nicht liegen, die wird bereits bei jedem Neustart durch den das Script für den telnet Server gepatcht. Die Debug Ausgabe vom zugreifenden SSH Client brachte mich auch nicht weiter. Also startete ich den sshd im Debug Modus und danach auch über strace:
Code: # /opt/sbin/sshd -Dde
debug1: sshd version OpenSSH_5.5p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/opt/sbin/sshd'
debug1: rexec_argv[1]='-Dde'
socket: Address family not supported by protocol
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
reexec socketpair: Address family not supported by protocol |
Die letzte Zeile zeigt hier schon das Problem, denn die wiederholt sich bei jedem Verbindungsversuch. strace bestätigt das dann nochmals:
Code: socketpair(PF_FILE, SOCK_STREAM, 0, 0x7ffffd08) = -1 EAFNOSUPPORT (Address family not supported by protocol) |
An IPv6 liegt es schon mal nicht, das wird vom Kernel nicht unterstützt, und aber auch nirgends verwendet. Nach einigen Stunden (!) google'n fand ich in einem Forenbeitrag dann die Lösung:
Und tatsächlich: Mit -r funktioniert alles problemlos!
Code: [...]
Connection from 192.168.***.*** port 39582
debug1: Client protocol version 2.0; client software version OpenSSH_5.2
[...] |
Einfach in der /opt/etc/init.d/S40sshd dauerhaft anpassen
Beim nächsten Login meckert er allerdings immer rum, dass das Passwort veraltet ist und geändert werden muss. Dazu zwingt mich der sshd auch, indem er die /usr/sbin/passwd ausführt und danach die Verbindung beendet. Ich konnte mich also noch immer nicht einloggen. Grund dafür ist eine schlecht aufgesetzte /etc/shadow. Diese kann man durch das /mnt/HD_a2/fun_plug Script aber relativ einfach dauerhaft anpassen:
Code: # shadow Datei anpassen, da sonst der sshd immer das Passwort ändern will...
sed -i -e 's/:0:0:99999:7:::/:::::::/' /etc/shadow |
Bitte unbedingt den richtigen Pfad zu sed angeben, falls er nicht in $PATH enthalten ist! Und erst nach den Zeilen für den telnet Server eintragen. Diese Zeile deaktiviert alle Überprüfungen für abgelaufene Passwörter. Danke für den Denkanstoß, TheXception. Nach einem Neustart sollte alles funktionieren, vorausgesetzt man aktiviert den sshd noch dauerhaft in der fun_plug:
Code: # sshd starten
/opt/etc/init.d/S40sshd |
Nach all dem Ärger (fast alles braucht Anpassungen) überlege ich mir allerdings wirklich, das NAS in ein Debian zu chroot'en, soll angeblich nicht so schwierig sein
Als Abschluss noch mein persönliches fun_plug Script, relativ brauchbar mittlerweile
Code: #!/bin/sh
# dmesg
touch /mnt/HD_a2/log/dmesg.out
chmod 0777 /mnt/HD_a2/log/dmesg.out
dmesg > /mnt/HD_a2/log/dmesg.out
# ash/busybox linken
if [ ! -e /mnt/HD_a2/system/bin/ash ]
then
ln -s /mnt/HD_a2/system/bin/busybox /mnt/HD_a2/system/bin/ash
fi
# ...
if [ ! `grep root /etc/shadow` ]
then
echo kontroll.`grep admin /etc/shadow` >> /etc/shadow
/mnt/HD_a2/system/bin/sed -i -e 's/kontroll.admin/root/' /etc/shadow
fi
# telnet starten
/mnt/HD_a2/system/bin/sed -i -e 's/root:.*/root:x:0:0:Linux User,,,:\/:\/mnt\/HD_a2\/system\/bin\/ash/' /etc/passwd
cd /dev && /mnt/HD_a2/system/bin/busybox makedevs ptyp c 2 0 0 9
cd /dev && /mnt/HD_a2/system/bin/busybox makedevs ttyp c 3 0 0 9
/mnt/HD_a2/system/bin/busybox telnetd &
# Optware vorbereiten
echo "# Optware (by /mnt/HD_a2/fun_plug)" >> /etc/profile
echo "export PATH=$PATH:/opt/sbin:/opt/bin:/mnt/HD_a2/system/bin:/mnt/HD_a2/system/scripts" >> /etc/profile
if [ ! -e /opt ]
then
ln -s /mnt/HD_a2/opt /opt
fi
# # Auf "0" beim Port 12345 lauschen, für einen sauberen Shutdown
# if [ -e /mnt/HD_a2/system/scripts/shutdown_listener.sh ]
# then
# /mnt/HD_a2/system/scripts/shutdown_listener.sh &
# fi
# shadow Datei anpassen, da sonst der sshd immer das Passwort ändern will...
/mnt/HD_a2/system/bin/sed -i -e 's/:0:0:99999:7:::/:::::::/' /etc/shadow
# sshd starten
/opt/etc/init.d/S40sshd
#kill legacy upnp
kill -9 `pidof upnp`
# MediaTomb starten
if [ -e /mnt/HD_a2/system/scripts/start-mediatomb.sh ]
then
/mnt/HD_a2/system/scripts/start-mediatomb.sh &
fi
# LigHTTPd und PHP 5.1 starten
/mnt/HD_a2/system/share/lighttpd/lighttpd -f /mnt/HD_a2/system/share/lighttpd/lighttpd.conf -m /mnt/HD_a2/system/share/lighttpd & |
MfG Christian
|
Dieser Beitrag wurde insgesamt 7 mal geändert. Zuletzt am 26.08.2010, 12:20. |
Nach oben |
|
Kommentare: 0 |
Kommentare sind deaktiviert |
|
Autor |
Nachricht |
Für diesen Beitrag können zur Zeit keine neuen Kommentare verfasst werden. Kontaktiere den Autor des Beitrages, falls du Fragen dazu hast. |
Verwendete Zeitzone: CET (Europe/Berlin ) Aktuelles Datum & Uhrzeit: 13.01.2025, 21:43 |
Nach oben |
|
|
|
|
|
|
| | |