背景 MacOS升级打12.0以上后,系统自带的OpenSSH版本为8.6p1,在某些场景下会出现乱码情况,需要降版本到8.4以下。可以使用brew安装制定版本的OpenSSH。参考此方法也可以安装指定版本的其他Mac软件。

一、 安装brew

MacOS 安装 Brew

二、查找rb文件地址

扩展名.RB文件是一种Ruby源代码文件,RB文件属于编程文件。 brew info openssh 使用brew info获取到openssh.rb的地址为:https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openssh.rb

三、查找指定版本rb文件

将openssh.rb的地址复制到浏览器打开,点击“history”。

找到指定版本的Commits,以OpenSSH_8.4p1_2为例,点击commit号查看文件。

点击openssh.rb文件后的”…"打开菜单,选择“View file“查看文件内容。

点击“RAW“

四、保存rb文件。

页面空白处右击,选择“存储为…”保存文件为openssh.rb。

以保存到桌面为例。

五、安装指定版本OpenSSH

关闭brew自动更新,在.zshrc文件中加入“export HOMEBREW_NO_AUTO_UPDATE=true“”,如果是bash请加在.bash_profile文件中,全局变量可以sudo vi /etc/profile。

vim ~/.zshrc

export HOMEBREW_NO_AUTO_UPDATE=true

#刷新环境变量

source ~/.zshrc

使用保存的openssh.rb文件安装OpenSSH。

❯ ssh -V

OpenSSH_8.6p1, LibreSSL 3.3.6

❯ cd ~/Desktop

❯ brew unlink openssh

❯ brew install ./openssh.rb

❯ ssh -V

OpenSSH_8.4p1, OpenSSL 1.1.1q 5 Jul 2022

使用brew install ./openssh.rb命令进行安装,可能会出现如下报错。

解决方法:将openssh.rb文件中以下几行内容删除。

bottle do

sha256 "291bda7c89dd8086c24a920f3a0ce0d03719f76d8aeecabfc1b6cac44e5a973e" => :big_sur

sha256 "138d45d469062c9b9622b9a962770041921b80fb88f291ec9c778c6409076238" => :arm64_big_sur

sha256 "0eaaea9198eb264ce6c3ac5ddbba1fcfeceafa000f039317d5e746f4408088b5" => :catalina

sha256 "eac0ab69709477e02dd8f86142f531a9ced2a34737fd92d6b7d796152b85fcbe" => :mojave

end

重新执行brew install ./openssh.rb命令

六、设置别名

安装完成后检查ssh版本,如果检查发现版本为安装预期的8.4p1,则可直接使用。如果检查发现版本仍未原来的8.6p1,则需要检查OpenSSH_8.4p1的安装路径,为ssh创建别名指向该路径。 使用ssh -V命令检查结果为OpenSSH_8.4p1,OK,完成安装。

使用ssh -V命令检查结果为OpenSSH_8.6p1,需要查看OpenSSH_8.4p1安装位置,并创建别名。

使用brew list openssh查看openssh安装路径

在用户家目录下.bash_profile文件(没有则新建)内创建别名: #在~/.bash_profile内添加别名

>vim ~/.bash_profile

alias ssh='/opt/homebrew/Cellar/openssh/8.4p1_1/bin/ssh'

alias scp='/opt/homebrew/Cellar/openssh/8.4p1_1/bin/scp'

alias sftp='/opt/homebrew/Cellar/openssh/8.4p1_1/bin/sftp'

#将配置生效命令追加到~/.zshrc文件内

>echo ‘source ~/.bash_profile‘ >> ~/.zshrc

#刷新生效

>source ~/zshrc

查看原文