Linux下配置公钥(Public key)与私钥(Private Key)免密码登录

发表于2019-03-12|分类于||阅读次数:
本文字数:690|阅读时长 ≈1 分钟

准备

配置SSH无密码登录需要3步:

1.生成公钥和私钥

2.导入公钥到认证文件,更改权限

3.测试


生成公钥和私钥

生成公钥和私钥有很多种方式,下面介绍利用Xshell软件和Linux的ssh-keygen生成公钥和私钥

Xshell

打开Xshell,在菜单栏点击“工具”,在弹出的菜单中选择“新建用户密钥生成向导“,如下图:

选择“RSA”公钥加密算法,“密钥长度”选择为“2048”位密钥长度,如下图:

点击“下一步”,等待密钥生成:

在“密钥名称”中输入用户密钥的名称;如果需要加密密钥,则输入一个密码用于加密私钥,并再次输入密码确认,如果不需要加密则密码留空,如下图:

点击“下一步”,密钥生成完毕(公钥格式选择SSH2-OpenSSH格式),这里显示的是公钥。私钥这里不显示,可以在“用户密钥管理”导出到文件:


Linux下生成公钥和私钥

1
2
3

ssh-keygen -t rsa

默认在 ~/.ssh目录生成两个文件:

1
2
3
4

id_rsa :私钥
id_rsa.pub :公钥


导入公钥

1
2
3

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

权限设定

1
2
3
4

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

在放有私钥的服务器上执行

1
2
3

ssh 目标服务器ip


导入私钥

如果服务器上没有私钥,我们就要导入到服务器上

1
2
3

cat private-key >> ~/.ssh/id_rsa

权限设定

1
2
3

chmod 600 ~/.ssh/id_rsa

浦发一连到底(Python迷宫程序)

发表于2018-09-07|分类于||阅读次数:
本文字数:2k|阅读时长 ≈4 分钟

迷宫问题:一个由0或1构成的二维数组中,假设1是可以移动到的点,0是不能移动到的点,如何从数组中间一个值为1的点出发,每一只能朝上下左右四个方向移动一个单位,当移动到二维数组的边缘,即可得到问题的解,类似的问题都可以称为迷宫问题。

浦发一连到底的游戏也类似于迷宫问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

