通常我们在够买vps的时候,或者第一次配置ssh登录的时候,就会将本机的ssh公钥添加的云平台上去,在初始化vps时,云平台会将添加的ssh公钥添加到用户的/user/.ssh/authorized_keys
文件中,例如,如果用户是root用户,则公钥位于/root/.ssh/authorized_keys
文件。这样,在vps中具有你本机的公钥,在本机使用下面命令就可以连接,大多数平台都是这样。1
ssh root@yourVpsIp
但是又一次我作死了,由于谷歌云我使用ssh连接的时候用户弄错了,一直提示我没用次用户的公钥,不知道什么原因,我头脑一热,重新生成了本机的ssh公钥密钥,然后将谷歌云的上的公钥删掉,换成新生成的公钥。之久就怎么也连不上去了,以前使用浏览器的ssh连接方式也连不上了。开始了无尽的作死之路。
主要的因为,在vps初始化的时候,将平台的公钥添加的用户的ssh目录下,但是后面如果修改了平台的ssh公钥,vps用户中的authorized_keys
并不会同步,只有将authorized_keys
内容同步为新的公钥即可。但是谷歌云的话,由于将之前的公钥删除,怎么都连接不上去,都没法操作vps,所以只有重置vps,我选择了关停这台vps,重新购买了一台,将之前的静态IP重新绑定到新的vps。然后顺利连接。
上面的方法比较极端,下面就来介绍一个不用清空vps的方法。
由于我重新生成了本机的ssh公钥密钥,所有我的github,coding平台重新添加ssh公钥就可以了,这个和vps不一样,是可以同步的。但是我的digitalOcean服务器就没有那么好的运气了。也遇到了之前谷歌云一样的问题。登录时提示在vps中没有该用户的公钥。
解决方案:
1、在digitalOcean平台重新添加新的公钥
2、使用账号密码通过网页版控制台登录。cat /root/.ssh/authorized_keys
,发现是之前的ssh公钥,并没有的更新,准备手动修改。但是这个网页版做的很不好,没法复制粘贴命令,所以也没法将公钥贴进去,不可能一个一个手敲吧,然后也不能使用上传。这就比较麻烦了将次,后面想到使用文件下载,将文件传输到vps,替换原文件。一开始准备使用百度网盘链接,但是链接地址也是比较长,手敲也不现实,后面想到使用git下载。
3、使用git仓库下载。
在本地创建一个authorized_keys
文件,将公钥复制粘贴进去,然后创建一个git仓库,将authorized_keys
文件上传到仓库。然后再vps中安装git apt-get install git
,使用git克隆这个仓库到指定的文件路径1
git clone http://github.com/Xia-Ao/仓库名
这样vps就得到了authorized_keys
,将root用户下的文件替换掉就可以了。
然后使用ssh root@yourVpsIP
登录。