1024社区 | 1024.day
12K subscribers
405 photos
6 videos
3 files
1.06K links
这是一个分享VPS资讯以及Linux学习频道。
Download Telegram
#haha #linux
大家节日愉快,唠唠嗑!

姥爷关于 Linux 的教程,都是以 Ubuntu 18.04 Server 和 Debian 10 Server 为主,且都是 root 用户,不关注桌面,没有 sudo 等用户命令。

C 环境包:
apt install build-essential libtool libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev

golang 环境:
wget https://golang.org/dl/go1.16.3.linux-amd64.tar.gz -O - | tar -xz -C /usr/local/

vi ~/.profile

export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:$HOME/.cargo/bin
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN

source ~/.profile
go version

rust 安装:
curl https://sh.rustup.rs -sSf | sh

docker 安装:

curl https://get.docker.com -fsSL | sh
#proxy
个人认为switchyomega这个插件是比较简单好用的,各代理之间切换比较方便,比如Tor、ss、v2ray、xx-net之间切换,只要端口不同就ok了。而且规则添加,删除也较PAC简单。下面是别人家的教程推荐:
https://yearliny.com/switchyomega-tutorial/
有趣的Linux命令22:
好久没说命令了,今晚讲一下dd命令,dd命令用于读取、转换并输出数据。这个命令写入镜像是真的比Windows下方便多了。
下面就来演示一下写入Ubuntu镜像到U盘,然后你就可以拿着U盘去安装系统了。

1、下载镜像,以Ubuntu为例,当然Windows或者其它桌面iso文件都行:
wget -P /root https://releases.ubuntu.com/20.04.2/ubuntu-20.04.2-live-server-amd64.iso

2、插入U盘后,用 df -h 命令查看U盘分区路径信息。下面以U盘在 /dev/sdb 路径为例。

3、写入镜像到U盘:
sudo dd if=/root/ubuntu-20.04.2-live-server-amd64.iso of=/dev/sdb bs=1440k

上面各项参数解读如下:

if=/root/ubuntu-20.04.2-live-server-amd64.iso: 输入文件名,默认为标准输入。即指定源文件。
of=/dev/sdb: 输出文件名,默认为标准输出。即指定目的文件。
bs=bytes: 同时设置读入/输出的块大小为 bytes 个字节。

是不是很简单,一条命令就可以写入U盘安装镜像。
有趣的Linux命令23:
今晚要讲的是 echo 命令,echo为输出命令,在 sh 脚本中用的较多,本来想 echo 和 printf 两个命令一起讲的,考虑到篇幅太长,还是先讲 echo 命令吧。

1、显示普通字符串:

echo "It is a test"
上面双引号也可以省略,如下:
echo It is a test

2、显示转义字符

echo "\"It is a test\""
结果显示:
"It is a test"
同样双引号也可以省略

3、显示变量

这里用到 read 命令,这个命令下次再讲,read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
写个脚本先,下面代码保存为 test.sh,name将是一个变量:

#!/bin/sh
read name
echo "$name It is a test"

运行上面脚本 sh test.sh
将会要求你输入变量,此处输入 Hi,
那么将会显示:
Hi,It is a test

4、显示换行

echo -e "OK! \n"
echo "It is a test"

将会显示
OK!

It is a test


5、显示不换行

echo -e "OK! \c"
echo "It is a test"

将会显示:
OK! It is a test

6、显示结果覆盖整个文件

echo "It is a test" > myfile

7、显示结果追加到文件结尾

echo "It is a test" >> myfile

8、原样输出字符串,不进行转义或取变量

echo '$name\"'

将会显示:
$name\"

9、显示命令执行结果

echo date

上面 date 命令包含了两个反引号,TG 给忽略了,注意!date 命令将会显示时间日期:

Thu May 20 01:19:27 CST 2021
#ssh #linux
服务器上使用 ssh 密钥登录

1、本地客户端生成密钥对

使用下面命令生成密钥对:

ssh-keygen -t rsa -P

-P表示空密码,一路回车,在 .ssh 目录会生成下面三个文件

cd ~/.ssh && ls

id_rsa id_rsa.pub known_hosts
id_rsa: 表示私钥,不要泄露
id_rsa.pub: 表示公钥

查看公钥内容,然后复制下来:

cat ~/.ssh/id_rsa.pub

上面客户端完成,开始折腾服务端

2、服务端新建authorized_keys

root目录下新建 .ssh 文件夹

mkdir /root/.ssh

.ssh 文件夹新建 authorized_keys 文件