# 判断坐标的有效性,如果超出数组边界或是不满足值为1的条件,说明该点无效返回False,否则返回True。
defvalid(maze,x,y):
if (x>=0and x=0and y=1:
returnFalse
else:
returnTrue

i=1
it=2

defwalk(maze,x,y):
global it
global i
global matrix
# print(x,y)
# 如果位置是迷宫的出口,说明成功走出迷宫
# print(np.array(maze))

if(check(maze)):
print("successful!")
# print(maze)

if i==1:
1+1
ka = -1
for ma in maze:
k=0
ka = ka+1
for m in ma:
# print(ka,k,m)
matrix[ka][k]=m
k=k+1
if k==5:
k=0
# print(matrix)
i=i+1
returnFalse
# 递归主体实现
if valid(maze,x,y):
# p1 = plt.scatter(x+1, y+1, marker='x', color='g', label='1', s=30)
# print(x,y)
# matrix[x][y]=it
# it = it + 1
maze[x][y]=it # 做标记,防止折回
# 针对四个方向依试探,如果失败,撤销一步
it=it+1
ifnot walk(maze,x-1,y):
#左
maze[x][y]=1
it = it - 1
elifnot walk(maze,x,y-1):
#上
maze[x][y]=1
it = it - 1
elifnot walk(maze,x+1,y):
#右
maze[x][y]=1
it = it - 1
elifnot walk(maze,x,y+1):
#下
maze[x][y]=1
it = it - 1
else:
walk(maze, x, y)
maze[x][y] = 1
it = it - 1
# print('1')
# return False # 无路可走说明,没有解
returnTrue

Hexo 博客配置备份笔记

发表于2018-07-16|分类于||阅读次数:
本文字数:1.4k|阅读时长 ≈3 分钟

前言

最近博客从WordPress迁移到Hexo,Hexo的配置很多,每次都得去对照next主题的官方文档去配置,很耗时间。为了避免重复造轮子,所以这里我就把已经配置好配置文件参数贴上,这样在下次配置的时候就不会再那么耗时间了。

安装 Hexo

1
2
3
4
5

npm install hexo-cli -g
cd/blog
hexo init

安装 next 主题

1
2
3

git clone https://github.com/theme-next/hexo-theme-next themes/next

博客设置

首先对博客基本信息做一些设置,配置文件在根目录下的_config.yml

设置语言

1
2
3

language:zh-CN

固定链接

1
2
3

permalink::year/:month/:day/:url

启用next主题

1
2
3

theme: next

设置主题的Scheme

Next有几种外观,

文章字数统计

安装:
$ npm install hexo-symbols-count-time --save

具体配置方法在这里

hexo配置:

1
2
3
4
5
6
7

symbols_count_time:
symbols:true
time:true
total_symbols:true
total_time:true

next主题配置:

1
2
3
4
5
6
7
8

symbols_count_time:
separated_meta:true
item_text_post:true
item_text_total:false
awl:2
wpm:275

修改文章内链接的样式

文章里的链接样式默认是只加一条下划线,颜色和普通文字一样,为了方便区分,在themes/next/source/css/_custom/custom.styl文件加以下代码,自行添加的样式都可以写在这个文件里:

1
2
3
4
5
6
7
8
9
10
11
12

.post-bodypa{
color: #0593d3;
border-bottom: none;
border-bottom: 1px solid #0593d3;
&:hover {
color: #fc6423;
border-bottom: none;
border-bottom: 1px solid #fc6423;
}
}

挑选你喜欢的样式,修改成你的GitHub链接,复制到themes/next/layout/_layout.swig文件中(放在``的下面),并把href改为你的github地址

修改文章底部的那个带#号的标签

具体实现方法
修改模板/themes/next/layout/_macro/post.swig,搜索 rel="tag">#,将#换成``

OSX和 Windows 时间不一致的解决方案

发表于2018-07-24|分类于||阅读次数:
本文字数:280|阅读时长 ≈1 分钟

在双系统,尤其是双系统中有Windows,那么就会出现Windows中把时间设置正确了过后,在Mac 中的时间又不一样了。这是因为MacOS 默认看待 BIOS 中的时间为UTC时间,而Windows 则默认看待 BIOS 中的时间为本地时间。

解决方案

让Windows把硬件时间当作UTC
在 Windows 管理员权限的命令行下执行以下命令:

1
2
3

Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

数据结构实验一:C++基础程序设计

发表于2018-06-23|分类于||阅读次数:
本文字数:2.8k|阅读时长 ≈5 分钟

实验一: C++ 基础程序设计

1.
实验目的

1.
复习C语言程序设计,

2.
回顾C语言结构体类型和指针类型的应用。

3.
学习用C语言进行文件读写操作.

2.实验内容

某组有15个人,每个人有3门课的考试成绩。求该组单科的平均成绩及每人的平均成绩. 具体成绩单如下表所示:

姓名数学分析高等代数解析几何 张红789490 李丽君657382 成平946878 王伟848669 文锦春749260 林黛玉668370 付凌云887982 岳不群908293 令狐冲817797 温玉琪958468 胡建军857375 刘汉908789 秋昌平837174 秦敖天969295 方世杰839088
三、实验要求:

1.
用结构体数组studentInfo 存储以上表格的数据, 该结构体含有四个成员:

name – 存储学生姓名, 字符串类型

analysis, – 存储数分成绩,整数类型

algebra – 存储高代成绩,整数类型

analGeo– 存储解析几何成绩,整数类型

Average—存放平均成绩

1.
表中的数据需要放入一文本文件(名为Scores.txt)中, 编写代码从中读入数据放入数组studentInfo 中。

2.
编程实现平均成绩的计算,并将每个学生的各科成绩及其平均成绩写入名为ScoresAnalysis.txt的文件中。

3.
在 ScoresAnalysis.txt 的最后一行,写入各门课程的平均成绩。

4.
构造一指针 Sp 指向结构类型studentInfo 变量, 读入scoresAnalysis 中的每个学生信息,放入Sp所指定内存,然后将Sp所指定的内存区域信息在屏幕上显示出来。

5.
在屏幕上显示所有写入文件的数据,显示学生各项成绩时,

6.
填写实验报告。

四、实验报告填写要求: 用表格的形式填写如下信息:

1.
姓名,学号, 实验日期(第几周, 年 月 日)

2.
实验编号(如: 本次实验编号为实验一)

3.
实验名称

4.
实验步骤: (填写本次实验所得完整的程序代码)

5.
实验结果: 把程序运行结果截图拷贝到实验报告中(Word 文档).

学习资料:

-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

#include
#include
#include
#include
#define N 10
usingnamespacestd;
structstudentInfo
{
char name\[50\];
int analysis;
int algebra;
int analGeo;
int Average;
} c\[N\];
intmain()
{
int i;
int analysis_sum=0;
int algebra_sum=0;
int Average_sum=0;
string line;
string stdr;
string writ;
FILE *fp;
char ch;
ifstream in("Scores.txt");
ofstream outf; //定义ofstream类(输出文件流类)对象outfile
outf.open("ScoresAnalysis.txt"); //使文件流与ScoresAnalysis.txt文件建立关联
for(int i=0;i>c\[i\].name>>c\[i\].analysis>>c\[i\].algebra>>c\[i\].analGeo; //变量赋值
c\[i\].Average=(c\[i\].analysis+c\[i\].algebra+c\[i\].analGeo)/3; //计算平均值
if(i==0){
outf<<line<<" "<<"平均成绩"<<endl; //第一行
}else{
outf<<line<<" "<<c\[i\].Average<<endl; //学生平均成绩
analysis_sum+=c\[i\].analysis;
algebra_sum+=c\[i\].algebra;
Average_sum+=c\[i\].analGeo;
}

}
outf<<"平均"<<" "<<analysis\_sum/15<<" "<<algebra\_sum/15<<" "<<""<<Average_sum/15; //科目平均成绩
outf.close(); //关闭文件

//读入ScoresAnalysis.txt
fp=fopen("ScoresAnalysis.txt","rt"); //打开文本
ch=fgetc(fp); //读取文本中第一个字符

while (ch!=EOF)
{
putchar(ch); //打印字符到屏幕上
ch=fgetc(fp); //指针变量加一
}
fclose(fp); //关闭文件
return0;
}

Nginx反向代理教程

发表于2017-02-06|分类于||阅读次数:
本文字数:3.8k|阅读时长 ≈7 分钟

为什么需要反向代理?

有几种情况下你可能需要反向代理:

  • 比如你在法国租用了一台服务器,国内速度太慢了,这时你就可以在香港找个vps反代这个法国服务器,这样你访问这个网站因为通过香港的中转速度就会变快。而且由于反代服务器对性能不要求,所以价格就很便宜。
  • 如果你不想暴露真实的IP地址,那么就可以在前端搭建一个反向代理服务器,让用户都是访问反向代理服务器。
  • 因为有些网站被墙了。。比如google。。你可以用没被墙的IP做个反代,这样大家访问这个网站就相当于访问google了。。

如何做反向代理?

反向代理应用最广的就是nginx了,所以这里以nginx为例。

最简单的反向代理代码

代码的位置是nginx的网站配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13

server
{
listen 80;
server_name icewx.yun;
location / {
proxy_pass http://cache.icewx.org/;
proxy_redirect off;
proxy\_set\_header X-Real-IP $remote_addr;
proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;
}
}

这个代码的意思就是,你访问icewx.org,其实拿到的内容是cache.icewx.org的内容。就成功实现了通过icewx.org反向代理cache.icewx.org的目的。 但这样就是直接连接,如果我们能把请求到的内容临时缓存在反代服务器上,那访问速度就更快了。比如你用香港反代法国的机子,如果请求一次后就缓存在香港服务器,那后面的人访问就是直接从香港服务器上取文件,速度就快多了。

首先我们需要建立用来存储缓存的目录:```arduino

mkdir /home/cache/path -p

mkdir /home/cache/temp -p
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

### 然后在nginx的配置文件httpd.conf里面增加缓存的设置

以下代码请插入http{ ##这里 },一般加在 log_format 上面或下面均可:
```sqf

client\_body\_buffer_size 512k;

proxy\_connect\_timeout 5;

proxy\_read\_timeout 60;

proxy\_send\_timeout 5;

proxy\_buffer\_size 16k;

proxy_buffers 464k;

proxy\_busy\_buffers_size128k;

proxy\_temp\_file\_write\_size128k;

proxy\_temp\_path /home/cache/temp;

proxy\_cache\_path /home/cache/path levels=1:2 keys\_zone=cache\_one:100m inactive=7d max_size=5g;

#100m是内存占用,7d是7天无访问删除,5g是缓存占具硬盘空间

最后在网站的配置文件里面增加缓存的设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

server

{

listen 80;

server_name icewx.org;

location / {

proxy\_cache cache\_one;

proxy\_cache\_valid 200 304 3d;

proxy\_cache\_key $host$uri$is_args$args;

proxy_pass http://cache.icewx.org/;

proxy_redirect off;

proxy\_set\_header X-Real-IP $remote_addr;

proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;

expires 10d;

access_log /home/wwwlogs/vpsmm.log access;

}

}

几个配置的说明:

1
2
3
4
5
6
7

server\_name icewx.org; #主机名
proxy\_cache\_valid2003043d; #正常状态缓存时间3天
proxy\_pass http://cache.icewx.org/; #反代的网站
expires 10d; #默认10天缓存
access_log /home/wwwlogs/vpsmm.log access; #日志文件

当然你熟悉nginx的配置的话,根据以上代码还能实现只缓存图片,js或者只缓存某个目录等等。 需要注意的是,这个缓存设置完,他不到期是不会自动删除的。比如你缓存了首页3天,你更新了文章,就不会自动更新到缓存服务器上,用户访问到的永远都是3天前的内容。要解决这个问题。可以把缓存时间设短,比如1h(1小时)。或者直接手动清空上面设置的2个缓存文件夹的内容。至于使用程序来自动更新的时候清空相应缓存的方法属于高阶应用,后面如果有时间再教大家。。 下面是关于反向代理更详细的描述,方便大家对反向代理有个更深入的了解,我复制粘帖来的。。。 ======================================================================================

1.1 反向代理初印象

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器

从上图可以看出:反向代理服务器位于网站机房,代理网站Web服务器接收Http请求,对请求进行转发。

1.2 反向代理的作用

①**保护网站安全:**任何来自Internet的请求都必须先经过代理服务器;

②**通过配置缓存功能加速Web请求:**可以缓存真实Web服务器上的某些静态资源,减轻真实Web服务器的负载压力;

③**实现负载均衡:**充当负载均衡服务器均衡地分发请求,平衡集群中各个服务器的负载压力;

2.1 Nginx是神马?

Nginx是一款轻量级的网页服务器、反向代理器以及电子邮件代理服务器。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 说到Web服务器,Apache服务器和IIS服务器是两大巨头;但是运行速度更快、更灵活的对手:**Nginx **正在迎头赶上。

)上运行了3年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。

