所有由恶棍天使发布的文章

在docker容器中vi指令找不到

  1. 在使用docker容器时,有时候里边没有安装vi,敲vi命令时提示说:vi: command not found,这个时候就需要安装vi,可是当你敲apt-get install vi命令时,提示:  

  2. Reading package lists… Done  

  3. Building dependency tree         

  4. Reading state information… Done  

  5. E: Unable to locate package vi

  6. 这时候需要敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。  

  7. 等更新完毕以后再敲命令:apt-get install vi命令即可。

对于其他的软件来说 也是相同的

离线设置yum源

离线安装yum仓

由于在国企都有自己的内网,不能上网使用不了yum安装.我们可以在内网中搭建yum仓

一.本地挂载

1.直接把镜像挂载到/mnt目录

mount /dev/cdrom /mnt

2.修改本地源

#cd /etc/yum.repo

#mkdir back

#mv *repo ./back

#vi local-yum.repo

输入下面内容

[local-yum]

name=local-yum

baseurl=file:///mnt/      

enabled=1

gpgcheck=0

3.更新下源即可使用yum

yum clean all

yum makecache

二.如果是其它电脑使用则 

1.yum服务器需要安装nginx 

2.修改nginx默认站点目录到/mnt即可

3.local-yum.repo内容为:

[local-yum]

name=local-yum

baseurl=http://ip/mnt/      

enabled=1

gpgcheck=0

Linux下离线安装Docker

一、基础环境

1、操作系统:CentOS 7.3

2、Docker版本:18.06.1 官方下载地址

3、百度云Docker 18.06.1地址:https://pan.baidu.com/s/1YdN9z72QutPkHBfLq06H1A 密码:dvvh

4、官方参考文档:https://docs.docker.com/install/linux/docker-ce/binaries/#install-static-binaries

二、Docker安装

1、解压

tar -xvf docker-18.06.1-ce.tgz

2、将解压出来的docker文件内容移动到 /usr/bin/ 目录下