vi /root/.ssh/authorized_keys

上面添加客户端复制下来的 id_rsa.pub 内容,保存。

3、修改 sshd_config 内容

vi /etc/ssh/sshd_config

禁用密码登陆
PasswordAuthentication no

允许root用户登录
PermitRootLogin yes

指定公钥数据库文件
AuthorsizedKeysFile .ssh/authorized_keys

以启用密钥登陆
PubkeyAuthentication yes

最后重启 sshd 服务:
systemctl restart sshd
#linux #proxy
Linux 终端挂代理,下面分享两种方法:

1、ProxyChains 是一个终端代理方案,使用比较简单,直接安装:

apt install proxychains

编辑 /etc/proxychains.conf 文件,vi 翻至最下面,把默认的 tor 的代理方式、端口换成你的代理端口,比如常用的 Shawdowsocks 代理:

vi /etc/proxychains.conf

翻到最下面把 tor 端口改成:

socks5 127.0.0.1 1080

先启动代理,连接至服务器,然后,只需要在运行程序的命令前加上 proxychains 即可。比如:

proxychains curl www.google.com

2、把代理服务器地址写入 shell 配置文件 .bashrc

echo "export ALL_PROXY=socks5://127.0.0.1:1080" >> /root/.bashrc

然后: source /root/.bashrc

这种方法会导致所有请求都走代理了,没有第一种来得方便。
#gitalk
解决博客评论,使用 Gitalk 登录授权报 403 的问题:

近期发现使用 gitalk 在登录 github 授权时出现错误 error: request failed with status code 403

这是因为 gitalk 在访问 github 时为了解决跨域问题使用了一个反向代理,这个默认的反向代理近期限制了访问,所以无法使用了。

发现不少朋友使用更换代理地址的方式来解决问题,但将自己网站的服务依赖于第三方,也不是长久之计,为什么不搭建一个反向代理来自己使用呢?

可以使用 nginx 简单的配置一下,即可达到反向代理请求 github 的目的。

配置 nginx 在443端口下添加一个反代即可:

   location = /login/oauth/access_token {
proxy_pass https://github.com;
}

然后,只需要在 gitalk.js 中添加你的网址也就可以了,如下:

proxy: 'https://yeahwu.com/login/oauth/access_token'
#openssl #hash #passwd
openssl hash 加密,及判断 hash 的类型

$1$QzybI4X/$P/iFld6vSYKBoZd5.bn201

上面是一串加密了的密文,明文密码为: starts.sh

描述:开始的 $1$ 位为加密标志,后面8位$中间内容为加密使用的 salt,最后面的为 hash

长度:34个字符

加密算法:2000次循环调用MD5加密

试一下,还原上面的密文,命令:
openssl passwd -1 starts.sh

回显:
$1$cZCelkE6$qsiWcTgHN4O9aotAHQjG60

呀,和上面的密文不一样?原因是没有固定 salt 值,那么再试一下:
openssl passwd -1 -salt QzybI4X/ starts.sh

回显:
$1$QzybI4X/$P/iFld6vSYKBoZd5.bn201
这下就还原了上面的密文了。

$1$ 为 MD5 加密
$5$ 为 SHA-256 加密
$6$ 为 SHA-512 加密
……

另,爆破上面的密文,可以试试 hashcat
vim 小技巧:

apt install vim

即便在 /etc/vim/vimrc 中添加了
set mouse=a
也还是不能粘贴。

解决方法:
vi ~/.vimrc
添加:
set mouse-=a

最后:
source ~/.vimrc
#network #linux
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。

支持 DHCP 的服务器,是不用自己手动配置 IP、网关、掩码等,系统安装好了,也自动配置好网络了。下面贴出 Ubuntu 和 Debian 的 DHCP 自动配置文件:

Ubuntu:
vi /etc/netplan/10-ens3.yaml

支持IPv6,添加下面内容:
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: yes
dhcp6: yes


Debian:
vi /etc/network/interfaces

支持IPv6,添加下面内容:
auto lo
iface lo inet loopback

allow-hotplug ens3
iface ens3 inet dhcp

iface ens3 inet6 auto
#vim
vim 打开多个文件,并同时显示、切换

1、打开多个文件

vi file file1 file2

vim窗口启动后,可以继续打开文件:

:open file3

2、文件之间切换

下一个文件:
:bn

上一个文件:
:bp

当然,如果打开的文件太多,可以使用ls命令查看打开的文件,记住前面的序号:
:ls

然后使用下面命令来切换:
:b num
num 是ls命令后,前面的文件序号

