如何更改ssh://的用途?


9

运行Sierra(10.12.4)的Macbook Pro上似乎有两个不同的SSH客户端版本。如果我执行以下操作:

$> ssh dev

它工作正常。但是,如果我执行以下操作:

$> open ssh://dev

它打开一个新终端,然后抱怨我ssh_config文件中的加密设置。研究特定的投诉后,我发现通过协议处理程序打开的协议使用的是旧版SSH。

如何更改协议重定向到的SSH客户端?


1
在运行第二条命令后,键入“哪个ssh”会得到什么,而键入“ ps aux | grep ssh”会得到什么?
Brethil

哪个ssh:/usr/local/bin/ssh SSH进程通过第二种方法运行后会自行杀死,我不确定如何在进程列表中看到它会一直存活。
约书亚·吉尔曼

Answers:


4

您可以使用非常方便的工具来更改特定URL处理程序的默认应用程序。

使用RCDefaultApp更改ssh URL方案

  1. 下载RCDefaultApp版本2.1
  2. 安装首选项窗格
  3. 转到系统偏好设置>默认应用> URL
  4. 转到“ ssh”
  5. 在右侧,选择您喜欢的应用程序

它看起来与此屏幕截图非常相似:

RCDefaultApp屏幕快照,显示首选项窗格


问题不是基于终端应用程序,而是调用了哪个SSH二进制文件。我可以将应用程序更改为打开iTerm而不是Terminal,问题仍然存在。
约书亚·吉尔曼

1

要回答有关更改ssh://协议客户端的问题,

根据https://superuser.com/a/548122/202319,您可以修改~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist为在遇到ssh://或其他URL时打开带有注册标识符的任何应用程序。

这不是一个完美的解决方案,因为它仍然需要一个应用程序捆绑包,或者将使用Terminal.app(您已经看到了)。

但是,您应该能够修复.login或.bashrc文件,以便默认的Terminal.app shell仍将使用您首选ssh的文件。


1
您能否详细说明.login.bashrc配置更改?问题不在于正在打开哪个终端应用程序,而在于正在执行哪个SSH二进制文件。ssh在终端会话内部调用会调用一个二进制文件,但是让终端通过协议打开连接会在调用另一个SSH二进制文件。
约书亚·吉尔曼

0

我现在没有要检查的Mac,但我的猜测是:

Mac随附ssh客户端/ usr / bin / ssh

您在/ usr / local / bin / ssh上安装了较新的版本

您可以尝试删除/ usr / bin / ssh或重新排列$ Path的顺序,以便它首先选择/ usr / local / bin / ssh


不幸的是,苹果公司取消了触摸/ usr / bin中内容的功能。我已经尝试过重新安排PATH变量以使本地bin处于优先位置,但是ssh://协议似乎已明确调用/ usr / bin / ssh,因为更改无效。
约书亚·吉尔曼

:你可以,如果你禁用SIP在恢复模式csrutil disable
米哈尔Gąsior
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.