Wie ändere ich, was ssh: // verwendet?

9

Auf meinem Macbook Pro mit Sierra (10.12.4) scheint es zwei verschiedene SSH-Client-Versionen zu geben. Wenn ich folgendes mache:

$> ssh dev

Es funktioniert gut. Wenn ich jedoch Folgendes tue:

$> open ssh://dev

Es öffnet sich ein neues Terminal, das sich dann über die Verschlüsselungseinstellungen in meiner ssh_configDatei beschwert . Bei der Untersuchung der spezifischen Beschwerden stellte ich fest, dass beim Öffnen über den Protokollhandler eine ältere Version von SSH verwendet wird.

Wie ändere ich, zu welchem ​​SSH-Client das Protokoll umleitet?

Joshua Gilman
quelle
1
Was erhalten Sie, wenn Sie "which ssh" eingeben, und was erhalten Sie, wenn Sie "ps aux | grep ssh" eingeben, nachdem Sie den zweiten Befehl ausgeführt haben?
Brethil
Welche ssh: /usr/local/bin/ssh Der SSH-Prozess beendet sich selbst, nachdem er die zweite Methode durchlaufen hat. Ich bin mir nicht sicher, wie ich ihn am Leben erhalten würde, um ihn in der Prozessliste zu sehen.
Joshua Gilman

Antworten:

4

Sie können ein Tool verwenden, mit dem Sie die Standard-App für bestimmte URL-Handler sehr bequem ändern können.

Ändern Sie das SSH-URL-Schema mit RCDefaultApp

  1. Laden Sie RCDefaultApp Version 2.1 herunter
  2. Installieren Sie das Einstellungsfenster
  3. Gehen Sie zu Systemeinstellungen> Standard-Apps> URLs
  4. Gehe zu "ssh"
  5. Wählen Sie auf der rechten Seite Ihre bevorzugte Anwendung aus

Es wird diesem Screenshot sehr ähnlich sehen:

RCDefaultApp Screenshot mit dem Einstellungsbereich

oa-
quelle
Das Problem basiert nicht auf der Terminalanwendung, sondern darauf, welche SSH-Binärdatei aufgerufen wird. Ich kann die Anwendung so ändern, dass iTerm anstelle von Terminal geöffnet wird, und das Problem besteht weiterhin.
Joshua Gilman
1

Um Ihre Frage zum Ändern des ssh: // Protokollclients zu beantworten,

Unter /superuser//a/548122/202319 können Sie Änderungen vornehmen ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist, um jede App mit einer registrierten Kennung zu öffnen, wenn ssh: // oder eine andere URL gefunden wird.

Dies ist keine perfekte Lösung, da noch ein App-Bundle erforderlich ist oder Terminal.app verwendet wird (was Sie bereits sehen).

Sie sollten jedoch in der Lage sein, Ihre .login- oder .bashrc-Dateien zu reparieren, damit die Standard-Terminal.app-Shell ohnehin Ihre bevorzugte verwendet ssh.

Kent
quelle
1
Können Sie die .loginund .bashrcKonfigurationsänderungen näher erläutern ? Das Problem ist nicht, welche Terminal-App geöffnet wird, sondern welche SSH-Binärdatei ausgeführt wird. Wenn Sie sshinnerhalb einer Terminalsitzung anrufen, wird eine Binärdatei aufgerufen. Wenn das Terminal jedoch die Verbindung über das Protokoll öffnet, wird eine andere SSH-Binärdatei aufgerufen.
Joshua Gilman
0

Ich habe momentan keinen Mac zum Überprüfen, aber meine Vermutung ist:

Mac kommt mit ssh client / usr / bin / ssh

Sie haben eine neuere Version unter / usr / local / bin / ssh installiert

Sie können versuchen, / usr / bin / ssh zu entfernen oder die Reihenfolge von $ Path neu zu ordnen, damit zuerst / usr / local / bin / ssh ausgewählt wird

Michał Gąsior
quelle
Leider hat Apple die Möglichkeit, Dinge in / usr / bin zu berühren, beendet. Ich hatte bereits versucht, die PATH-Variable neu anzuordnen, um meinen lokalen Bin in den Vordergrund zu stellen, aber es scheint, dass das Protokoll ssh: // explizit / usr / bin / ssh aufruft, da die Änderung nicht funktioniert hat.
Joshua Gilman
Sie können, wenn Sie SIP im Wiederherstellungsmodus deaktivieren:csrutil disable
Michał Gąsior