请求和响应流程:
- 客户端发送请求给服务器,会经过防火墙过滤(比如
80
端口),如果可以通过,则把请求发送给监听80
端口的程序。 - 监听
80
端口的程序是gunicorn
,有两部分(目前),一个主进程,一个从进程,主进程会把请求转发给从进程,
通过wsgi
协议和flask
沟通,flask
再调用路由,路由调用相应的函数,再把响应返回给flask
,flask
再返回给gunicorn
,再通过gunicorn
返回给客户端。(应用服务器flask
和web
服务器gunicorn
,通过wsgi
沟通)
ssh协议
服务器和浏览器的双向验证
前两步验证用非对称密钥,以后用对称密钥进行会话(更快更方便)
发起请求,你验证服务器
-> 针对特定服务器发出 ssh 请求
<- 服务器发回它的指纹。指纹就是服务器公钥的 hash 值
-> 客户端验证指纹。
用 rsa 验证,服务器验证你
<- 服务器给你发一段信息。(nonce)
-> 你用你的私钥(~/.ssh/id_rsa)加密这段信息
<- 服务器用你的公钥(它自己会在这里查找,默认这个位置)(~/.ssh/authorized_keys)解密,如果能解密就说明验证成功
基于 rsa 的对称密钥交换
<- 成功后,服务器用你的公钥加密一个对称密钥。
-> 用私钥解密得到对称密钥,之后的通信统统用这个对称密钥加密
https
单向验证,浏览器验证服务器,二服务器不需要验证浏览器
世界上有几个根证书商,被植入在浏览器或操作系统里面,这些根证书商又分别信任一些子证书商,这些子证书商又信任一些小企业(一般三级)。(比如说某个根证书商信任腾讯,腾讯又信任了我们,所以我们网站的证书可以被chrom
浏览器识别信任)。
比如说,你在浏览器输入某个网址,那么这个网站的服务器会把证书给你的浏览器,那么现在浏览器会检验该证书是否合法(被跟证书信任),如果合法,浏览器会生成一个对称密钥(session_key
),用服务器证书里面的公钥加密,发给服务器,服务器用对应的私钥解密,解密之后拿到你发给服务器的对称密钥,那么以后就可以正常发送信息了。以后发信息就是用沟通好的session_key
进行加密的内容了。
发起请求,你验证服务器
-> 你在浏览器发起请求,访问 https://baidu.com
<- 服务器返回给你它的证书
-> 浏览器验证证书是否有效
基于 rsa 的对称密钥交换
-> 如果证书有效,浏览器会生成一个对称密钥。
-> 用服务器证书的公钥加密后,发给服务器。
<- 服务器用证书对应的私钥解密,拿到对称密钥。
<- 之后的通信统统用这个对称密钥加密
一、服务器密码位置:密码:M09j02
;在下面安全组开放端口。
图片.png
二、开启免密码登录
1.双击cmder--exe
文件(不必安装),输入命令:
ssh ubuntu@115.159.204.225
以及登录密码M090j982
登录到购买的服务器。
ubuntu@115.159.204.225
ubuntu
:用户名
图片.png
分别对应:用户名 主机名 用户下的家目录 普通用户标识符(
#root
用户)
2.命令行输入(可以省略):
ssh-keygen
问问题的时候,不用管,一直回车就行。会在文件夹下生成私钥和公钥的键值对。生成的位置是:
可以通过如下命令查看:
sudo ls -al ~/.ssh
(但是没有)
3.切换到本地windows(ctrl + d)
输入:
ssh-keygen.exe
可知在
mml/.ssl
目录下生成了两个文件,这就是(id_rsa.pub)公钥和私钥(id-rsa)的键值对。
4.安装filezilla
,并连接到服务器
filezilla设置文件的打开方式:
1.PNG 2.PNG注意:用户名是ubuntu
这样,就可以查看本地文件和远站点文件,并进行传输了;
图片.png
但是点击远程站点的
.ssh
文件夹,显示:图片.png 表明没有权限,就需要修改该文件夹的权限:
图片.png
更改文件夹权限命令是:
sudo chown -R ubuntu:ubuntu .ssh
(第一个ubuntu表示要修改到的组,第二个ubuntu表示要修改到的用户,.ssh表示要修改的文件)
那么现在就可以打开了:
图片.png
5.将左边文件里面的内容,粘贴到右边文件内,提示框默认点击就行。
图片.png获取公钥的时候,
.pub
文件打不开,那么就在cmder
(cmder
服务器目录)中打开文件(先定位到文件目录):more id_rsa.pub
6.重启ssh
,就能免密码登陆了
service ssh restart
禁用密码登录
1.下载并安装atom编辑软件
将atom以下文件目录放到filezilla设置里面,这样就可以利用atom进行编辑了。
图片.png
找到这个文件:
/etc/ssh/sshd_config
,右键编辑:把
PasswordAuthentication yes
改为 PasswordAuthentication no
去掉开头的
#
注释符号修改完后保存提交,在
cmder
下查看:图片.png
最后重启:
service ssh restart
实现root
用户在cmder
和filezilla
上的登录
切换到root
用户命令:sudo su
ubuntu
用户切换至root
用户
sudo passwd root
填密码
会提示修改成功,但是用root
用户和这个密码既登不上cmder
也登不上filezilla
。
正确答案:
在ubuntu
用户目录下,将authorized_keys
文件拷贝到root
目录下,运行命令:
cp ~/.ssh/authorized_keys /root/.ssh/authorized_keys
然后在
filezilla
站点管理中输入:图片.png 注意:选择密钥文件的时候,将文件类型选择所有,这样就可以连接登陆了。如果不选择密钥文件,其他方式登录还是需要密码,还是登录不了。
开启防火墙
在root
1.安装防火墙
apt-get install ufw
2.输入以下配置
别人进入你的服务器,只能是22/80/443,而从你服务器出去的端口则是无所谓的。
apt-get install ufw // 安装防火墙
ufw allow 22 // 允许特定端口开放
ufw allow 80
ufw allow 443
ufw default deny incoming // 阻止进入(除了上述端口)
ufw default allow outgoing // 全部允许出
ufw status verbose // 显示ufw详细信息
ufw enable // 开启防火墙
出现:
直接按
enter
:图片.png 即可!
查看防火墙配置:
ufw status
Shell设置
界面更好看一点罢了(第2个没装上)
1. 装zsh:sudo apt-get install zsh
2. 装 oh-my-zsh
- sh -c "$(curl -fsSL https://raw.githubusercontent.com/roobyrussell/oh-my-zsh/master/tools/install.sh)"
部署
【13-3(0:10min)】
将python脚本文件上传,并在服务器上运行
一定要修改host为0.0.0.0
,这样服务器就能允许任何ip
的电脑访问了。
在filezilla
中,直接将文件拖到服务器指定目录下就可以了;如果脚本文件有修改,那么,在本地修改后,直接拖过去覆盖掉就好了。
验证是否更改成功:进入更改的文件目录:
tail server.py
就能看到更改的内容。
在cmder
中运行脚本:
进入脚本目录,直接运行就好了
python3 server.py
这样运行,退出界面,就中断了,所以,需要让它在后台永久运行:
nohup python3 server.py &
执行成功将会出现:
图片.png
nohup.out
表示该程序的输出在这个文件里面,可以通过以下命令查看:cat nohup.out
再执行以下命令即可看到后台执行情况:
-
bg
:查看后台运行的程序 -
fg
:将后台运行的程序拉倒前台
查看运行状态:
命令:ps axf | grep python3
图片.png -
killall python3
:表示结束掉所有关于python3
的进程;
图片.png -
ctrl + c
挂起该程序,放到后台执行 -
ctrl + z
关闭该程序
网友评论