Mac通过SSH实现免密输入登录阿里云服务器,实例重新初始化磁盘再配置

2,300 阅读3分钟

购买阿里云服务器有一段时间了,想本地直接免密登录、操作云服务器,之前有成功配置一次;之后因为各种原因“冷落”了我的云宝宝,现在想重新经营起来,并且重置了云服务器的磁盘,这次配置ssh又遇到了问题,于是乎有了这篇记录

主要分三步:
1、拿到mac上的公钥和私钥
2、将公钥放到服务器上
3、配置ssh的config

本地的公钥和私钥

查看自己电脑上是否有已经生成的公钥和私钥(可能以往配过git或其他),在控制台上输入

cd ~/.ssh

进入到.ssh文件后 查看是否存在 id_rsa(私钥) 和 id_rsa.pub(公钥);不存在则需要生成,生成命令如下

ssh-keygen -t rsa

一直回车,各种设置默认就ok,执行完后,在~/.ssh目录下生成id_rsa(私钥) 和 id_rsa.pub(公钥)这两个文件。

把公钥(id_rsa.pub)放到阿里云服务器上

首先直接通过密码的方式连接上服务器

sudo ssh 云服务器ip地址

同样进入用户目录下的.ssh目录,.ssh目录下找到authorized_keys,若没有.ssh或authorized文件夹及文件,直接创建就好了;找到之后把刚刚从mac上拿到的id_ras.pub文件内容添加到authorized_keys中,保存并退出就基本OK啦!到这一步,在mac本地通过 ssh root@云服务器ip就可以直接登录了,随后我们将配置本地登录该云服务器的专属命令~

对了!最后要记得设置authorized_keys的读写权限,只对其所有者开放

chmod 644 ~/.ssh/authorized_keys

配置ssh的config(本地登录该云服务器的专属命令)

回到本地,进入.ssh目录,创建编辑或直接编辑config文件

vim config

在config文件中追加配置

Host Aliserver# 这里是你要通过ssh命令快速登录阿里云服务器的的标签hostname **.**.**.***# 这里是阿里云服务器ipuser root# 这里是你要登录阿里云服务器的哪个用户IdentityFile ~/.ssh/id_rsa# 这里是你mac上的私钥文件地址

保存退出,配置就完成啦!

完成之后就可以在Terminal中通过 ssh Aliserver直接登录你的云服务器啦~

如果你重新初始化了你的云服务器磁盘

重置之后,你再用 ssh Aliserver登录会报错:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
51:82:00:1c:7e:6f:ac:ac:de:f1:53:08:1c:7d:55:68.
Please contact your system administrator.
Add correct host key in /Users/isaacalves/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/isaacalves/.ssh/known_hosts:12
RSA host key for 47.98.127.171 has changed and you have requested strict checking.
Host key verification failed

这因为我们的密钥已经失效了,导致认证失败,需要删除无效密钥

ssh-keygen -R "server ip"

完!

我自己的情况比较复杂,更新实例之后自己mac登录云服务器总是提示密码错误,但是朋友的电脑用我提供的ip和密码是ok的,于是乎我把本地.ssh/config文件删除了,把本地 .ssh/known_hosts 里与我云服务器ip相关的密钥配置也删除了,再重新走了一遍才成功,其实出了问题理清思路,把与之前已经被删除的那个云服务实例相关的数据(主要是.ssh/config和.ssh/known_hosts里的内容)删除干净,重新配置就问题不大滴~