昨晚由于不希望看到WP的文章链接是IP地址,所以尝试在设置中修改了一下站点地址与主站地址,后使用代理,可以正常访问。
没过多久,提示数据库连接出错。
本问正值正式的我的hexo博客第100篇,没想到是以这种方式到达了100篇。
关于叙旧依旧会写,其实加上之前问的疫情相关的分析与思考,也会在这里发布,那就得一百二十多篇了。
我的新站:felixxiong.com,尽管暂时崩了,但大家可以先收藏着,这里还是我的自留地。
问题发生后我做的第一件事就是,下载手机中没有关闭的新博客的存档,以防刷新,如下图所示。
整个流程
我制作了一个流程图,如下图所示。由于Sketch莫名其妙的bug,所以大家凑活着看好了。
今天更新了图片,但目前找不到源文件了,不然做个好看点的。
修复措施
根据搜索结果,总结出以下方法:
-
远程连接数据库,从数据库里修改站点地址
-
重置服务器,由于没有安装备份插件,故此条不选。
-
本机使用Navicate[1]、Xshell[2]等第三方工具链接数据库,
由于不打算在本地安装第三方链接软件,否则采取另一种安装WordPress的方法[3],故此条也不选。
因第三条搜索结果,得知轻量级云服务器仅可从本地连接服务器,如需远程则需进行一系列的复杂操作。
根据帮助文档[4],开始远程连接数据库进行站点地址修复。
开始远程连接
本机使用Mac进行,下列加粗部分为教程段落。
通过本地 SSH 客户端连接服务器-本地为 Linux 或支持 SSH 命令的环境(含Mac OS操作系统)进行操作
从控制台下载密钥对、重启服务器,开始操作密钥对。
关于服务器密钥对
此处我并非第一次接触服务器密钥[4],若是服务器大佬忽略本段,直接进入开始操作密钥对段落。
感谢掘金后端群里的@Richard的讲解。
在阿里控制台下载密钥对,名字可尝试英文,最好不要带空格、和系统相关名称。
我第一次起的名称正好都有前述特征,以下为举例,使用“ExampleSSH Key”表示。
注意1
终端输入带空格的文件/夹
需要使用\
、''
、" "
进行转义。
放置路径
以下摘自阿里云文档:
到您下载的私钥所在目录,如:
/root/xxx.pem
。xxx.pem 即为您的私钥文件,下同。
此处不一定需要放在root文件夹下,放在哪里都可以。例如桌面:
/Users/felixxiong/desktop/ExampleSSH" "Key.pem
此处查看路径的方式:选中文件/夹-显示简介
开始修改密钥对名称
我为什么要想这个?为了后续能够简便操作,避免转义等可能出现的问题。
进入阿里控制台-远程连接-密钥管理-更换密钥-更改密钥名称-导入已有密钥:
我此时为什么要导入已有而不是更换密钥:因为文档里说"仅有一次下载机会",可能我还是太老实了。
开始将密钥转换成Base64的方式显示:
参考一些官方文档[5]:本地为Linux或Mac系统:通过命令进行查看公钥:
运行ssh-keygen命令,并指定.pem文件的路径。
ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem
我的:
ssh-keygen -y -f /Users/felixxiong/desktop/ExampleSSH" "Key.pem
此处提示:
如果该命令失败,请运行
chmod 400 my-key-pair.pem
命令更改权限,确保只有您才能查看该文件。
现实也真的失败了:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/felixxiong/desktop/ExampleSSH Key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/felixxiong/desktop/ExampleSSH Key.pem": bad permissions
关于上述解决方法与[chmod 400](#chmod 400)的讲解,参考链接:[chmod 400](#chmod 400),之后也可以开始继续修改属性的密钥对操作了.
到了这里,我想,或许可以直接使用Windows[6]的PuTTYgen软件直接打开,查看Base64的公钥:
本地为Windows操作系统:
启动PuTTYgen-单击Load-选择.ppk或.pem文件。PuTTYgen会显示公钥信息。
所以这里也并没有改名成功[7],即使成功,我又会想:已下载的桌面的密钥怎么办?
开始操作密钥对
使用以下命令修改私钥文件的属性:
chmod 400 xxx.pem
。
chmod 400 ExampleSSH" "Key.pem
chmod: ExampleSSH Key.pem: No such file or directory.
2020年3月 23日更新
根据官网文档:
使用 SSH 命令连接至实例(假设实例的公网 IP 地址为 10.10.10.100):
ssh root@10.10.10.100 -i /root/xxx.pem
。
注意2
此处我的实例误以为是MySQL,这里的“实例”其实是WordPress!!!
根据上述文档进行错误的ssh root@12*.0.0.1:**0* -i /.ssh/OpenSSH" "Key.pem
连接尝试,提示:
Warning: Identity file /.ssh/OpenSSH Key.pem not accessible: No such file or directory.
ssh: Could not resolve hostname 12*.0.0.1:**0*: nodename nor servname provided, or not known
第一行可见,依旧密钥的权限问题,第二行提示实例错误。
据Can’t ssh to AWS EC2: Identity file not accessible中回答,将密钥文件放在隐藏的ssh文件夹里,未果。
继续chmod 400
尝试在命令前添加**sudo
**,需输入密码,成功。
此时启用账号密码登录的步骤决定后续再操作。
**更改为正确的WordPress实例(公网IP)**后,bash如下列提示,注释来源于ssh相关教程 [8]:
felixxiong@FelixXiongdeMacBook-Pro .ssh % ssh root@47.240.163.31 -i /Users/felixxiong/.ssh/ExampleSSH" "Key.pem
The authenticity of host '47.240.163.31 (47.240.163.31)' can't be established.
ECDSA key fingerprint is SHA256:此处为个人隐私.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '47.240.163.31' (ECDSA) to the list of known hosts.
//host主机已经得到认可
Connection closed by 47.240.163.31 port 22
//22端口问题
此处从网络搜索结果[9],需删除阿里云轻量级服务器防火墙里的端口22的规则:
图片
浏览器远程连接问题
Mac再次尝试,可能由于是香港的服务器且本机(Mac)未打开22端口[10],即使打开该端口与系统防火墙后,
总提示连接超时[11]:
ssh: connect to host 47.240.163.31 port 22: Operation timed out
尝试浏览器远程连接:当删除阿里云轻量级服务器防火墙里的端口22的规则后无法链接,需加回防火墙。
输入root账户密码(WordPress生成的密码)出现授权报错:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
查看网络搜索结果[12],确实与之前阿里云文档启用账号密码登录段落的权限相关,我暂时未进行操作,这一步看来还是不能省略。
本地SSH连接一定要把阿里云的服务器防火墙22端口规则删除,否则本地连接会关闭因为22端口。
但是关闭了阿里云的服务器的22防火墙规则,阿里云浏览器远程SSH不能连接。
2020年3月24日更新:
从阿里云浏览器登录之后依旧有上述错误,根据网络搜索结果[13],我通过阿里控制台查看,输入以下命令:
sudo su root //切换root账号
vim /etc/ssh/sshd_config //进入服务器sshd_config文件
已经提示:PasswordAuthentication yes
,由于我输入:w
,其实没有退出vim。故无法进行重启ssh操作。
屡试不爽,准备安装Puppy for Mac。
2020年3月25日更新:
从阿里云服务台重新设置PasswordAuthentication:
sudo su root //切换root账号
vim /etc/ssh/sshd_config //进入服务器sshd_config文件
PasswordAuthentication 先改为no,再改为yes,使用:wq重启。
ssh root@47.240.163.31 -i /Users/felixxiong/.ssh/OpenSSH" "Key.pem
Warning: Identity file /Users/felixxiong/.ssh/OpenSSH Key.pem not accessible: No such file or directory.
输入密码后提示授权失败。
此处应该将公钥放到服务器中,待续。
2020年3月27日更新:
昨晚關閉服務器,今晚再次启动,可以出现IP地址以及登录页面。
解决了一半问题,为解决授权报错,在阿里云社区搜索报错信息,
发现:在本地终端使用命令,参考ssh 连接服务器失败,尝试使用密钥对登录[14]:
ssh -i [.pem私钥文件在本地机上的存储路径] root@[公网IP地址]
后成功从本地登录阿里云远程服务器实例,如果用浏览器打开,免去本地输入指令此步骤,效果一致。
登陆阿里云服务器
根据网络搜索结果,需在阿里云控制台输入命令:
ssh root@你的服务器ip
若在Mac终端输入此命令,报错:
ssh: Could not resolve hostname 服务器IP: Name or service not known
根据搜索结果[15],修改hosts文件命令:sudo vim /etc/hosts
在阿里云控制台输入后报错:Name or service not known
参考[16],/etc/sysconfig/network
出现的host是我WP的IP的内网地址。
2020年3月28日更新:
下载Navicat for Mac,提示连接失败:
通过阿里云控制台尝试进入数据库:mysql -u root -p
,报错:-bash: mysql: command not found
根据网络搜索结果[17]后,输入/usr/local/mysql/bin/mysql -h127.0.0.1 -uroot -p123456
,提示:
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2005 (HY000): Unknown MySQL server host '127.0.0.1:3306' (0)
再次搜索[18],尝试/usr/local/webserver/mysql/bin/mysql -u root -p06B186dac4ea -h 172.17.9.15 -P 3306 -e "show databases ;"
,依旧提示错误,此处知晓没用,故未截图。
再次检查是否打开22端口:本机使用端口扫描功能[19],查看Mac22端口已开。
在最近一段时间@拦截器 大佬的帮助下,得知需要开通三处,于是重新参考参考链接-连接服务器连接。
设置数据库
在阿里云控制台远程连接:
sudo su root
yum install mysql #安装MySQL服务端
完成如下图所示:
输入密码进入数据库:
mysql -uroot -p
报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
根据搜索结果[20],通过修改/etc/my.cnf权限进行:sudo /etc/my.cnf
:
# *** upgrade to a newer version of MySQL.
[mysqld] // 输入下两行
socket = /var/lib/mysql/mysql.sock
socket = /tmp/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
输入服务器启动命令:
[root@****个人隐私**** admin]# /etc/init.d/mysqld start
Starting MySQL [ OK ]
出现:mysqld_safe A mysqld process already exists
根据网络搜索结果[21],查看进程-杀死进程-重启服务,之后如图所示:
至于是否进数据库,还有待商榷。
及时止损可能需要。
新站初见
使用密钥对进行SSH远程登录主流程记录
ssh使用密钥对后恢复账号密码的远程登录-大致流程:
本机:创建密钥对-放至一处保管-chmod修改权限-开始链接-检查本机22端口开放-恢复服务器端密钥密码登录权限
阿里云控制台:检查是否有防火墙22端口,开通数据库的root账号远程访问权限,防火墙开放本机3306权限。
感谢
派友AM:2:00,
IT老兵、推荐的轻量级服务器,
青云推荐的宝塔面板,后续再研究;
奥特饭,桌面运维
拦截器
参考链接
主要问题修复措施
更改主站地址:阿里云上的Wordpress
远程连接
阿里云帮助
关于root文件夹:如何在 Mac 上启用 root 用户或更改 root 密码
查看公钥信息:查看公钥信息、导入SSH密钥对、SSH密钥对概述
远程登录实例:远程连接到Linux操作系统实例、使用SSH密钥对连接Linux实例
SSH远程登录
基础知识:SSH原理与运用(一):远程登录
[chmod 400](#chmod 400)
CHMOD Calculator-Chmod 400、EC2 - chmod: cannot access ‘mypemfile.pem’: No such file or directory
SSH Key DSA&RSA
SSH远程连接公私钥相关解决方案:
SSH Key Permissions Chmod settings?
Enabling RSA key-based authentication on UNIX and Linux operating systems
22端口相关
开放22端口步骤(阿里云轻量服务器、macOS):
阿里云:阿里云轻量应用服务器无法远程访问
Mac:Mac如何打开22端口苹果电脑怎么打开22端口、mac os x 查看网络端口情况
Operation timed out:服务器22端口连接超时 ssh: connect to host *** port 22: Operation timed out
ssh_config
远程登录报错解决方法:Permission denied (publickey,gssapi-keyex,gssapi-with-mic).的完整解决方法
修改sshd_config文件(vim操作基础知识):如何使用vim编辑并保存linux配置文件
sysconfig
linux报name or service not known错误解决方案
连接服务器
远程连接服务器:阿里云轻量应用服务器教程–如何链接网站数据库(镜像:WordPress)
杀死进程:mysqld_safe A mysqld process already exists
连接数据库
hosts
修复SSH连接host错误:Linux错误:ssh: Could not resolve hostname master: Name or service not known
MySQL命令
mysql命令报错-bash: mysql: command not found、ERROR 2005 (HY000): Unknown MySQL server host