Linux常用知识与命令

转自:http://blog.csdn.net/chenleixing/article/details/44569827

20个 Unix/Linux 命令技巧

删除一个大文件

我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入:

> /path/to/file.log
# 或使用如下格式
: > /path/to/file.log
# 然后删除它 
rm /path/to/file.log

如何记录终端输出?

试试使用script命令行工具来为你的终端输出创建输出记录。

script my.terminal.sessio

输入命令:

ls
date
sudo service foo stop

要退出(结束script会话),输入 exit 或者 logout 或者按下 control-D。

exit

要浏览输入:

more my.terminal.session
less my.terminal.session
cat my.terminal.session

还原被删除的 /tmp 文件夹

我在文章Linux和Unix shell,我犯了一些错误。我意外地删除了/tmp文件夹。要还原它,我需要这么做:

mkdir /tmp
chmod 1777 /tmp
chown root:root /tmp
ls -ld /tmp

锁定一个文件夹

为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹。因此我运行了:

chmod 0000 /downloads

root用户仍旧可以访问,而ls和cd命令则不工作。要还原它用:

chmod 0755 /downloads

在vim中用密码保护文件

害怕root用户或者其他人偷窥你的个人文件么?尝试在vim中用密码保护,输入:

vim +X filename

或者,在退出vim之前使用:X 命令来加密你的文件,vim会提示你输入一个密码。

清除屏幕上的乱码

只要输入:

reset

易读格式

传递-h或者-H(和其他选项)选项给GNU或者BSD工具来获取像ls、df、du等命令以易读的格式输出:

ls -lh
# 以易读的格式 (比如: 1K 234M 2G)
df -h
df -k
# 以字节、KB、MB 或 GB 输出:
free -b
free -k
free -m
free -g
# 以易读的格式输出 (比如 1K 234M 2G)
du -h
# 以易读的格式显示文件系统权限
stat -c %A /boot
# 比较易读的数字
sort -h -a file
# 在Linux上以易读的形式显示cpu信息
lscpu
lscpu -e
lscpu -e=cpu,node
# 以易读的形式显示每个文件的大小
tree -h
tree -h /boot

在Linux系统中显示已知的用户信息

只要输入:

## linux 版本 ##
lslogins
## BSD 版本 ##
logins

示例输出:

UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
0 root 0 0 22:37:59 root
1 bin 0 1 bin
2 daemon 0 1 daemon
3 adm 0 1 adm
4 lp 0 1 lp
5 sync 0 1 sync
6 shutdown 0 1 2014-Dec17 shutdown
7 halt 0 1 halt
8 mail 0 1 mail
10 uucp 0 1 uucp
11 operator 0 1 operator
12 games 0 1 games
13 gopher 0 1 gopher
14 ftp 0 1 FTP User
27 mysql 0 1 MySQL Server
38 ntp 0 1
48 apache 0 1 Apache
68 haldaemon 0 1 HAL daemon
69 vcsa 0 1 virtual console memory owner
72 tcpdump 0 1
74 sshd 0 1 Privilege-separated SSH
81 dbus 0 1 System message bus
89 postfix 0 1
99 nobody 0 1 Nobody
173 abrt 0 1
497 vnstat 0 1 vnStat user
498 nginx 0 1 nginx user
499 saslauth 0 1 "Saslauthd user"

我如何删除意外在当前文件夹下解压的文件?

我意外在/var/www/html/而不是/home/projects/www/current下解压了一个tarball。它搞乱了/var/www/html下的文件,你甚至不知道哪些是误解压出来的。最简单修复这个问题的方法是:

cd /var/www/html/
/bin/rm -f "$(tar ztf /path/to/file.tar.gz)"

对top命令的输出感到疑惑?

正经地说,你应该试一下用htop代替top:

sudo htop

想要再次运行相同的命令

只需要输入!!。比如:

/myhome/dir/script/name arg1 arg2
# 要再次运行相同的命令
!!
## 以root用户运行最后运行的命令
sudo !!

!!会运行最近使用的命令。要运行最近运行的以“foo”开头命令:

!foo
# 以root用户运行上一次以“service”开头的命令
sudo !service

!$用于运行带上最后一个参数的命令:

# 编辑 nginx.conf
sudo vi /etc/nginx/nginx.conf
# 测试 nginx.conf
/sbin/nginx -t -c /etc/nginx/nginx.conf
# 测试完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi再次编辑这个文件了
sudo vi !$

