WordPress无法打开问题记录(待续)

昨晚由于不希望看到WP的文章链接是IP地址,所以尝试在设置中修改了一下站点地址与主站地址,后使用代理,可以正常访问。

没过多久,提示数据库连接出错。

本问正值正式的我的hexo博客第100篇,没想到是以这种方式到达了100篇。

关于叙旧依旧会写,其实加上之前问的疫情相关的分析与思考,也会在这里发布,那就得一百二十多篇了。

我的新站:felixxiong.com,尽管暂时崩了,但大家可以先收藏着,这里还是我的自留地。

问题发生后我做的第一件事就是,下载手机中没有关闭的新博客的存档,以防刷新,如下图所示。

整个流程

我制作了一个流程图,如下图所示。由于Sketch莫名其妙的bug,所以大家凑活着看好了。

今天更新了图片,但目前找不到源文件了,不然做个好看点的。

截屏2020-03-16下午11.29.59.png

修复措施

根据搜索结果,总结出以下方法:

  1. 远程连接数据库,从数据库里修改站点地址

  2. 重置服务器,由于没有安装备份插件,故此条不选。

  3. 本机使用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端口已开。

截屏2020-03-28下午9.07.43.png

在最近一段时间@拦截器 大佬的帮助下,得知需要开通三处,于是重新参考参考链接-连接服务器连接。

设置数据库

在阿里云控制台远程连接:

sudo su root
yum install mysql #安装MySQL服务端

完成如下图所示:

截屏2020-03-28下午9.41.46.png

输入密码进入数据库:

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],查看进程-杀死进程-重启服务,之后如图所示:

截屏2020-03-29上午12.17.43.png

至于是否进数据库,还有待商榷。

及时止损可能需要。

新站初见

截屏2020-03-17上午12.06.04.png

使用密钥对进行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 400EC2 - 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 foundERROR 2005 (HY000): Unknown MySQL server host

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

Puppy

PuTTY for Mac OS X



  1. 见参考链接:主要问题修复措施-前 ↩︎ ↩︎

  2. 见参考链接:主要问题修复措施-后 ↩︎ ↩︎

  3. 即本地安装WP程序,使用FTP等方案连接数据库与国外服务器,完全自主。 ↩︎ ↩︎

  4. 见参考链接:远程登录实例-前 ↩︎ ↩︎ ↩︎

  5. 见参考链接:远程连接-阿里云帮助-查看公钥信息 ↩︎ ↩︎

  6. 我有一台Surface Go,Windows10系统 ↩︎ ↩︎

  7. 这里没有使用Windows方法的原因:可能想需要进行之前通过本地 SSH 客户端连接服务器的步骤,撰文时才知道,只是查看公钥,并不需要那么长的步骤,那是设置SSH连接的。 ↩︎ ↩︎

  8. 见参考链接:SSH远程登录-基础知识 ↩︎ ↩︎

  9. 见参考链接:SSH远程登录-22端口相关-开放22端口-前 ↩︎ ↩︎

  10. 见参考链接:SSH远程登录-22端口相关-打开22端口-Mac ↩︎ ↩︎

  11. 见参考链接:SSH远程登录-22端口相关-Operation timed out ↩︎ ↩︎

  12. 见参考链接:SSH远程登录-ssh_config-修改sshd_config文件(vim操作基础知识) ↩︎ ↩︎

  13. 见参考链接:SSH远程登录-连接服务器 ↩︎ ↩︎

  14. 见参考链接:远程连接-阿里云帮助-远程登录实例-后 ↩︎ ↩︎

  15. 见参考链接:修复SSH连接host错误 ↩︎ ↩︎

  16. 见参考链接:SSH远程登录–sysconfig ↩︎ ↩︎

  17. 见参考链接:SSH远程登录–连接数据库-MySQL命令-前 ↩︎ ↩︎

  18. 见参考链接:SSH远程登录–连接数据库-MySQL命令-后 ↩︎ ↩︎

  19. 见参考链接:SSH远程登录-22端口相关-Mac-mac os x 查看网络端口情况 ↩︎ ↩︎

  20. 见参考链接:MySQL命令:第三条链接 ↩︎ ↩︎

  21. 见参考链接:SSH远程登录-连接服务器-杀死进程 ↩︎ ↩︎

 wechat
产品北里,讲述产品和人性、涉及设计、技术和运营的公众号。
你们的赞赏是我更新的动力~