3、一个窗口显示多个文件

竖向显示多个文件:
:sp

横向显示多个文件:
:vsp

窗口间切换方法:
Ctrl键 + ww
#ssl #certbot #cron
申请或删除Let's Encrypt证书方法:

1、安装certbot

apt install certbot

2、certbot申请证书,申请前先关掉nginx等web服务

certbot certonly --standalone --email youmail@mail -d abc.com -d www.abc.com

3、下面是cron每月1号凌晨2点自动检查更新ssl证书配置

crontab -e

0 2 1 * * /usr/bin/certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

service cron restart

4、如果要更换域名则可以删除证书,重新申请

rm -rf /etc/letsencrypt/live/*
rm -rf /etc/letsencrypt/archive/*
rm /etc/letsencrypt/renewal/*
停止nginx后,重复上面第2步就可以了。

5、查看证书剩余日期等详细信息
certbot certificates
#301 #nginx
域名设置301跳转,比如点击老域名跳转到新域名,nginx上添加如下:
    server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name starts.sh www.starts.sh;
return 301 https://111111.online$request_uri;
root /var/www/blog;
}
制作 ss 或者 v2ray 节点订阅:

首先新建一个节点列表文件:

vi dingyue.txt

写入内容如下,一行一个节点:

vmess://ew0KICAidiI6ICIyIiwNCiAgInBdd
ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpl


保存后,base64加密到网站目录:

base64 dingyue.txt >/var/www/subscribe

当然,你也可以把加密后的 subscribe 文件上传到任何可以链接到的地方,比如 GitHub,或者网盘,等等。
#v2ray #bt #nginx
v2ray代理,怎么屏蔽bt下载,官方有屏蔽bt的配置,好像对IPv6无效,所以怎么手动找到IP,然后屏蔽。下面以ws代理为例,演示一下。

1、首先,你得打开v2ray的log日志:

"log": {
"loglevel": "warning",
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log"
},

重启 v2ray,等待一段时间,然后进入log文件夹:

cd /var/log/v2ray

搜索关键字 “tracker”:

find .|xargs grep -ri "tracker"

这样就找到使用BT的IP了。

2、下面是利用 Nginx 来屏蔽掉这些IP或IP段:

mkdir /etc/nginx/conf.d

新建一个 blocksip.conf 文件:

vi /etc/nginx/conf.d/blocksip.conf

内容如下:

deny 185.59.222.33;
deny 2408:8270:102f:2ca0:4231:3cff:fe1e:dfbb;
#上面是需屏蔽的单个IP,下面是IP段
deny 185.59.222.33/24;

最后,还得把 blocksip.conf 文件关联到 nginx.conf 文件才行。

3、在 nginx.conf 文件 http 字段,添加如下内容:

include /etc/nginx/conf.d/*.conf;

重启 Nginx 后就可以屏蔽做坏事的IP了。

systemctl restart nginx
#haha
唠叨一下v2ray的log吧,v2ray的日志是非常清晰的,主要记录你的IP和访问网站、时间戳。有没有看黄片,有没有浏览境外反动网站,清清楚楚。
比如,俺想屏蔽bt,俺甚至能屏蔽掉哪些预谋犯罪(预谋bt),还没犯罪(还没bt下载)的用户。也就是你在浏览bt网站阶段就被俺逮住了。
所以,那些爱国爱党的机场,大家还是上点心吧。
随手改了改萌咖的DD脚本,本来是自用的,精简了下,剔除了Centos相关代码,重新分了一下区,简单配置一下,增加些常用软件。分享出来骗点赞吧。
可DD Ubuntu18.04、20.04, Debian 9、10 四个系统,适用于支持DHCP服务的VPS或是杜甫,傻瓜式操作,只要运行脚本就行了。
项目地址:
https://github.com/yeahwu/InstallOS
#centos selinux
CentOS更换源和关闭SELinux

CentOS更换源

1、更换CentOS-Base.repo源:

centos 6版本
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

centos 7版本
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

centos 8版本
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

2、运行 yum makecache

3、安装epel源
yum -y install epel-release

关闭SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config

最后重启: /sbin/reboot

4、
CentOS 7 关闭打开防火墙

1、启动防火墙: systemctl start firewalld

2、禁用防火墙: systemctl stop firewalld

3、设置开机启动: systemctl enable firewalld

4、停止并禁用开机启动: sytemctl disable firewalld

5、重启防火墙: firewall-cmd --reload

6、查看状态: systemctl status firewalld