背景
最近公司IT让升级到mac系统,说之前的老版本太久了,因此要被迫升级macOS系统,这是一次重大升级,升级之后加大了和apple其他设备的互通性,升级完成之后确实和iOS更像了。不过我升级后发现我的vscode连不上开发机了,因为我个人习惯用vscode远程到我的linux开发机开发,这样我不管在家里还是在哪里只要有电脑就可以开发,不依赖本地环境。
问题重现
mac升级到Ventura 13之后,发现我的远程开发机无法连接,我昨天下班前还可以,因此怀疑是系统升级导致的问题,查看连接错误日志如下:
An error occurred while trying to establish an SSH connection with SSH keys to ‘ip:22’
我个人的ssh配置文件如下:
Host ip-开发机HostName ip # 远程开发机IPUser username # 用户名Port 22 # 端口IdentityFile /Users/xxxx/.ssh/id_rsa #本地私钥
问题解决
遇到问题不慌直接google搜索问题vscode-remote ssh key macOS ventura
,在stackoverflow遇到和我一样的用户: https://stackoverflow.com/questions/74215881/visual-studio-2022-wont-connect-via-ssh-on-macos-after-upgrading-to-ventura,被告知需要使用新增2个配置项:
Host ip-开发机HostName ip # 远程开发机IPUser username # 用户名Port 22 # 端口IdentityFile /Users/xxxx/.ssh/id_rsa #本地私钥HostkeyAlgorithms +ssh-rsa # 新增配置项1PubkeyAcceptedAlgorithms +ssh-rsa # 新增配置项2
并且最后提示:
macOS Monterey and older versions used OpenSSH v8.6 or older, respectively.
问题原因
因为macOS使用了开源软件openSSH,而Ventura使用openSSH是9.0版本,openSSH-8.8版本开始默认情况下禁止RSA签名使用sha-1 hash算法,因此不加上述配置的话就无法连接。
This release disables RSA signatures using the SHA-1 hash algorithm by default
因此需要手动指定支持上述算法。
为什么openSSH 默认情况下禁止使用SHA-1作为rsa的签名算法?
RSA使用SHA-1哈希算法作为数字签名是有安全漏洞风险的,因为SHA-1算法已经被证明不是足够强度的哈希算法,可以被攻击者用于伪造数字签名。
目前,RSA使用SHA-256、SHA-384、SHA-512等较为安全的哈希算法作为数字签名是一个更好的选择,这些算法在实际应用中已被广泛采用。
除了SHA-256/SHA-384/SHA-512哈希算法外,还有基于椭圆曲线的签名算法,例如ECDSA算法,已被广泛应用于数字证书和电子签名等应用中。
在选择数字签名算法时,需要考虑许多因素,包括其安全性、性能、兼容性和标准性等。最好的方法是根据自己的具体需求,选择适合自己的应用程序的最佳签名算法。