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?


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


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.


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.