Für Fortgeschrittene: OpenSSH und SFTP aktivieren unter 2.0

Redaktion Macnotes, den 22. Juli 2008
Ein SDK fürs iPhone
Ein SDK fürs iPhone, Bild: Apple

Fü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

  1. Das Paket sudo installieren (entweder via Cydia oder mit apt-get install sudo).
  2. Ins mobile Terminal und mit su root alpine als Root-User einloggen und visudo eingeben. Hiermit keinen Mist bauen!
    1. Dann habe ich folgendes eingefügt: mobile ALL=(ALL) NOPASSWD: ALL.
    2. 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.
  3. Im Pfad /usr/bin eine Datei erzeugen, die den Namen sshoff trägt, und zwar mittels nano -w /usr/bin/sshoff. Für folgendes ein:
    #!/bin/sh
    sudo launchctl unload -w /Library/LaunchDaemons/com.openssh.sshd.plist
  4. Vergesst nicht die Datei ausführbar zu machen mit chmod a+x /usr/bin/sshoff.
  5. … 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 dem launchctl das Kommando load übergeben wird. Also mit nano -w /usr/bin/sshon das Gegenstück erstellen. Das hat diesen Inhalt:
    #!/bin/sh
    sudo launchctl load -w /Library/LaunchDaemons/com.openssh.sshd.plist
  6. Auch diese Datei macht Ihr wieder ausführbar: chmod a+x /usr/bin/sshon.
  7. 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.


Ähnliche Nachrichten