在国内,已经有 淘宝、新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!、水木社区、豆瓣、YUPOO、海内、迅雷在线 等多家网站使用 Nginx 作为Web服务器或反向代理服务器。

2.3 Nginx的核心特点

(1)**跨平台:**Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本;
(2)配置异常简单:非常容易上手。配置风格跟程序开发一样,神一般的配置;
(3)非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到
2~3
万并发连接数。(这得益于Nginx使用了最新的epoll模型);
(4)事件驱动:通信机制采用epoll模型,支持更大的并发连接。 (5)Master/Worker结构:一个master进程,生成一个或多个worker进程。

(6)**内存消耗小:*处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M10=150M)。 (7)**内置的健康检查功能:**如果 Nginx 代理的后端的某台 Web 服务器宕机了,不会影响前端访问。
(8)**节省带宽:**支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
(9)**稳定性高:**用于反向代理,宕机的概率微乎其微。

3大虚拟化技术介绍

发表于2016-10-03|分类于||阅读次数:
本文字数:1k|阅读时长 ≈2 分钟

与VMware这种虚拟机和Xen虚拟化技术相比,OpenVZ的host OS和guest OS都必需是Linux(虽然在不同的虚拟环境里可以用不同的Linux发行版)。但是,OpenVZ声称这样做有性能上的优势。根据OpenVZ网站的说法,使用OpenVZ与使用独立的服务器相比,性能只会有1-3%的损失。