在终端上提醒你必须得走了

如果你需要提醒离开你的终端,输入下面的命令:

leave +hhmm

这里:

  • hhmm - 时间是以hhmm的形式,hh表示小时(12时制或者24小时制),mm代表分钟。所有的时间都转化成12时制,并且假定发生在接下来的12小时。

甜蜜的家

想要进入刚才进入的地方?运行:

cd -

需要快速地回到你的家目录?输入:

cd

变量CDPATH定义了目录的搜索路径:

export CDPATH=/var/www:/nas10

现在,不用输入cd */var/www/html/ 这样长了,我可以直接输入下面的命令进入 /var/www/html:

cd html

在less浏览时编辑文件

要编辑一个正在用less浏览的文件,可以按下v。你就可以用变量$EDITOR所指定的编辑器来编辑了:

less *.c
less foo.html
## 按下v键来编辑文件 ##
## 退出编辑器后,你可以继续用less浏览了 ##

列出你系统中的所有文件和目录

要看到你系统中的所有目录,运行:

find / -type d | less
# 列出$HOME 所有目录
find $HOME -type d -ls | less

要看到所有的文件,运行:

find / -type f | less
# 列出 $HOME 中所有的文件
find $HOME -type f -ls | less

用一条命令构造目录树

你可以用mkdir加上-p选项一次创建一颗目录树:

mkdir -p /jail/{dev,bin,sbin,etc,usr,lib,lib64}
ls -l /jail/

将文件复制到多个目录中

不必运行:

cp /path/to/file /usr/dir1
cp /path/to/file /var/dir2
cp /path/to/file /nas/dir3

运行下面的命令来复制文件到多个目录中:

echo /usr/dir1 /var/dir2 /nas/dir3 | xargs -n 1 cp -v /path/to/file

留下创建一个shell函数作为读者的练习。

快速找出两个目录的不同

diff命令会按行比较文件。但是它也可以比较两个目录:

ls -l /tmp/r
ls -l /tmp/s
# 使用 diff 比较两个文件夹
diff /tmp/r/ /tmp/s/

Fig. : Finding differences between folders

图片: 找出目录之间的不同

文本格式化

你可以用fmt命令重新格式化每个段落。在本例中,我要用分割超长的行并且填充短行:

fmt file.txt

你也可以分割长的行,但是不重新填充,也就是说分割长行,但是不填充短行:

fmt -s file.txt

可以看见输出并将其写入到一个文件中

如下使用tee命令在屏幕上看见输出并同样写入到日志文件my.log中:

mycoolapp arg1 arg2 input.file | tee my.log

tee可以保证你同时在屏幕上看到mycoolapp的输出并写入文件  my.log。

 

原文:http://www.cyberciti.biz/open-source/command-line-hacks/20-unix-command-line-tricks-part-i/
译文:LCTT  http://linux.cn/article-5099-1.html 译者: geekpi


【Telnet】著名的终端访问协议,传统的网络服务程序,如FTP、POP和Telnet,其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令。

【telnet命令】telnet host [port]

【SSH】Secure Shell 的缩写,是建立在传输层基础上的安全协议,它本身属于应用层,同时可以为应用层提供安全传输服务。

SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。透过 SSH 可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

SSH 之另一项优点为其传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的“通道”。

【ssh命令】Linux下,用ssh登录服务器,格式如下:
ssh -l 远程服务器用户名 远程服务器ip地址 -p 远程服务器ssh端口(默认22)

【SecureCRT使用SSH2协议登录示例】:在windows下,使用SecureCRT 6.2可方便Telnet到远端服务器,它支持SSH1、SSH2、Telnet/SSL等安全登录访问协议,在第一次使用SSH2协议向服务器建立连接 时,,SecureCRT首先会检查Server的公钥是否在本地数据库存放,如果没有,则不会把你的用户名、口令传输过去,它会将服务器端的公钥取回来 (可以直接从Server取,也可以从第三方获取),并提示:

The host key database does not contain an entry for the

hostname 172.16.200.244, which resolved to 172.16.200.244,

port 22. If you have received this message more

than once for 172.16.200.244, this may mean that 172.16.200.244

is an “alias” which resolves to different hosts.

It is recommended you verify your host key before accepting.

Server’s host key fingerprint (MD5 hash):

