升级至 macOS Sierra 会损坏你的 SSH 密钥

凝小紫
 凝小紫
发布于 2016年10月13日
收藏 9

和许多开发者一样,苹果的macOS Sierra更新提示一直搞得我心烦意乱。我每天都要点击一下”明天提醒我“。最后我终于屈服了,在睡觉之前点击了安装更新。

很许多开发者一样,苹果的macOS Sierra更新提示一直搞得我心烦意乱。我每天都要点击一下”明天提醒我“。

最后我终于屈服了,在睡觉之前点击了安装更新。

起来之后,我发现我无法登陆Free Code Camp的服务器了。我花了好长时间才搞明白究竟出了什么问题。幸运的是, BerkeleyTrue还没有被升级,我还可以添加新的SSH密钥。

如果你是唯一一个拥有服务器SSH密钥的人,并且关闭了密码登陆,那就不要升级macOS Sierra系统。

但是苹果搞坏的,并不是所有SSH密钥,只有那些更安全的RSA 2048密钥。

如果你还不清楚RSA为何比DSA更安全,其实事实并非如此。但是DSA通常只能是1024bit,而RSA密钥则更长,不过多出来的bit能让密钥更难破解。

现在我们就来设置新的2048-bit RSA SSH密钥吧。

第一步:删除旧的密钥,创建新密钥

打开终端并且输入:

 ssh-keygen -t rsa

prompt会做出如下响应:

 Generating public/private rsa key pair.
Enter file in which to save the key (/Users/freecodecamp/.ssh/id_rsa):

你可以直接点击回车,将其保存在默认位置。请注意,它将会覆盖你的旧(已损坏)的密钥。

Enter passphrase (empty for no passphrase):

这里可以留着不填,如果希望更安全一点的话,也可以设定一个密码。

之后你会看到一个看上去有点像圣诞树的东西:

现在运行下列命令,获得公开密钥的内容:

 cat ~/.ssh/id_rsa.pub

之后会返回一个类似这样的东西:

 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDijWK+s3ybgzEdaJ5LneNU11BsIyoNS51SV11Vi5auPJW9+Ji6OUSJ9OguZh4T019ULyFF/Qq66fhH9TvMzw80lTNoChgTRMpjs2+Qg75yTINKSde+Gv4TK6UvNw6EINORcTpb32Im9hgtdTj6WqJ/hCbSltv7IfFZU5ChV7SxTaoNZTa9M5H3N8YdQ/aGt3puh222Cq5DTjV8fRWaNVvjVQRe/huHAHEzEUr1T/eTlXtoFtGeC1z+pLfYllVzizoS7tyuUksfgqox1jJJMpaZ25V/R/p/MDUc936za/8zgB8OQFRBbrP6JvXXN99DLcvs9coz9vfb2GCVrhxi1aJ5 quincy@FreeCodeCamp

将其复制下来,你之后需要将它放在服务器上。

第二步:将公开密钥添加到服务器上

如果你能在不使用密钥的情况下SSH进服务器,那么就尝试使用密码登录。

否则的话,你就要联系其他可以登录服务器的人了。 

如果你此前关闭了用户名密码登录服务器的方式(许多人都会出于安全因素这么做),你或许可以临时重新启用密码登录。

在获得服务器的root接入之后——假设你的服务器为Linux服务器——你只需要运行这条命令:

 nano ~/.ssh/authorized_keys

它会使用极简文本编辑器“nano”来打开你授权的密钥文件,大多数Linux系统中都有这个编辑器。如果没有的话,你也可以使用Vim。

现在复制你此前保存的SSH密钥,按下control+o保存变更,然后用control+x推出nano。

从服务器断开,现在就可以使用新的SSH密钥来登录了。

第三步: SSH进入服务器

使用下面这条命令,通过SSH进入服务器,把root@0.0.0.0换成你服务器的登录名和IP地址:

ssh -i ~/.ssh/id_rsa root@0.0.0.0

你会发现,和以前不同的是,你需要使用私人密钥(id_rsa)来SSH进入服务器,而不再是公共密钥(id_rsa.pub)。这让我也有点困惑,我也不清楚为何会有这样的改变。如果你知道原因,烦请在留言区分享给我们。

这样你就可以使用SSH登录服务器,无需输入密码了。

恭喜!问题终于解决了,现在不用再忍受苹果不断提醒你进行系统升级了。

原    文:Upgrading to macOS Sierra will break your SSH keys and lock you out of your own servers.

译    文:SDK.cn

作    者:鲁行云(编译)

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:升级至 macOS Sierra 会损坏你的 SSH 密钥
加载中

最新评论(15

枯叶_听海
枯叶_听海
没发现什么问题~
一碗老酸菜
一碗老酸菜
看了这篇文章还去搞出了问题。
跟猪谈理想
跟猪谈理想
你是个例吧, 我升级都没事
clark911
clark911
oschina小编工资真好拿
cyper
cyper
不勾选 Automatically check for updates(自动检查更新) 那个checkbox 就不会再提示升级了, 呃. 我升级到macOS 10.12.1 Beta (16B2338c)了..
o轻扬o
o轻扬o
同志,屎可以乱吃,话不可以乱讲哦
海诺者
海诺者

引用来自“SeaJones”的评论

建议等等再升级,内存不够,卡,还有一次不能唤醒。
4g内存全新安装木有问题
kinosang
kinosang
升级这么久了,完全没有问题啊……
SeaJones
SeaJones
建议等等再升级,内存不够,卡,还有一次不能唤醒。
返回顶部
顶部