Für Fortgeschrittene: OpenSSH und SFTP aktivieren unter 2.0
Redaktion Macnotes, den 22. Juli 2008Für die neue iPhone-Firmware 2.0 gibt es ja noch keine Prefs-Programme. Entsprechend habe ich mich mal ein wenig mit der OpenSSH (GNU-Version von Secure Shell) auseinandergesetzt. Damit konnte mich recht schnell mit dem iPhone verbinden. Nun möchte ich Euch zeigen, wie auch Ihr das tun könnt.
Zuerst: Warum sollte man das tun wollen? Nun, um z. B. die geliebten NES-Spiele weiter spielen zu können, oder aber einfach auch nur, um mir die Firmware im System anzuschauen.
Warnung:
Wer sich nicht mit Unix auskennt, sollte dies auf gar keinen Fall nachmachen!
Cydia liefert Tools
Für alle anderen sei vermerkt, dass Cydia dank des Debian-Unterbaus eigentlich bereits alles, was im alten BSD-Paket drin war, wie gehabt sauber implementiert. Es stellt auch die GNU-Tools, Disktools, usw. zur Verfügung. Die Darwin-Version hat sich nicht groß geändert.
OpenSSH installieren
Ich wollte gerne mit dem Finder bzw. der Bash, oder auch mit Apps wie Cyberduck oder Transmit Dateien auf mein iPhone schieben können, oder von da herunterladen. Es bietet sich das Paket OpenSSH in Sauriks Repo an. Installiert es also einfach.
Damit ich selbst auch auf dem iPhone noch was machen kann, muss MobileTerminal dazu. Die Steuerung über Gesten/Touch geht noch nicht. Schuld haben wohl die Änderungen im 2.0 UI-Kit. Das ist aber auch nur eine Frage der Zeit.
Verbindung per SSH
Verbindet Euch dann einfach per ssh
verbinden mit ssh root@iphone_IPADRESS
. Gebt als Passwort „alpine“ ein. Schon habt ihr in der Shell auf dem Mac oder unter Linux, oder im PuTTY unter Windows das Darwin-System zum Rumspielen.
Das Mobileterminal und auch alle Programme laufen allerdings unter dem User „mobile“. Dies ist eine der großen Änderungen in 2.0, die schon mit 1.1.4 vorbereitet wurde. Der SSH Daemon (=Dienst) ist im System verankert und startet nachdem er die Keys erstellt hat auch zügig, sobald der Port 22 von außen angesprochen wird.
Dienst starten/stoppen
- Das Paket sudo installieren (entweder via Cydia oder mit
apt-get install sudo
). - Ins mobile Terminal und mit
su root alpine
als Root-User einloggen undvisudo
eingeben. Hiermit keinen Mist bauen!- Dann habe ich folgendes eingefügt:
mobile ALL=(ALL) NOPASSWD: ALL
. - Speichern mit
:wq
. Damit wird dem User „mobile“ erlaubt, alle Programme mit dem Commando sudo vorangestellt auszuführen, ohne dass nach dem Root-Passwort gefragt wird. Warum? Damit wir den ssh-Daemon stoppen und starten können, ohne als Superuser eingeloggt zu sein.
- Dann habe ich folgendes eingefügt:
- Im Pfad
/usr/bin
eine Datei erzeugen, die den Namensshoff
trägt, und zwar mittelsnano -w /usr/bin/sshoff
. Für folgendes ein:
#!/bin/sh
sudo launchctl unload -w /Library/LaunchDaemons/com.openssh.sshd.plist
- Vergesst nicht die Datei ausführbar zu machen mit
chmod a+x /usr/bin/sshoff
. - … und weil Stoppen das eine ist, man den ja aber ggfs. wieder braucht, baue ich mir noch eine
sshon
Datei. Verfahrt wie oben, nur dass nach demlaunchctl
das Kommandoload
übergeben wird. Also mitnano -w /usr/bin/sshon
das Gegenstück erstellen. Das hat diesen Inhalt:
#!/bin/sh
sudo launchctl load -w /Library/LaunchDaemons/com.openssh.sshd.plist
- Auch diese Datei macht Ihr wieder ausführbar:
chmod a+x /usr/bin/sshon
. - Jetzt gebt Ihr im MobileTerminal
sshoff
ein, und weg isser. Vorhandene (aktive) Verbindungen werden offen gehalten, jedoch wird der Daemon nicht neu gestartet und er frisst auch keinen Akku mehr leer.
Probiert’s aus, zerstört auf keinen Fall die visudo
und denkt daran, dass durch die Sudo-Rechte ohne Passwort euer System unsicher ist. Sobald es eine Version der BossPreffs oder so geben wird, ist das hier auch hinfällig.