点滴记录
自古成功在尝试。

Linux中SSH使用ssh-keygen生成密钥登录

cx阅读(53)

密钥形式登录的原理是:利用密钥生成器制作一对密钥:公钥和私钥。将公钥添加到服务器的用户的对应~/.ssh/authorized_keys,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他用户设置处甚至主机,利用私钥也可以登录。所以key的使用很方便哦,同时保护私钥很重要!

## 本地机器用户
## 使用ssh-keygen生成key后, 检查~/.ssh/id_rsa.pub 和 ~/.ssh/id_rsa 是否存在
ssh-keygen
## 成一个rsa密钥对 shell中, 自行设置参数,也可以直接跳过
## 复制pub key
## 远程主机用户
## 通过机器管理员(自己机器自己搞)
## 将pub key复制粘贴进入 ~/.ssh/authorized_keys中
## notice: 有的vps商选择密码登入后,会默认关闭key登入,需要去/etc/sshd_config中修改一下
## 本地机器用户
ssh 远程主机用户@远程主机地址
## 登入成功即可愉快玩耍了!!!

如果windows的小伙伴,使用的是putty, xshell等登入软件,可能使用key更简单吧,可我没有搞过呀。这里就不写了emmm

注意: 需要自己学习一下ssh的基本知识哦。

Ubuntu 18+开启Google BBR的方法

cx阅读(371)

GoogleBBR算法需要linux内核为4.9+,Ubuntu18中内核版本为4.15,直接符合开启bbr的要求,只需要简单的两步即可开启BBR算法。

vim /etc/sysctl.conf

#添加
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

# 生效配置
sysctl -p

查看BBR算法时候是否开启

lsmod | grep bbr

如果又状态信息,即为开启成功1

Git基本使用命令记录

cx阅读(271)

最近在学习git使用方法,颇有收获,总结一些常用的命令。

git init
创建git仓库 默认主机名为orgin

git clone url
克隆远程仓库
git clone -o 主机名 url
克隆远程仓库并命名主机民为主机名

查看远程仓库
git remote

添加远程仓库
git remote add pb https://github.com/paulboone/ticgit

git fetch [remote-name]
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

git add filename
跟踪项目
git commit -m “”
提交说明信息

git push orgin 版本名
推送

git branch 分支名
创建分支

git branch -d 分支名
删除本地分支

git push 主机名 –delete 分支名
删除远程分支,需通过push远程操作命名

git branch -v
显示本地以及远程仓库的分支

git checkout 分支名
切换分支

git fetch –all
git reset –hard origin/master
git pull
强制从远程仓库同步到本地

git fetch 主机名 分支名
取回远程主机分支

git merge 分支名
获取分支的改动

pull = fetch + merge

git log –pretty=oneline 文件名
查看文件的修改历史 可以得到xxxxxxxxxx
git show xxxxxxxxxxxx
查看某次修改的内容

git checkout -b 分支名 主机名、分支名
创建分支,其实节点为远程的分支

git ls-files –stage
查看已经在缓存区的文件

git rm 文件名
会删除本地和缓存的文件,但不会删除远程的文件容易出错

git checkout HEAD –data

其他正在学习中,本文会持续更新。

Centos虚拟主机添加配置swap,增加性能

cx阅读(274)

工作中,我们常常在使用虚拟机中,发现内存不够用。尤其数据库经常因为内存不足而down掉。这时候我们就需要swap来零时救济一把。本文记录了设置swap的方法。
1. 查看分区状况

free -m

#如下
total        used        free      shared  buff/cache   available
Mem:           1839         190         219           4        1428        1447
Swap:             0           0           0

2. 配置swap 2G的空间

dd if=/dev/zero of=/var/swap bs=1024 count=2048000
#会提示创建信息

3. 设置交换文件

mkswap /var/swap

4. 启用交换空间

swapon /var/swap 

5. 关闭交换空间

swapoff /var/swap

PHP7.0连接mysql一些小问题

cx阅读(261)

今天在使用php7.x编译版本时,遇到了无法连接mysql的问题。

//错误如下:
Message: mysqli::real_connect(): (HY000/2002): No such file or directory

Google后发现,有多种原因,某些时候某些系统或者php版本等。。mysql中获取所需套接字文件的位置有点不对。

//修改连接是使用localhost...全都改成127.0.0.1(改成v4地址即可。)
$con = mysqli_connect('127.0.0.1','root','','mysql');
if ($con) { echo 'connect ok !';}

ps:PHP7.0很多模块默认都是关闭的,需要手动开启。连接不上数据库出错,可能也会出错哦!