24:0f:36:5e:43:ad:f5:b8:1b:ae:ac:f7:9f:c2:c0:4c

当 你选择确认保存,则SecureCRT会把Server的公钥保存到本地公钥数据库,然后会重新让你输入用户名和密码,再次安全地登录服务器,因为这一次 会使用Server的公钥来加密用户名和口令。之后的登录和交互就会一直使用本地数据库保存的Server的公钥来加密传输。

【scp命令】

SCP(Secure Copy)——linux文件传送命令

scp 命令是 SSH 中最方便有用的命令了,试想,在两台服务器之间直接传送文件,仅仅用 scp 一个命令就完全解决了。 你可以在一台服务器上以 root 身份运行 #scp servername:/home/ftp/pub/file1 . 这样就把另一台服务器上的文件 /home/ftp/pub/file1 直接传到本机器的当前目录下,当然你也可以用 #scp /tmp/file2 servername:/boot 把本机上的文件 /tmp/file2 送到另一台机器的 /boot 目录下。而且整个传送过程仍然是用 SSH 加密的。

scp 就是 secure copy, 是用来进行远程文件拷贝的 . 数据传输使用 ssh1, 并且和 ssh1 使用相同的认证方式 , 提供相同的安全保证。与 rcp 不同的是 ,scp 会要求你输入密码,如果需要的话。

最简单的应用如下 :

scp 本地用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2

