linux小结
目录结构
usr  (巧记:universal software resource)  这个“/usr"有点类似Windows里面的Program Files
/bin 和 /usr/bin的区别,就是 /bin里面的程序更加核心
etc(巧记:editable text configuration)
var(variable 变动) 存放log,lock等文件
/usr: (unix shared resources) 应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用man Is时会查询/usr/share/man/man1/ls.1.gz 的内容建议单独分区,设置较大的磁盘空间。
/sbin: (super user binaries) /usr/sbin:  /usr/local/sbin: 放置系统管理员使用的可执行命令。如fdisk、shutdown、 mount 等。与/bin 不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
/opt:给主机 额外安装软件所摆放的目录。以前的Linux 系统中,习惯放置在/usr/local目录下
/usr/local/src 就是系统专门给用户分配的放 源码的目录 链接
/bin
/usr/bin
/usr/local/bin
/sbin
/usr/sbin
/usr/local/sbin
基础命令
用户用户组
查看用户 cat /etc/passwd
查看用户组 cat /etc/group
useradd
useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u <uid>][用户帐号]
-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录> 指定用户登入时的起始目录。指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-D  变更预设值.
-e<有效期限> 指定帐号的有效期限。
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组。
-G<群组> 指定用户所属的附加群组。
-m  自动建立用户的登入目录。
-M  不要自动建立用户的登入目录。
-n  取消建立以用户名称为名的群组.
-r  建立系统帐号。
-s<shell>指定用户登入后所使用的shell。
-u<uid> 指定用户ID。
nologin
useradd -d /usr/local/apache -g apache -s /bin/false apache #添加一个不能登录的用户
要拒绝系统用户登录,可以将其 shell 设置为 /usr/sbin/nologin 或者 /bin/false。
usermod -s | --shell /usr/sbin/nologin username
或者
usermod -s | --shell /bin/false username
/bin/false||/usr/sbin/nologin说明及比较:
/bin/false
false 什么也不做只是返回一个错误状态,然后立即退出。将用户的 shell 设置为 /bin/false,用户会无法登录,并且不会有任何提示。
/usr/sbin/nologin
nologin 会礼貌的向用户显示一条信息,并拒绝用户登录:
This account is currently not available.
有一些软件,比如一些 ftp 服务器软件,对于本地非虚拟账户,只有用户有有效的 shell 才能使用 ftp 服务。这时候就可以使用 nologin 使用户即不能登录系统,还能使用一些系统服务,比如 ftp 服务。/bin/false 则不行,这是二者的重要区别之一。
userdel
出现useradd:警告:此主目录已经存在的问题如何处理?
删除用户不用userdel 改用userdel -rf
useradd:警告:此主目录已经存在。
adduser
这个命令实际是一个perl脚本,是useradd等类似底层命令的更友好的前端,它会用交互性的方式建立新用户,使用它可以指定新用户的家目录,登录密码,是否加密主目录等等
---useradd adduser linux创建用户、设置密码、修改用户、删除用户
linux创建用户、设置密码
useradd testuser #创建用户testuser
passwd testuser #给已创建的用户testuser设置密码
userdel testuser #删除用户testuser
rm -rf testuser #删除用户testuser所在目录
或
useradd -m  testuser #创建用户及目录
passwd testuser #给已创建的用户testuser设置密码
基本操作
终端快捷键
ctrl-u: 剪切光标之前的所有内容,如果光标位于行尾,则相当于剪切整行内容。
ctrl-k: 剪切光标之后的所有内容,有点类似vim的D命令。
cammand+k: 清屏
ctrl-l: 清屏
一个典型场景,输了一大串命令A还未执行,发现需要执行另一条命令B,又不想开启一个新的终端,怎么保存当前输入的内容A呢,有两种方式:
1. 使用ctrl-u剪切整行内容A,执行完B命令后,使用ctrl-y恢复,在此之前不能有其它剪切操作,否则内容会被覆盖.
2. 使用ctrl-a移动光标到行首,输入#注释当前行内容后直接回车,这相当于注释了当前行,但在history中依然会有记录,恢复时只需要使用ctrl-p找到刚刚的命令,去掉#即可。
mkdir
-p 父目录不存在情况下先生成父目录 (parents)
-v 显示命令执行过程中的详细信息
例:mkdir -p test2/test22
less
less [路径/]文件名称
空格 向下翻页
b    向上翻页
q    quit 退出
/关键字 向下搜索
?关键字 向上搜索
参数
–m 百分比
-N    行号
find whereis which
find
$ find . -name 'my*'
搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
$ find . -name 'my*' -ls
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
find / -name AnmyTest -type d(查找AnmyTest目录位置) 如果不指定type类型,会将包含查找内容的文件和文件夹一起输出
Linux find查找文件及文件夹命令
whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
whereis命令的使用实例:
$ whereis grep
which
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which命令的使用实例:
$ which grep
tar
-z, --gzip, --ungzip  以后在解压压缩包时 先使用tar –zxvf 如果解压不了 将z去掉tar –xvf
-c 表示创建压缩
-x, --extract, --get 表示解压缩
-v, --verbose表示执行过程
-f 后面接档名(压缩后的名称)
-C, --directory DIR 转到指定的目录  不管是在打包还是解压都很有用
例:
$ cd temp
$ ls
img1  img2  img3
$ tar -cf img.tar temp/*
这样打包会将temp目录也打包进去,使用下面带有-C参数的命令可以去掉路径信息
$ tar -cf img.tar * -C temp
解压img.tar到当前目录下的temp目录
$ tar -xf img.tar -C temp
link
创建硬链接(hard link)
$ ln myfile hard
$ ls -li
25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 hard
25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 myfile
创建软链接(symbolic link)
$ ln -s myfile soft
$ ls -li
25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 hard
25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 myfile
25869216 lrwxr-xr-x 1 unixzii staff 6 7 8 17:47 soft -> myfile
软链接保存了其代表的文件的绝对路径 
5分钟让你明白“软链接”和“硬链接”的区别
linux 符号链接和硬链接
df du
du命令用于显示目录或文件的大小。
-s或--summarize 仅显示总计。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-h或--human-readable 以K,M,G为单位,提高信息的可读性
例:
du -sh /*
du -sh /root/*
vim
VIM 有四个模式,:
正常模式 (Normal-mode)
插入模式 (Insert-mode)
命令模式 (Command-mode)
可视模式 (Visual-mode)
复制/剪切/粘贴按键
使用normal模式下的  v命令,进入visual模式,v+ j/k/h/l   进行文本选中
对于选中的文本进行如下按键:
(1.1)d   ------ 剪切操作
(1.2)y   -------复制操作
(1.3)p   -------粘贴操作
(1.4)^  --------选中当前行,光标位置到行首(或者使用键盘的HOME键)
(1.5)$  --------选中当前行,光标位置到行尾(或者使用键盘的END键)
批量注释
ctrl+v-->方向键选择-->shift+i-->添加#号-->Esc
缩进一组行
a.高亮显示块
b.按下 > 增加所有行的缩进。
c.按下 < 减少所有行的缩进。
可视模式
可视模式又分为三种: Visual(普通可视)、Visual Block(可视块)和Visual Line(可视行)。
使用normal模式下的 v命令,进入visual模式
Visual Line 按键V之后
Visual Block模式,按键Ctrl + V可以进入
vim选中字符复制/剪切/粘贴
纵向编辑
纵向编辑在批量修改代码的应用演示
将数列:
1	10.1.5.214 
2	10.1.5.212 
3	10.1.5.210
编辑成序列:
1 ping -c 4 10.5.5.214 >> result0 
2 ping -c 4 10.5.5.212 >> result0 
3 ping -c 4 10.5.5.210 >> result0
这是一个将 IP 数列修改成可执行的 ping 命令序列的过程。
第一步:修改         r 修改模式
将 IP 数列中第二段所有数字“1” 修改为“5”:
	1) 将游标定位第一个行 IP 地址第二段的“1”
	2) ctrl-v 进入纵向编辑模式
	3) G 移动游标到最后一行,可视块覆盖所要修改的列
	4) r 进入修改模式
	5) 5 输入数字“5”
	6) ESC 退出纵向编辑模式,同时所有被选中的数字都被改成了“5”,并回到命令模式
结果如下:
1	10.5.5.214 
2	10.5.5.212 
3	10.5.5.210
第二步:前添加 I 进入行首插入模式
在所有行之前添加“ping – c 4 ”:
	1) 将游标定位到第一行第一列
	2) ctrl-v 进入纵向编辑模式
	3) G 移动游标到最后一行第一列,可视块覆盖了第一列
	4) I 进入行首插入模式
	5) ping -c 4 输入所要求字符“ping – c 4 ”
	6) ESC 退出纵向编辑模式的同时所有选中的字符前都添加了“ping – c 4 ”,回到命令模式
结果如下:
1	ping -c 4 10.5.5.214 
2	ping -c 4 10.5.5.212 
3	ping -c 4 10.5.5.210
第三步:后添加 A 进入行尾插入模式
在所有行之后添加“>> result0”:
	1) 将游标定位到第一行最后一列
	2) ctrl-v 进入纵向编辑模式
	3) G 移动游标到最后一行最后一列,VISUAL BLOCK(纵向编辑模式)覆盖了最后一列
	4) A 进入行尾插入模式
	5) >> result 输入所要求字符“>> result0”
	6) ESC 退出纵向编辑模式的同时所有选中的字符后都添加了“ >> result0”,回到命令模式
结果如下:
1	ping -c 4 10.5.5.214 >> result0 
2	ping -c 4 10.5.5.212 >> result0 
3	ping -c 4 10.5.5.210 >> result0
以上三个步骤有一个共同特点,就是都纵向为编辑方向。以上由三行代码为例的方法同样也可以适用于更多的行。
技巧:Vim 的纵向编辑模式
history
[root@localhost ~]# history [选项] [历史命令保存文件]
选项:
	-c:    清空历史命令
	-w:    把缓存中的历史命令写入历史命令保存文件。如果不手工指定历史命令保存文 件,则放入默认历史命令保存文件~/.bash_history 中
[root@localhost ~]# vi /etc/profile
…省略部分输出…
HISTSIZE=1000
…省略部分输出…
说明
1.历史命令需要等当前用户注销之后,缓存中的命令才会写入~/.bash_history 文件。
2.如果我们需要把内存中的命令直接写入~/.bash_history 文件,而不等用户注销时再写入,就需要使用“-w”选项了。
3.退出记得执行命令logout
history -a 和history -w区别
Suppose you want to open another terminal window to access the full history list, including commands you typed in the first terminal window. The -a (all) option allows you to do this in the first terminal window before you open the second.  To use it, type the following:
history -a
The commands are written silently to the history file.
If you want to write all changes to the history list to the history file (if you deleted some old commands, for example), you can use the -w (write) option, like so:
history -w
设置linux系统history相关变量,命令时间、保存history条数,多session共享history
用户打开多个终端(产生多个session)情况下,共享history
由于bash的history文件默认是覆盖,如果存在多个终端,最后退出的会覆盖以前历史记录,改为追加形式
# vi ~/.bash_profile   //添加以下内容
shopt -s histappend
实时追加history,不必等用户退出才将内存中的history记录到文件
# vi ~/.bash_profile   //添加以下内容
PROMPT_COMMAND='history -a'
:wq
source .bash_profile
netstat
netstat -antup | grep 100
netstat 用于显示各种网络相关信息,grep 是文本搜索工具,通过|通道符可以筛选与100相关的信息,也就包含了pid
下面是netstat的可用选项
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p (--program)显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
列出所有↓

列出监听↓

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
scp
scp 文件 用户名@ip:路径  --上传
scp  用户名@ip:文件 本地路径 --下载
Scp -P 2333 /home/work/source.txt work@192.168.0.10:/home/work/#把本地文件上传到远程机器目录
scp work@192.168.0.10:/home/work/source.txt /home/work/ #把远程机器上文件下载到本地目录
scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/#把10机器的文件拷贝到11机器
scp -r /home/work/sourcedir work@192.168.0.10:/home/work/#拷贝文件夹,加-r参数
sort
-b 忽略每行前面开始出的空格字符。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-n 依照数值的大小排序,如果不加n,按照 ASCII字符排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-r 以相反的顺序来排序。
-t <分隔字符> 指定排序时所用的栏位分隔字符
sort高级
[FStart[.CStart]][Modifier][,[FEnd[.CEnd]][Modifier]]
F:field C:charactor
- 
这个语法格式可以被其中的逗号(“,”)分为两大部分,Start部分和End部分。 
- 
先给你灌输一个思想,那就是“如果不设定End部分,那么就认为End被设定为行尾”。这个概念很重要的,但往往你不会重视它。 
- 
Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点说说Start部分的FStart和C.Start。 - 
C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。之前例子中的-k 2和-k 3就是省略了C.Start的例子喽。 
- 
FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。 
 
- 
- 
同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。 
 --Linux Sort 按照某一列排序
 --linux sort 命令整理
#将CC列数字从大到小顺序排列:
[root@mail text]# sort -nrk 3 -t: sort.txt
eee:40:5.4
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
bbb:10:2.5
aaa:30:1.6
AAA:BB:CC
# -n是按照数字大小排序,-r是以相反顺序,-k是指定需要爱排序的栏位,-t指定栏位分隔符为冒号
只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序:
$ sort -t ‘ ‘ -k 1.2,1.2 -k 3,3nr duweixin.net.txt
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000
例3 多个-k的问题
不指定 FEnd 时,多个 -k 从后往前排序可以,从前往后不行
从后往前,多个 -k,数据符合预期
sort -t $'\t' -k 3n -k 1 sort.log
g   winxp   500     300 3G
c   Debian  600     200 8K
e   bsd     1000    600 4M
b   linux   1000    200 5K
c   win7    2000    100 7G
a   mac     2000    500 2K
f   SUSE    4000    300 6M
d   winxp   4000    300 3G
更换成从前往后第三列仍是从小到大排序,不生效
sort -t $'\t' -k 1 -k 3n sort.log
a   mac     2000    500 2K
b   linux   1000    200 5K
c   Debian  600     200 8K
c   win7    2000    100 7G
d   winxp   4000    300 3G
e   bsd     1000    600 4M
f   SUSE    4000    300 6M
g   winxp   500     300 3G
sort -t $'\t' -k 1 -k 3nr sort.log
a   mac     2000    500 2K
b   linux   1000    200 5K
c   Debian  600     200 8K
c   win7    2000    100 7G
d   winxp   4000    300 3G
e   bsd     1000    600 4M
f   SUSE    4000    300 6M
g   winxp   500     300 3G
当指定 FEend 后
sort -t $'\t' -k 1,1 -k 3nr sort.log
a   mac     2000    500 2K
b   linux   1000    200 5K
c   win7    2000    100 7G
c   Debian  600     200 8K
d   winxp   4000    300 3G
e   bsd     1000    600 4M
f   SUSE    4000    300 6M
g   winxp   500     300 3G
关于 -t $
sort -t $'\t' -k 3 sort.log
Sorting a file with tab separated values requires a tab character to be specified as the column delimiter. This illustration uses the shell's dollar-quote notation[4][5] to specify the tab as a C escape sequence.
--sort (Unix)
--Linux Sort 按照某一列排序
--linux sort 命令整理
curl wget
curl
选项:
| -i/--include | 输出时包括protocol头信息 | 
|---|---|
| -v/--verbose | 跟踪URL的连接信息 | 
| -X/--request | 指定什么命令 | 
| -H/--header | 自定义头信息传递给服务器 | 
| -d/--data | HTTP POST方式传送数据 | 
| -o/--output | 把输出写到该文件中 | 
| -O/--remote-name | 使用URL中默认的文件名保存文件到本地 | 
GET请求:
curl -i http://www.baidu.com 显示全部信息 
curl -v http://www.baidu.com 显示get请求全过程解析
curl -X GET 'http://127.0.0.1:8000/bp-iam-server/api/v1/org/detail?orgId=2' -H 'Authorization:xxx'
POST请求:
curl -i -X POST -H 'Content-type':'application/json' -d '{"accountId":"21"}' http://127.00.1:9094/bp-cmp-aliyunservice/aliyun/sync_aliyun/image
curl下载
选项-o将下载数据写入到指定名称的文件中,并使用--progress显示进度条:
curl http://man.linuxde.net/test.iso -o filename.iso --progress
######################################### 100.0%
使用选项-O将下载的数据写入到文件,不显示进度信息使用--silent选项
curl http://man.linuxde.net/text.iso --silent -O
wget
wget
- 使用wget下载单个文件
wget http://www.linuxde.net/testfile.zip
- 下载并以不同的文件名保存
wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080
- wget限速下载
wget --limit-rate=300k http://www.linuxde.net/testfile.zip
- 使用wget断点续传
wget -c http://www.linuxde.net/testfile.zip
- 使用wget后台下载
wget -b http://www.linuxde.net/testfile.zip
Continuing in background, pid 1840.
Output will be written to `wget-log'.
对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载,你可以使用以下命令来察看下载进度:
tail -f wget-log
shell
环境变量


横向比较
如果你的修改是打算对所有用户生效的,那么可以放入/etc/profile 环境变量配置文件;
如果你的修改只是给自己使用的,那么可以放入~/.bash_profile 或~/.bashrc 这两个配置文件中的任一个
纵向比较
[root@localhost ~]# su alice    //没有加载新用户的shell环境
[alice@localhost root]$ ll
ls: 无法打开目录.: 权限不够
[alice@localhost root]$ exit
exit
[root@localhost ~]# su - alice
su - alice 和su alice 的区别:
加-的那四个文件都执行 不加-的只执行两
执行顺序
/etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc //登录shell时会执行的
~/.bash_logout ~/.bash_history //登出时会执行的
安装软件
yum安装卸载
yum install #安装
yum remove #卸载
yum info nginx #查看yum的nginx信息
rpm安装卸载
rpm –qa  查看系统内已经安装的程序
rpm -qa |grep -i java
rpm –ivh #安装
rpm –Uvh #更新
rpm –e #卸载卸载无依赖关系的包
rpm -e --nodeps #强制卸载
rpm -ql nginx #yum 在线安装会将nginx的安装文件放在系统的不同位置,可以通过命令来查看安装路径
说明
源码包 安装他的所有文件(包括配置文件,库文件,资源文件等)都在同一个目录下,我们想卸载的时候,直接将这个文件删除就可以,不会有任何垃圾文件存在。
通过源码包编译安装的软件,通常都放在 /usr/local/包名 路径下。
java安装
网络管理
ip设置
centos7 ip设置
动态ip
查看 ip addr
当出现网络未联通的情况,我们使用 nmcli 命令查看一下网络设置:
nmcli connection show

该命令会返回 4 列数据. 分别是 NAME(联网代号), UUID(识别码), TYPE网卡类型, DEVICE(网卡名称).
查看指定网卡的信息:
nmcli connection show 联网代号
设置网络获取方式为自动获取 IP. 一般至此, 硬件连接成功的话都会连接到互联网上.
nmcli connection modify 联网代号 connection.autoconnect yes ipv4.method auto
静态ip
修改网卡配置文件:
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 # 不同的网卡名臣可能不同
已经配置为动态获取 ip 的配置:

修改以下两个地方。注意:ip dns 等信息请于 ISP 处获取。
IPADDR="[在这里输入你的静态 IP]"
GATEWAY="[输入你的默认网关]"
NETMASK="[输入你的网关]"
DNS1="[你的 DNS]"
DNS2="[你的 DNS]"

使网卡配置生效
nmcli connection up ens33
重启网络服务。后查看 ip 是否与分配的相同。
防火墙
centos7 防火墙设置
1、运行命令:
firewall-cmd --get-active-zones
运行完成之后,可以看到zone名称
[root@192 ~]# firewall-cmd --get-active-zones
public
  interfaces: ens33
2、执行如下命令命令添加6379端口:
firewall-cmd --zone=public --add-port=6379/tcp --permanent
4、查看端口号是否开启,运行命令:
firewall-cmd --query-port=6379/tcp
查看开放的端口:
firewall-cmd --list-ports
CentOS7开启端口(永久)
centos6 防火墙设置
基本命令
service iptables status
vim /etc/sysconfig/iptables 
service iptables restart
/etc/init.d/iptables status #查看所有添加进去的端口(包含启用的和未启用的端口)
常用添加端口规则
#允许对外请求的返回包
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#允许icmp包通过
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
#允许来自于lo接口的数据包,如果没有此规则,将不能通过127.0.0.1访问本地服务
iptables -A INPUT -i lo -j ACCEPT
#常用端口
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#如果要添加内网ip信任(接受其所有TCP请求)
#注:(**.**.**.**)为IP,下同
iptables -A INPUT -p tcp -s **.**.**.** -j ACCEPT
#要封停一个IP,使用下面这条命令
iptables -I INPUT -s **.**.**.** -j DROP
#要解封一个IP,使用下面这条命令
iptables -D INPUT -s **.**.**.** -j DROP
配置文件
计划任务
ssh linux登录
密钥对的生成
方案一:从mac上生成密钥对 然后上传到服务器
a) ssh-keygen -t rsa -C  'your email@domain.com'  -f my-key-file
-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱,一般也可以不写
-f 定义了输出的证书文件名,不需要写后缀,因为生成的证书包含了公钥和私钥两个文件,它会自动帮你加文件名。
b) 复制公钥至服务器
scp ~/.ssh/id_rsa.pub <用户名>@<ip地址>:/home/id_rsa.pub
如果修改了ssh默认连接端口的话,需要加上端口信息:
scp -P <端口号> ~/.ssh/id_rsa.pub <用户名>@<ip地址>:/home/id_rsa.pub
c) 把公钥追加到服务器ssh认证文件中:
cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
没有.ssh目录则创建目录并修改权限
chmod 600 authorized_keys #修改公钥为只有属主有读写权限(安全考虑)
chmod 700 ~/.ssh #修改.SSH目录为只有属主有读、写、执行权限(安全考虑)
这时候在本地终端中使用用户名和ip登录就不需要密码了:
ssh <用户名>@<ip>
ssh -p <端口号> <用户名>@<ip地址>
--Mac使用ssh公钥登录Linux
方案二:从服务器上生成密钥对 然后下载到电脑
a)  生成密钥对   远程服务器配置
ssh-keygen
cd .ssh
mv id_rsa.pub authorized_keys
chmod 600 authorized_keys #修改公钥为只有属主有读写权限(安全考虑)
chmod 700 ~/.ssh #修改.SSH目录为只有属主有读、写、执行权限(安全考虑)
b) 本地电脑上配制私钥
从服务器下载id_rsa或vim打开复制到本地
chmod 600 id_rsa
--给远程服务器设置SSH Key免密码登录

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号