解决Openssl升级到1.1.0使用shadowsocks服务报错问题

cx阅读(614)

本文记录ss无法在linux系统中openssl版本为1.1.0及以上,无法使用的解决方法。

运行服务报错如下:

INFO: loading config from /ss/ss.json
2018-03-08 15:29:53 INFO     loading libcrypto from libcrypto.so.1.1
Traceback (most recent call last):
  File "/usr/local/bin/sslocal", line 11, in 
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/local.py", line 39, in main
    config = shell.get_config(True)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py", line 262, in get_config
    check_config(config, is_local)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py", line 124, in check_config
    encrypt.try_cipher(config['password'], config['method'])
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 44, in try_cipher
    Encryptor(key, method)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 83, in __init__
    random_string(self._method_info[1]))
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 109, in get_cipher
    return m[2](method, key, iv, op)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py", line 76, in __init__
    load_openssl()
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py", line 52, in load_openssl
    libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 375, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 380, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

错误原因:

openssl升级到1.1.0以上版本,导致shadowsocks启动报undefined symbol: EVP_CIPHER_CTX_cleanup错误。
因为在openssl1.1.0版本中,废弃了EVP_CIPHER_CTX_cleanup函数,如官网中所说

EVP_CIPHER_CTX was made opaque in OpenSSL 1.1.0. As a result, EVP_CIPHER_CTX_reset() appeared and EVP_CIPHER_CTX_cleanup() disappeared. 
EVP_CIPHER_CTX_init() remains as an alias for EVP_CIPHER_CTX_reset().

解决方法如下:

#编辑shadowsocks运行文件中openssl.py文件,目录在/usr/local/lib/python2.7/后有所不同
vim /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py

#查找所有的cleanup函数,改为reset函数
#小编共找到两个cleanup函数,一个在52行,一个在111行。

重启服务,一切正常。。。

Linux中使用PostFix服务,并发送邮件

cx阅读(416)

本文记录使用Postfix发送电子邮件
1、域名添加相关解析

记录类型主机记录记录值
A@A.B.C.D
AmailA.B.C.D
MX@test.com

2、安装postfix服务

apt-get install postfix
#安装telnet服务使用postfix
apt-get install telnet

3、修改postfix配置

vim /etc/postfix/main.cf

//本地主机名(设置为A记录中的值)
myhostname = mail.test.com
//本地域(设置为A记录中的值)
mydomain = test.com
//本地寄出邮件域
myorigin = $mydomain
//设置监听的网卡
inet_interfaces = all
//可接收邮件的主机名和域名
mydestination = $myhostname, $mydomain

4、创建用户

useradd xxx
passwd xxx

5、重新启动postfix服务

service postfix restart

5、本地发送测试邮件

telnet 127.0.0.1 25

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 mail.test.com ESMTP Postfix
//设置发信人
mail from:xxx@test.com
250 2.1.0 Ok
//设置收信人
rcpt to:root@test.com
250 2.1.5 Ok
//书写邮件内容,以回车.回车结束书写
data
354 End data with .
Hello i iam xxx;
.
250 2.0.0 Ok: queued as E155B40051
//退出
quit

5、查看邮件

mail

Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 xxx@test.com          Tue Mar  6 09:23  16/438 

//输入编号
&1

Message  1:
From xxx@test.com  Tue Mar  6 09:23:57 2018
Return-Path: 
X-Original-To: root@test.com
Delivered-To: root@test.com
Date: Tue,  6 Mar 2018 09:23:28 +0800 (CST)
From: xxx@test.com
Status: R

Hello i iam xxx;

//退出
&quit

Linux下网站数据,数据库等备份懒人shell脚本

cx阅读(288)

在linux中搭建个人博客后,一般情况下不会经常登入终端器,本文记录一些方案,方便我们备份网站的数据和数据库

linux中写脚本,首选当然是shell了呀

思路:
需要每天备份一次数据库和网站源文件和多媒体等。
每天备份的数据存在不同文件夹下,文件夹以日期命名。
当数据存放大于五天后,删除数据。
最后添加到crond进程中。

#!/bin/sh

path="/backup/`date +%Y-%m-%d`"
agopath="/backup/`date -d "5 days ago" +%Y-%m-%d`"
#echo $agopath
#echo $(ls $path)

if [ ! -d $path ];then
        mkdir $path
fi

mysqldump -uroot -ppasswod cx_wp > $path"/databasename.sql"

#我的源文件在根目录下所以到根下操作tar
cd /
tar -czf $path"/web.tar.gz" web

if [ -d $agopath ];then
        rm -rf $agopath
fi