Bei einem MITM-Angriff könnten auch SSL-Gesicherte Verbindungen abgehorcht werden - vorausgesetzt du ignorierst die Zertifikatswarnungen!
Du musst dir das so vorstellen, dass der Angreifer einen weiteren Rechner zwischen dir und dem echten Server positioniert. Damit könnte er schonmal den gesamten unverschlüsselten Datenverkehr mitlesen, ohne dass du was davon merkst, weil das komplett transparent abläuft.
Bei einer SSL-Verbindung müsste er dann allerdings vortäuschen, der Server zu sein, den du erreichen willst. Jetzt muss man dazu wissen, dass es bei SSL mehrere Zertifikate gibt.
Einmal das Schlüsselpaar mit privatem und öffentlichem Schlüssel:
Der öffentliche Schlüssel kann nur zur
Entschlüsselung genutzt werden, der private Schlüssel kann dafür
verschlüsseln.
Ein solches Schlüsselpaar existiert sowohl auf dem Server als auch auf dem Client.
Beim Aufbau der SSL-Verbindung werden die öffentlichen Schlüssel zwischen Client und Server ausgetauscht, aber auch dies geschieht verschlüsselt. Mit viiiiel Aufwand kann ein Angreifer damit vielleicht nachträglich (nach ein paar Jahren) die ganzen Daten entschlüsseln, aber er kann sie nicht manipulieren.
Und dann gibt es noch die Root-Zertifikate der ganzen "vertrauenswürdigen" Zertifizierungsstellen wie Thawte, Verisign, StartSSL etc...
Wenn man sich von denen ein Zertifikat signieren lässt, ist das vergleichbar mit einer notariellen Beglaubigung - es wird damit durch die Zertfizierungsstelle bestätigt, dass der Antragssteller zumindest E-Mail-Technisch verifiziert wurde und dieser auch Zugriff auf die Postfächer "webmaster@domain" oder "hostmaster@domain" hat - weil an die kommen normalerweise ja nur die Inhaber ein Domain ran.
Ein selbstsigniertes Zertifikat wird deshalb bei keinem Browser als vertrauenswürdig eingestuft, weil sich das ja jeder hätte generieren können
Zurück zu Lück... äh, zum MITM-Angriff.
Also, da der Angreifer ja entweder sofort an die Daten oder diese sogar manipulieren will, muss er sich als der Server ausgeben, den du erreichen wolltest. Zum echten Server baut dieser Angreiferrechner dann eine ganz normale Verbindung auf, die er als direkter Client ja problemlos entschlüsseln kann.
In deine Richtung baut er auch eine verschlüsselte Verbindung auf - aber da er ja kein von Thawte oder Verisign signiertes Zertfikat bekommen kann, müsste er ein selbstsigniertes Zertifikat benutzen, was vom Browser zurecht als nicht vertrauenswürdig eingestuft wird und dir dann ein Alarmsignal sein sollte, dass dies nicht das echte Zertifikat sein kann.
Eben diese Kontrolle hast du bei selbstsignierten Zertifikaten nicht, weshalb ich dir als kostenlose Alternative den weiter oben empfohlenen Anbieter "StartSSL" ans Herz legen. Der signiert dir für Lau deine Zertifikate, die in allen Browsern != Opera ohne Warnung akzeptiert werden.
Zu deiner Frage mit der SSH-Authentifizierung per öffentlichem Schlüssel:
Der öffentliche Schlüssel wird auf dem Server gelagert, den privaten Schlüssel musst du auf deinem Rechner lagern und möglichst nirgendwo außerhalb deines Rechners ohne zusätzliche Verschlüsselung auslagern.