cp docker/* /usr/bin/

3、将docker注册为service

vim /etc/systemd/system/docker.service

将下列配置加到docker.service中并保存

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

[Service]

Type=notify

# the default is not to use systemd for cgroups because the delegate issues still

# exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

ExecStart=/usr/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

# Uncomment TasksMax if your systemd version supports it.

# Only systemd 226 and above support this version.

#TasksMax=infinity

TimeoutStartSec=0

# set delegate yes so that systemd does not reset the cgroups of docker containers

Delegate=yes

# kill only the docker process, not all processes in the cgroup

KillMode=process

# restart the docker process if it exits prematurely

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

4、启动

chmod +x /etc/systemd/system/docker.service             #添加文件权限并启动docker

systemctl daemon-reload                                                       #重载unit配置文件

systemctl start docker                                                             #启动Docker

systemctl enable docker.service                                           #设置开机自启

5、验证

systemctl status docker                                                         #查看Docker状态

docker -v                                                                                     #查看Docker版本

6.进入容器

docker exec -it 容器id /bin/bash

exit  退出容器

5.上传下载文件

Docker容器向宿主机传送文件

格式:

docker cp container_id:<docker容器内的路径> <本地保存文件的路径>

比如:

cp 1cc872df486e:/usr/local/tomcat/test.war  /home/

宿主机向Docker容器传送文件

格式:

docker cp 本地文件的路径 container_id:<docker容器内的路径>

比如:

docker cp /home/test.war  1cc872df486e:/usr/local/tomcat

离线安装openssh

centos6.x升级openssd

一、安装升级

(1)、升级前环境准备

1、将上文下载的三个文件上传至服务器,目录可自行设定,方便即可。

https://www.fcblog.cn/external_link_security_jump.html?jump_url=http%3A%2F%2Fcdn.download.fcblog.cn%2Fzlib-1.2.11.tar.gz

https://www.fcblog.cn/external_link_security_jump.html?jump_url=http%3A%2F%2Fcdn.download.fcblog.cn%2Fopenssl-1.0.2o.tar.gz

https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz

2、关闭系统防火墙

systemctl stop firewalld.service

3、关闭SElinux

检查是否关闭:

getenforce

如果未关闭,关闭之

setenforce 0

上面只是临时关闭了,重启后不生效。下面改配置文件,使永久生效。

  vi /etc/selinux/config

修改:

  SELINUX=disabled

保存退出。

4、安装相关依赖包

yum -y install gcc make perl zlib zlib-devel pam pam-devel 

安装完毕后执行下面命令,确保所有依赖包正常安装

rpm -qa | egrep "gcc|make|perl|zlib|zlib-devel|pam|pam-devel"

(2)、升级openSSH(注意从这步开始,通过Telnet登录到服务器,务必)

1、停止ssh服务

systemctl stop sshd

备份ssh配置文件

cp -r /etc/ssh /etc/ssh.old 

2、查看系统原有openssh包

rpm -qa | grep openssh

根据上面查询出的结果,卸载系统里原有Openssh(一般有三个包,全部卸载)

rpm -e –nodeps  xxxxxxxxxx

卸载完成后执行rpm -qa | grep openssh,确保没有回显

3、编译安装zlib

解压刚才上传到服务器的zlib-1.2.11.tar.gz,并进行编译安装

tar -xzvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure –prefix=/usr/local/zlib

如果报错类似下图所示,请安装gcc

make

make install

验证zlib安装是否成功,要包含include、lib、share三个目录。

ll /usr/local/zlib

新建并编辑配置文件:

vi /etc/ld.so.conf.d/zlib.conf 

加入如下内容后保存退出

/usr/local/zlib/lib 

刷新库文件,加载刚才编译安装的zlib生成的库文件

ldconfig -v

4.卸载旧的openssl包。

#rpm  -qa  |grep openssl

5.解压openssl安装包

#tar  -xvf  openssl-1.0.2o.tar.gz

卸载这些包。

#for  i   in  $(rpm  -qa |grep  openssl);do  rpm  -e  $i –nodeps  ;done

进入openssl-1.0.2o目录

#cd   openssl-1.0.2o

执行:

#./config  shared

6.执行安装

#make  &&  make   install

7.安装完毕。

执行命令:

#echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

#ldconfig

配置ssl库

#cp /usr/local/ssl/lib/libssl.so.1.0.0  /usr/lib64

#cp /usr/local/ssl/lib/libcrypto.so.1.0.0  /usr/lib64

#ln -s /usr/lib64/libcrypto.so.1.0.0  /usr/lib64/libcrypto.so.10

#ln -s /usr/lib64/libcrypto.so.1.0.0  /usr/lib64/libcrypto.so

#ln -s /usr/lib64/libssl.so.1.0.0  /usr/lib64/libssl.so.10

#ln -s /usr/lib64/libssl.so.1.0.0  /usr/lib64/libssl.so

#ln -s /usr/local/ssl/bin/openssl  /usr/bin/openssl

#ln -s /usr/local/ssl/include/openssl   /usr/include/openssl

查看openssl版本

#openssl  version  -a

安装openssh

1.解压openssh安装包

#tar  xvf   openssh-7.7p1.tar.gz

#cd  openssh-7.7p1

卸载原openssh

#rpm  -qa |grep  openssh

2.卸载

#for  i   in  $(rpm  -qa  |grep  openssh);do  rpm  -e  $i  –nodeps ;done

3.执行:

#./configure –prefix=/usr –sysconfdir=/etc/ssh –with-md5-passwords–with-pam –with-tcp-wrappers  –with-ssl-dir=/usr/local/ssl -without-hardening

4.删除原ssh配置目录

#rm  -rf  /etc/ssh

安装

#make   &&   make  install

5.安装完成,执行配置

#cp  ./contrib/redhat/sshd.init    /etc/init.d/sshd

#chkconfig –add sshd

#chkconfig sshd on

#chkconfig –list|grep sshd

6.查看版本

#ssh  -V

7.执行命令:

#sed -i "32 aPermitRootLogin yes" /etc/ssh/sshd_config

#service  sshd  restart

升级完成

winSCP:无权访问。 错误码:3 服务器返回的错误消息:Permission denied解决方

winscp可以利用sftp协议对linux服务器就行连接,如果是利用普通用户进行登陆的话,上传文件的过程中会出现一些permission denied的提示,并且错误的返回码是3,下面说明下解决方法:

1.登录到系统,执行下面命令找到sftp-server路径

find / -name sftp-server -print

2.在winscp端进行链接设置,点击高级进入到“高级站点设置”

    image.png

3.在高级设置中点击"SFTP",然后在SFTP服务器栏目输入:sudo+第一步得到的路径.

比如得到的路径是:/usr/libexec/openssh/sftp-server

    image.png

4.点击shell,在右侧输入sudo -i 设置完成后点击确定.

    image.png

5.主机名输入ip,用户名和密码即可.

centos7设置输入密码三次错误锁定账号

1、限制用户远程登录

在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!

# vim /etc/pam.d/sshd

#%PAM-1.0  

auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=10


各参数解释

even_deny_root 也限制root用户;

deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户

unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;

root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;

此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。


2、限制用户从tty登录

在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!

# vim /etc/pam.d/login

#%PAM-1.0  

 auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10


同样是增加在第2行!

3、查看用户登录失败次数

#cd /etc/pam.d/

[root@node100 pam.d]# pam_tally2 –user root    

Login Failures Latest failure From  

root 7 07/16/12 15:18:22 tty1


4、解锁指定用户

[root@node100 pam.d]# pam_tally2 -r -u root  

Login Failures Latest failure From  

sss

# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $

# This is the sshd server system-wide configuration file.  See

# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with

# OpenSSH is to specify options with their default value where

# possible, but leave them commented.  Uncommented options override the

# default value.

#Port 22

#AddressFamily any

#ListenAddress 0.0.0.0

#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key

#HostKey /etc/ssh/ssh_host_ecdsa_key

#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying

#RekeyLimit default none

# Logging

#SyslogFacility AUTH

#LogLevel INFO

# Authentication:

#LoginGraceTime 2m

#PermitRootLogin prohibit-password

#StrictModes yes

#MaxAuthTries 6

#MaxSessions 10

#PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2

# but this is overridden so installations will only check .ssh/authorized_keys

AuthorizedKeysFile .ssh/authorized_keys

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none

#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts

#HostbasedAuthentication no

# Change to yes if you don't trust ~/.ssh/known_hosts for

# HostbasedAuthentication

#IgnoreUserKnownHosts no

# Don't read the user's ~/.rhosts and ~/.shosts files

#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!

#PasswordAuthentication yes

#PermitEmptyPasswords no

# Change to no to disable s/key passwords

#ChallengeResponseAuthentication yes

# Kerberos options

#KerberosAuthentication no

#KerberosOrLocalPasswd yes

#KerberosTicketCleanup yes

#KerberosGetAFSToken no

# GSSAPI options

#GSSAPIAuthentication no

#GSSAPICleanupCredentials yes

# Set this to 'yes' to enable PAM authentication, account processing,

# and session processing. If this is enabled, PAM authentication will

# be allowed through the ChallengeResponseAuthentication and

# PasswordAuthentication.  Depending on your PAM configuration,

# PAM authentication via ChallengeResponseAuthentication may bypass

# the setting of "PermitRootLogin without-password".

# If you just want the PAM account and session checks to run without

# PAM authentication, then enable this but set PasswordAuthentication

# and ChallengeResponseAuthentication to 'no'.

#UsePAM no

#AllowAgentForwarding yes

#AllowTcpForwarding yes

#GatewayPorts no

#X11Forwarding no

#X11DisplayOffset 10

#X11UseLocalhost yes

#PermitTTY yes

#PrintMotd yes

#PrintLastLog yes

#TCPKeepAlive yes

#PermitUserEnvironment no

#Compression delayed

#ClientAliveInterval 0

#ClientAliveCountMax 3

#UseDNS no

#PidFile /var/run/sshd.pid

#MaxStartups 10:30:100

#PermitTunnel no

#ChrootDirectory none

#VersionAddendum none

# no default banner path

#Banner none

# override default of no subsystems

Subsystem sftp /usr/libexec/sftp-server

# Example of overriding settings on a per-user basis

#Match User anoncvs

# X11Forwarding no

# AllowTcpForwarding no

# PermitTTY no

# ForceCommand cvs server

PasswordAuthentication yes

PermitRootLogin yes

shadowsocksr

1.wget -N –no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/ssrmu.sh && chmod +x ssrmu.sh && bash ssrmu.sh

2.

bash ssrmu.sh

# 还有一个 运行参数,是用于所有用户流量清零的

bash ssrmu.sh clearall

# 不过不需要管这个,可以通过脚本自动化的设置 crontab 定时运行脚本

3.

注意:添加/删除/修改 用户配置后,无需重启ShadowsocksR服务端,ShadowsocksR服务端会定时读取数据库文件内的信息,不过修改 用户配置后,可能要等个十几秒才能应用最新的配置(因为ShadowsocksR不是实时读取数据库的,所以有间隔时间)。

4.

安装目录:/usr/local/shadowsocksr

日志位置:/usr/local/shadowsocksr/ssserver.log

配置文件:/usr/local/shadowsocksr/user-config.json

数据文件:/usr/local/shadowsocksr/mudb.json

注意:如果要转移用户数据,只需要转移 mudb.json 文件或其内容即可。

注意:ShadowsocksR服务端不会实时的把流量数据写入 数据库文件,所以脚本读取流量信息也不是实时的!

5.

ShadowsocksR 安装后,自动设置为 系统服务,所以支持使用服务来启动/停止等操作,同时支持开机启动。

启动 ShadowsocksR:/etc/init.d/ssrmu start

停止 ShadowsocksR:/etc/init.d/ssrmu stop

重启 ShadowsocksR:/etc/init.d/ssrmu restart

查看 ShadowsocksR状态:/etc/init.d/ssrmu status

ShadowsocksR 默认支持UDP转发,服务端无需任何设置。

6.如何转移用户数据信息?

SSR服务端的所有用户数据都存在 /usr/local/shadowsocksr/mudb.json 文件中。

所以只需要转移该文件或者或者复制内容粘贴到另一个服务器上即可(先安装SSR服务端后再覆盖mudb.json,然后重启SSR服务端)。

ShadowsocksR-win-4.9.0.zip

未闻花名

已知花意,未见其花。

已见其花,未闻花名。

再见其花,落泪千溟。

未闻花名,但识花香。

已知花意,花已不在。

未闻花香,但识花香。

再遇花时,泪已千行。

我知花意,花不知我。

爱其芬芳,闻其花名。

回头忆我,我心故我。

LINUX新建和增加SWAP分区

我们都知道在安装Linux系统时在分区时可以分配swap分区,而系统安装后(在运行中)如何建立或调整swap分区呢?

在装完Linux系统之后,建立Swap分区有两种方法。

1.新建磁盘分区作为swap分区

2.用文件作为swap分区 

下面介绍这两种方法:(都必须用root权限,操作过程应该小心谨慎。)

 

一、新建磁盘分区作为swap分区

1.以root身份进入控制台(登录系统),输入

# swapoff -a      停止所有的swap分区

 

2. 用fdisk命令(例:# fdisk /dev/sdb)对磁盘进行分区,添加swap分区,新建分区,在fdisk中用“t”命令将新添的分区id改为82(Linux swap类型),最后用w将操作实际写入硬盘(没用w之前的操作是无效的)。

 

3. # mkswap /dev/sdb2    格式化swap分区,这里的sdb2要看您加完后p命令显示的实际分区设备名

 

4. # swapon /dev/sdb2    启动新的swap分区

 

5. 为了让系统启动时能自动启用这个交换分区,可以编辑/etc/fstab,加入下面一行

/dev/sdb2 swap swap defaults 0 0

 

 

二、用文件作为Swap分区

 

1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。

# dd if=/dev/zero of=/root/swapfile bs=1M count=1024

 

2.格式化为交换分区文件:

# mkswap /root/swapfile     建立swap的文件系统

 

3.启用交换分区文件:

# swapon /root/swapfile     启用swap文件

 

4.使系统开机时自启用,在文件/etc/fstab中添加一行:

/root/swapfile swap swap defaults 0 0

 

新建和增加交换分区用到的命令为:mkswap、swapon等,而想关闭掉某个交换分区则用“swapon /dev/sdb2”这样的命令即可