[ 本地用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 .

可能有用的几个参数 :

-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .

-C 使能压缩选项 .

-P 选择端口 . 注意 -p 已经被 rcp 使用 .

-4 强行使用 IPV4 地址 .

-6 强行使用 IPV6 地址 .

-r Recursively copy entire directories.

如——

copy 本地的档案到远程的机器上

scp /etc/lilo.conf my@www.upsdn.NET:/home/my

会将本地的 /etc/lilo.conf 这个档案 copy 到 www.upsdn.net,使用者my 的家目录下。

=====================================================

例如:

copy 本地的档案到远程的机器上

scp /etc/lilo.conf k@net67.ee.oit.edu.tw:/home/k

会将本地的 /etc/lilo.conf 这个档案 copy 到 net67.ee.oit.edu.tw,使用者 k 的家目录下。

copy远程机器上的档案到本地来

scp k@net67.ee.oit.edu.tw:/etc/lilo.conf /etc

会将 net67.ee.oitdu.tw 中 /etc/lilo.conf 档案 copy 到本地的 /etc 目录下。

保持从来源 host 档案的属性

scp –p k@net67.ee.tw:/etc/lilo.conf /etc

在此必须注意使用者的权限是否可读取远程上的档案,若想知道更多关于 scp 的使用方法,可去看看 scp 的使用手册。

ssh-keygen

产生公开钥 (pulib key) 和私人钥 (private key),以保障 ssh 联机的安性, 当 ssh 连 shd 服务器,会交换公开钥上,系统会检查 /etc/ssh_know_hosts 内储存的 key,如果找到客户端就用这个 key 产生一个随机产生的session key 传给服务器,两端都用这个 key 来继续完成 ssh 剩下来的阶段。

它会产生 identity.pub、identity 两个档案,私人钥存放于identity,公开钥 存放于 identity.pub 中,接下来使用 scp 将 identity.pub copy 到远程机器的家目录下.ssh下的authorized_keys。 .ssh/authorized_keys(这个 authorized_keys 档案相当于协议的 rhosts 档案), 之后使用者能够不用密码去登入。RSA的认证绝对是比 rhosts 认证更来的安全可靠。

执行:

scp identity.pub k@linux1.ee.oit.edu.tw:.ssh/authorized_keys

若在使用 ssh-keygen 产生钥匙对时没有输入密码,则如上所示不需输入密码即可从 net67.ee.oit.edu.tw 去登入 linux1.ee.oit.edu.tw。在此,这里输入的密码可以跟帐号的密码不同,也可以不输入密码。

【FTP】

文件传输协议(英文:File Transfer Protocol,简称为FTP)是用于在网络上进行文件传输的一套标准协议。它属于网络协议组的应用层。

【ftp命令】ftp host

【SFTP】

SSH File Transfer Protocol ,有时也被称作 Secure File Transfer Protocol 或SFTP。

它和SCP的区别是它允许用户中断传输,SCP拷贝速度稍快一些。

具体解释可参见http://en.wikipedia.org/wiki/SSH_file_transfer_protocol

【sftp命令】另外,小写字母sftp也是linux下的一个命令,遵从SFTP,示例:

sftp -oPort=22 Oracle@162.10.0.6


转载于: http://www.binghe.org/2010/03/telnet-ftp-ssh-sftp-scp/


转自:http://blog.csdn.net/chenleixing/article/details/46659959

Linux启动与禁止SSH用户及IP的登录

下面就针对SSH方面讨论一下,如果有人特别关注Linux环境的安全性,第一就从login方面来进行讨论

1:linux启动或禁止SSH root用户的登录

2:Linux限制SSH用户

其实这些东西就是修改一个系统的配置文件

 

  1. [root@rhsde ~]# vi /etc/ssh/sshd_config  

我们可以查看

  1. #PermitRootLogin yes  

把前面的#号去掉,yes修改为no即可

yes 就是可以使用SSH方式的root登录

no就是禁止使用SSH方式的root登录

 

  1. login as: root  
  2. root@192.168.220.165's password:  
  3. Access denied  
  4. root@192.168.220.165's password:  

 

另外如果需要限制SSH方式的用户登录 修改如下参数

 

  1. AllowUsers arcsde  

arcsde是我操作系统的用户,如果没有用户可以手动添加AllowUsers

这样的话,只能arcsde登录了

其他用户登录不了了(Oracle)

 

  1. login as: oracle  
  2. oracle@192.168.220.165's password:  
  3. Access denied  
  4. oracle@192.168.220.165's password:  

以上修改完配置文件,必须重新启动SSH服务才能生效

  1. [root@rhsde ~]# /etc/init.d/sshd restart  
  2. Stopping sshd:                                             [  OK  ]  
  3. Starting sshd:                                             [  OK  ]  

 


可能会有人会问到如果我设置了,每次都是Access denied,有没有一些可以进行信息的提示,这肯定可以啊

我们可以修改如下文件

 

  1. [root@rhsde ~]# vi /etc/issue.net  

然后添加如下信息

  1. ###############################################################  
  2. #                    Welcome to redhatserver                                    #  
  3. #          All connections are monitored and recorded                            #  
  4. #  Disconnect IMMEDIATELY if you are not an authorized user!                    #  
  5. #                       Please tel 400-819-2881  
  6. ###############################################################  

我们仍然需要修改sshd_config里面的参数

  1. Banner /etc/issue.net  

后面对应的就是相关文件的路径,重启服务即可

然后我们测试一下

 

  1. login as: root  
  2. Red Hat Enterprise Linux Server release 5.5 (Tikanga)  
  3. Kernel \r on an \m  
  4. ###############################################################  
  5. #                    Welcome to redhatserver                                    #  
  6. #          All connections are monitored and recorded  
  7.  
  8.  #  
  9. #  Disconnect IMMEDIATELY if you are not an authorized user!                    #  
  10. #Please tel 400-819-2881  
  11. ###############################################################  
  12. root@192.168.220.165's password:  

当我们输入root用户,系统就自动提示了。另外也可以在输入密码的时候提示,如果是这样的话,我们修改如下文件即可

  1. vi /etc/motd  


 

启动或禁止用户IP登录

除了可以禁止某个用户登录,我们还可以针对固定的IP进行禁止登录,这里面其实就是修改了配置文件

查看 /etc/hosts.allow配置文件,设置允许登录的IP

 

  1. [root@rhsde ~]# more /etc/hosts.allow  
  2. #  
  3. # hosts.allow   This file describes the names of the hosts which are  
  4. #               allowed to use the local INET services, as decided  
  5. #               by the '/usr/sbin/tcpd' server.  
  6. #  
  7. sshd:192.168.220.164:allow  


 

查看/etc/hosts.deny文件,设置sshd:ALL

 

  1. [root@rhsde ~]# more /etc/hosts.deny  
  2. #  
  3. # hosts.deny    This file describes the names of the hosts which are  
  4. #               *not* allowed to use the local INET services, as decided  
  5. #               by the '/usr/sbin/tcpd' server.  
  6. #  
  7. # The portmap line is redundant, but it is left to remind you that  
  8. # the new secure portmap uses hosts.deny and hosts.allow.  In particular  
  9. # you should know that NFS uses portmap!  
  10. sshd:ALL  

也就是说,我们禁止所有IP,但是允许相关IP登录。





另外,如果对sshd_config文件中的配置参数感兴趣可以参考:http://doc.licess.org/openssh/sshd_config.html

 

  1. SSHD_CONFIG(5)            OpenBSD Programmer's Manual           SSHD_CONFIG(5)  
  2.   
  3. 名称  
  4.      sshd_config - OpenSSH SSH 服务器守护进程配置文件  
  5.   
  6. 大纲  
  7.      /etc/ssh/sshd_config  
  8.   
  9. 描述  
  10.      sshd(8) 默认从 /etc/ssh/sshd_config 文件(或通过 -f 命令行选项指定的文件)读取配置信息。  
  11.      配置文件是由"指令 值"对组成的,每行一个。空行和以'#'开头的行都将被忽略。  
  12.      如果值中含有空白符或者其他特殊符号,那么可以通过在两边加上双引号(")进行界定。  
  13.      [注意]值是大小写敏感的,但指令是大小写无关的。  
  14.   
  15.      当前所有可以使用的配置指令如下:  
  16.   
  17.      AcceptEnv  
  18.              指定客户端发送的哪些环境变量将会被传递到会话环境中。[注意]只有SSH-2协议支持环境变量的传递。  
  19.              细节可以参考 ssh_config(5) 中的 SendEnv 配置指令。  
  20.              指令的值是空格分隔的变量名列表(其中可以使用'*''?'作为通配符)。也可以使用多个 AcceptEnv 达到同样的目的。  
  21.              需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用。  
  22.              默认是不传递任何环境变量。  
  23.   
  24.      AddressFamily  
  25.              指定 sshd(8) 应当使用哪种地址族。取值范围是:"any"(默认)、"inet"(仅IPv4)、"inet6"(仅IPv6)。  
  26.   
  27.      AllowGroups  
  28.              这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*""?"通配符)。默认允许所有组登录。  
  29.              如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。  
  30.              这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。  
  31.              这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:  
  32.              DenyUsers, AllowUsers, DenyGroups, AllowGroups  
  33.   
  34.      AllowTcpForwarding  
  35.              是否允许TCP转发,默认值为"yes"。  
  36.              禁止TCP转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器。  
  37.   
  38.      AllowUsers  
  39.              这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*""?"通配符)。默认允许所有用户登录。  
  40.              如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。  
  41.              如果指定了 USER@HOST 模式的用户,那么 USER 和 HOST 将同时被检查。  
  42.              这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:  
  43.              DenyUsers, AllowUsers, DenyGroups, AllowGroups  
  44.   
  45.      AuthorizedKeysFile  
  46.              存放该用户可以用来登录的 RSA/DSA 公钥。  
  47.              该指令中可以使用下列根据连接时的实际情况进行展开的符号:  
  48.              %% 表示'%'、%h 表示用户的主目录、%u 表示该用户的用户名。  
  49.              经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。  
  50.              默认值是".ssh/authorized_keys"。  
  51.   
  52.      Banner  
  53.              将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。  
  54.              这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。  
  55.   
  56.      ChallengeResponseAuthentication  
  57.              是否允许质疑-应答(challenge-response)认证。默认值是"yes"。  
  58.              所有 login.conf(5) 中允许的认证方式都被支持。  
  59.   
  60.      Ciphers  
  61.              指定SSH-2允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下:  
  62.              "aes128-cbc""aes192-cbc""aes256-cbc""aes128-ctr""aes192-ctr""aes256-ctr",  
  63.              "3des-cbc""arcfour128""arcfour256""arcfour""blowfish-cbc""cast128-cbc"  
  64.              默认值是可以使用上述所有算法。  
  65.   
  66.      ClientAliveCountMax  
  67.              sshd(8) 在未收到任何客户端回应前最多允许发送多少个"alive"消息。默认值是 3 。  
  68.              到达这个上限后,sshd(8) 将强制断开连接、关闭会话。  
  69.              需要注意的是,"alive"消息与 TCPKeepAlive 有很大差异。  
  70.              "alive"消息是通过加密连接发送的,因此不会被欺骗;而 TCPKeepAlive 却是可以被欺骗的。  
  71.              如果 ClientAliveInterval 被设为 15 并且将 ClientAliveCountMax 保持为默认值,  
  72.              那么无应答的客户端大约会在45秒后被强制断开。这个指令仅可以用于SSH-2协议。  
  73.   
  74.      ClientAliveInterval  
  75.              设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,  
  76.              sshd(8) 将通过安全通道向客户端发送一个"alive"消息,并等候应答。  
  77.              默认值 0 表示不发送"alive"消息。这个选项仅对SSH-2有效。  
  78.   
  79.      Compression  
  80.              是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密。  
  81.              可用值:"yes""delayed"(默认), "no"。  
  82.   
  83.      DenyGroups  
  84.              这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*""?"通配符)。默认允许所有组登录。  
  85.              如果使用了这个指令,那么这些组中的成员将被拒绝登录。  
  86.              这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。  
  87.              这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:  
  88.              DenyUsers, AllowUsers, DenyGroups, AllowGroups  
  89.   
  90.      DenyUsers  
  91.              这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*""?"通配符)。默认允许所有用户登录。  
  92.              如果使用了这个指令,那么这些用户将被拒绝登录。  
  93.              如果指定了 USER@HOST 模式的用户,那么 USER 和 HOST 将同时被检查。  
  94.              这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:  
  95.              DenyUsers, AllowUsers, DenyGroups, AllowGroups  
  96.   
  97.      ForceCommand  
  98.              强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录shell执行(shell -c)。  
  99.              这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。  
  100.              这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的。  
  101.   
  102.      GatewayPorts  
  103.              是否允许远程主机连接本地的转发端口。默认值是"no"。  
  104.              sshd(8) 默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。  
  105.              GatewayPorts 指令可以让 sshd 将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。  
  106.              "no"表示仅允许本地连接,"yes"表示强制将远程端口转发绑定到统配地址(wildcard address),  
  107.              "clientspecified"表示允许客户端选择将远程端口转发绑定到哪个地址。  
  108.   
  109.      GSSAPIAuthentication  
  110.              是否允许使用基于 GSSAPI 的用户认证。默认值为"no"。仅用于SSH-2。  
  111.   
  112.      GSSAPICleanupCredentials  
  113.              是否在用户退出登录后自动销毁用户凭证缓存。默认值是"yes"。仅用于SSH-2。  
  114.   
  115.      HostbasedAuthentication  
  116.              这个指令与 RhostsRSAAuthentication 类似,但是仅可以用于SSH-2。推荐使用默认值"no"。  
  117.              推荐使用默认值"no"禁止这种不安全的认证方式。  
  118.   
  119.      HostbasedUsesNameFromPacketOnly  
  120.              在开启 HostbasedAuthentication 的情况下,  
  121.              指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询。  
  122.              "yes"表示 sshd(8) 信任客户端提供的主机名而不进行反向查询。默认值是"no"。  
  123.   
  124.      HostKey  
  125.              主机私钥文件的位置。如果权限不对,sshd(8) 可能会拒绝启动。  
  126.              SSH-1默认是 /etc/ssh/ssh_host_key 。  
  127.              SSH-2默认是 /etc/ssh/ssh_host_rsa_key 和 /etc/ssh/ssh_host_dsa_key 。  
  128.              一台主机可以拥有多个不同的私钥。"rsa1"仅用于SSH-1,"dsa""rsa"仅用于SSH-2。  
  129.   
  130.      IgnoreRhosts  
  131.              是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略 .rhosts 和 .shosts 文件。  
  132.              不过 /etc/hosts.equiv 和 /etc/shosts.equiv 仍将被使用。推荐设为默认值"yes"。  
  133.   
  134.      IgnoreUserKnownHosts  
  135.              是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件。  
  136.              默认值是"no"。为了提高安全性,可以设为"yes"。  
  137.   
  138.      KerberosAuthentication  
  139.              是否要求用户为 PasswordAuthentication 提供的密码必须通过 Kerberos KDC 认证,也就是是否使用Kerberos认证。  
  140.              要使用Kerberos认证,服务器需要一个可以校验 KDC identity 的 Kerberos servtab 。默认值是"no"。  
  141.   
  142.      KerberosGetAFSToken  
  143.              如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,  
  144.              将会在访问用户的家目录前尝试获取一个 AFS token 。默认为"no"。  
  145.   
  146.      KerberosOrLocalPasswd  
  147.              如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)。  
  148.              默认值为"yes"。  
  149.   
  150.      KerberosTicketCleanup  
  151.              是否在用户退出登录后自动销毁用户的 ticket 。默认值是"yes"。  
  152.   
  153.      KeyRegenerationInterval  
  154.              在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。  
  155.              这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。  
  156.              设为 0 表示永不重新生成,默认为 3600(秒)。  
  157.   
  158.      ListenAddress  
  159.              指定 sshd(8) 监听的网络地址,默认监听所有地址。可以使用下面的格式:  
  160.   
  161.                    ListenAddress host|IPv4_addr|IPv6_addr  
  162.                    ListenAddress host|IPv4_addr:port  
  163.                    ListenAddress [host|IPv6_addr]:port  
  164.   
  165.              如果未指定 port ,那么将使用 Port 指令的值。  
  166.              可以使用多个 ListenAddress 指令监听多个地址。  
  167.   
  168.      LoginGraceTime  
  169.              限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒。  
  170.   
  171.      LogLevel  
  172.              指定 sshd(8) 的日志等级(详细程度)。可用值如下:  
  173.              QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3  
  174.              DEBUG 与 DEBUG1 等价;DEBUG2 和 DEBUG3 则分别指定了更详细、更罗嗦的日志输出。  
  175.              比 DEBUG 更详细的日志可能会泄漏用户的敏感信息,因此反对使用。  
  176.   
  177.      MACs  
  178.              指定允许在SSH-2中使用哪些消息摘要算法来进行数据校验。  
  179.              可以使用逗号分隔的列表来指定允许使用多个算法。默认值(包含所有可以使用的算法)是:  
  180.              hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96  
  181.   
  182.      Match  
  183.              引入一个条件块。块的结尾标志是另一个 Match 指令或者文件结尾。  
  184.              如果 Match 行上指定的条件都满足,那么随后的指令将覆盖全局配置中的指令。  
  185.              Match 的值是一个或多个"条件-模式"对。可用的"条件"是:User, Group, Host, Address 。  
  186.              只有下列指令可以在 Match 块中使用:AllowTcpForwarding, Banner,  
  187.              ForceCommand, GatewayPorts, GSSApiAuthentication,  
  188.              KbdInteractiveAuthentication, KerberosAuthentication,  
  189.              PasswordAuthentication, PermitOpen, PermitRootLogin,  
  190.              RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,  
  191.              X11Forwarding, X11UseLocalHost  
  192.   
  193.      MaxAuthTries  
  194.              指定每个连接最大允许的认证次数。默认值是 6 。  
  195.              如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。  
  196.   
  197.      MaxStartups  
  198.              最大允许保持多少个未认证的连接。默认值是 10 。  
  199.              到达限制后,将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制。  
  200.   
  201.      PasswordAuthentication  
  202.              是否允许使用基于密码的认证。默认为"yes"。  
  203.   
  204.      PermitEmptyPasswords  
  205.              是否允许密码为空的用户远程登录。默认为"no"。  
  206.   
  207.      PermitOpen  
  208.              指定TCP端口转发允许的目的地,可以使用空格分隔多个转发目标。默认允许所有转发请求。  
  209.              合法的指令格式如下:  
  210.                    PermitOpen host:port  
  211.                    PermitOpen IPv4_addr:port  
  212.                    PermitOpen [IPv6_addr]:port  
  213.              "any"可以用于移除所有限制并允许一切转发请求。  
  214.   
  215.      PermitRootLogin  
  216.              是否允许 root 登录。可用值如下:  
  217.              "yes"(默认) 表示允许。"no"表示禁止。  
  218.              "without-password"表示禁止使用密码认证登录。  
  219.              "forced-commands-only"表示只有在指定了 command 选项的情况下才允许使用公钥认证登录。  
  220.                                    同时其它认证方法全部被禁止。这个值常用于做远程备份之类的事情。  
  221.   
  222.      PermitTunnel  
  223.              是否允许 tun(4) 设备转发。可用值如下:  
  224.              "yes""point-to-point"(layer 3), "ethernet"(layer 2), "no"(默认)。  
  225.              "yes"同时蕴含着"point-to-point""ethernet"。  
  226.   
  227.      PermitUserEnvironment  
  228.              指定是否允许 sshd(8) 处理 ~/.ssh/environment 以及 ~/.ssh/authorized_keys 中的 environment= 选项。  
  229.              默认值是"no"。如果设为"yes"可能会导致用户有机会使用某些机制(比如 LD_PRELOAD)绕过访问控制,造成安全漏洞。  
  230.   
  231.      PidFile  
  232.              指定在哪个文件中存放SSH守护进程的进程号,默认为 /var/run/sshd.pid 文件。  
  233.   
  234.      Port  
  235.              指定 sshd(8) 守护进程监听的端口号,默认为 22 。可以使用多条指令监听多个端口。  
  236.              默认将在本机的所有网络接口上监听,但是可以通过 ListenAddress 指定只在某个特定的接口上监听。  
  237.   
  238.      PrintLastLog  
  239.              指定 sshd(8) 是否在每一次交互式登录时打印最后一位用户的登录时间。默认值是"yes"。  
  240.   
  241.      PrintMotd  
  242.              指定 sshd(8) 是否在每一次交互式登录时打印 /etc/motd 文件的内容。默认值是"yes"。  
  243.   
  244.      Protocol  
  245.              指定 sshd(8) 支持的SSH协议的版本号。  
  246.              '1''2'表示仅仅支持SSH-1和SSH-2协议。"2,1"表示同时支持SSH-1和SSH-2协议。  
  247.   
  248.      PubkeyAuthentication  
  249.              是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"。  
  250.   
  251.      RhostsRSAAuthentication  
  252.              是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)。仅用于SSH-1。  
  253.              这是通过在RSA认证成功后再检查 ~/.rhosts 或 /etc/hosts.equiv 进行认证的。  
  254.              出于安全考虑,建议使用默认值"no"。  
  255.   
  256.      RSAAuthentication  
  257.              是否允许使用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。  
  258.   
  259.      ServerKeyBits  
  260.              指定临时服务器密钥的长度。仅用于SSH-1。默认值是 768(位)。最小值是 512 。  
  261.   
  262.      StrictModes  
  263.              指定是否要求 sshd(8) 在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查。  
  264.              强烈建议使用默认值"yes"来预防可能出现的低级错误。  
  265.   
  266.      Subsystem  
  267.              配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。  
  268.              值是一个子系统的名字和对应的命令行(含选项和参数)。比如"sft /bin/sftp-server"。  
  269.   
  270.      SyslogFacility  
  271.              指定 sshd(8) 将日志消息通过哪个日志子系统(facility)发送。有效值是:  
  272.              DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7  
  273.   
  274.      TCPKeepAlive  
  275.              指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"。  
  276.              这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。  
  277.              可以设为"no"关闭这个特性。  
  278.   
  279.      UseDNS  
  280.              指定 sshd(8) 是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP地址真实对应。默认值为"yes"。  
  281.   
  282.      UseLogin  
  283.              是否在交互式会话的登录过程中使用 login(1) 。默认值是"no"。  
  284.              如果开启此指令,那么 X11Forwarding 将会被禁止,因为 login(1) 不知道如何处理 xauth(1) cookies 。  
  285.              需要注意的是,login(1) 是禁止用于远程执行命令的。  
  286.              如果指定了 UsePrivilegeSeparation ,那么它将在认证完成后被禁用。  
  287.   
  288.      UsePrivilegeSeparation  
  289.              是否让 sshd(8) 通过创建非特权子进程处理接入请求的方法来进行权限分离。默认值是"yes"。  
  290.              认证成功后,将以该认证用户的身份创建另一个子进程。  
  291.              这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。  
  292.   
  293.      X11DisplayOffset  
  294.              指定 sshd(8) X11 转发的第一个可用的显示区(display)数字。默认值是 10 。  
  295.              这个可以用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆。  
  296.   
  297.      X11Forwarding  
  298.              是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。  
  299.              如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。  
  300.              那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。  
  301.              需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。  
  302.              如果启用了 UseLogin ,那么X11转发将被自动禁止。  
  303.   
  304.      X11UseLocalhost  
  305.              sshd(8) 是否应当将X11转发服务器绑定到本地loopback地址。默认值是"yes"。  
  306.              sshd 默认将转发服务器绑定到本地loopback地址并将 DISPLAY 环境变量的主机名部分设为"localhost"。  
  307.              这可以防止远程主机连接到 proxy display 。不过某些老旧的X11客户端不能在此配置下正常工作。  
  308.              为了兼容这些老旧的X11客户端,你可以设为"no"。  
  309.   
  310.      XAuthLocation  
  311.              指定 xauth(1) 程序的绝对路径。默认值是 /usr/X11R6/bin/xauth  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值