Xen 虚拟化技术介绍

Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发。它打算在单个计算机上运行多达100个满特征的操作系统。操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持(Xen HVM必须要CPU支持虚拟化特征),就能达到高性能的虚拟化。

KVM虚拟化技术介绍

KVM是Kernel Virtual Module的简写。KVM是红帽5.4发行版中推出的最新虚拟化技术。KVM是进入Linux内核的虚拟化项目,它刚刚起步,还不为众人所熟知。但随着RedHat下一步推广KVM力度的加大,相信不久的将来KVM会逐渐占据市场的主要位置。

现在所说的虚拟化,一般都是指在CPU硬件支持基础之上的虚拟化技术。KVM也同hyper-V、Xen一样依赖此项技术。没有CPU硬件虚拟化的支持,KVM是无法工作的。

准确来说,KVM是Linux的一个模块。可以用modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去作事情:还必须有一个用户空间的工具才行。这个用户空间的工具,开发者选择了已经成型的开源虚拟化软件QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分三个文件,分别是KVM模块、QEMU工具以及二者的合集。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU的关系。

什么是VPS,什么是虚拟化?

发表于2016-10-05|分类于||阅读次数:
本文字数:681|阅读时长 ≈1 分钟

VPS的全称为Virtual Private Server,叫做虚拟专用服务器(Godaddy称之为Virtual Dedicated Server,VDS).就是利用各种虚拟化手段把单台物理服务器虚拟为多台虚拟服务器提供给用户使用.VPS的差别主要在于虚拟化技术实现的不同:

linux 平台下常见的虚拟化技术

-
Openvz

-
Xen

-
KVM

-
VMware

windows平台下常见的虚拟化技术

-
Hyper-V

-
VMware

从虚拟化程度上来说,OpenVZ是操作系统层面(Operating system-level virtualization)的虚拟产品,和FreeBSD Jail,Solaris Zone, Linux-VServer 等类似;而 Xen 和 VMware,KVM,Hyper-V 等产品站在同一阵营.OpenVZ VPS实际上提供的是一个虚拟环境(Virtual Environment/VE),也叫容器(Container);而 Xen VPS 提供的是基于Hypervisor的虚拟机(Virtual Machine),这是本质上的不同。从VPS服务商的价格上来看,一般Openvz的价格要比其他类型的虚拟化VPS价格要低。

那种技术的VPS性能最好?Openvz的性能是最弱的吗

不一定。Opnevz的服务商如果没有超售的情况下,性能要比其他类型的VPS更强大一些(比如没有超售的128MB Openvz VPS可以运行Yum update,但是128MB Xen VPS不一定能通过Yum update)。

[源码]成语查询

发表于2015-10-01|分类于||阅读次数:
本文字数:3.5k|阅读时长 ≈6 分钟

******************************* 纯属新手,练手作品~ ****************************** 不废话,上源码。。。。 成语查询。。。对高三党用处还是挺大的。。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

body{

background-color: #eee;
}
#header{
background-color: #fff;
max-width:420px;
margin:20pxauto 20pxauto;
text-align:center;
}
.item{
height:100px;
background-color: #ccc;
margin:20pxauto 20pxauto;
max-width:420px;
}

请输入你要查询的成语
" method="get">

load("http://api.uihoo.com/chengyu/chengyu.http.php?key=".$text."&format=xml");
if($doc){
$idioms = $doc->getElementsByTagName( "item" );
foreach( $idioms as $idiom )
{
//将多个成语全部输出
switch ($idiom->nodeName)
{
case"item": $chengyu = $idiom->getElementsByTagName( "chengyu" )->item(0)->nodeValue;
Echo""."".$chengyu.""."";
$pinyin = $idiom->getElementsByTagName( "pinyin" )->item(0)->nodeValue;
Echo""."拼音:".$pinyin."";
$diangu = $idiom->getElementsByTagName( "diangu" )->item(0)->nodeValue;
Echo""."典故:".$diangu."";
$chuchu = $idiom->getElementsByTagName( "chuchu" )->item(0)->nodeValue;
$chuchu = $idiom->getElementsByTagName( "chuchu" )->item(0)->nodeValue;
Echo""."出处:".$chuchu."";
$lizi = $idiom->getElementsByTagName( "lizi" )->item(0)->nodeValue;
Echo""."例子:".$lizi."";
break;

}

}

}
?>

图片批量下载

发表于2015-10-10|分类于||阅读次数:
本文字数:1.9k|阅读时长 ≈4 分钟

1
2
3
4
5
6
7
8
9
10
11
12
13

";
//print_r($arr);
//echo"";
} else {
//echo "文件错误!";
}

for ($x=0; $x";
get_file(trim($arr\[$x\]));
}
?>

0%