January 2014 Blog Posts

疯狂的春运火车票抢票,不得不祭出火车票抢票软件

MitchellChu 2014-01-28 其他技术 万象漫谈

2014年的春节如期而至,各行各业辛苦工作的人终于可以卸下沉重的工作,期待着新年之际,能够回家和已经离别将近一年的家人短暂团聚,为来年的工作充电打气,我和媳妇也是这万千春节迁徙大军中的一员。回家,是多么一个温馨的词,但从等待开售到开售,再到检漏,连续多日不间断的在12306上面辛勤的耕耘,期待收获一张回家的车票。然而,现实总是离理想有点遥远,最后,终于明白,一份耕耘,不一定有一张车票。

刚开始,还期待连续多日来的出票能够给我们留那么一张两张,但随着预售的票已经开出2月6号之后,我明白这种等待已经无法等待到任何一张票了。曾经几次,甚至准备和媳妇就在外地过年,但每每听到媳妇如此坚持回家的念头,看到媳妇如此坚持的在12306上苦苦刷票,,,这种种的种种,让我决定,要去抢食!决定之后,就开拔——搞个的工具。

网上已经有很多抢票的软件,但是各种用下来,明显感觉到,这中所谓的软件,大部分都是鸡肋,也许他们根本的目的不是帮我们抢到票,而是推销他们的各种产品(如:浏览器,广告)。好吧,我承认我用过的浏览器插件很多。。。但是我没有抢到票。写这种软件并不是很难,自己却为了图省事,一而再再二三的在各种软件中选择,眼看着就他妈的过年了。痛定思痛,自己写一个!

操刀吧!开始的想法是,由于现在票源紧张,不一定买得到直达的车次,那么,要求低点,买同一趟车的各个段的票,回头不下车也能一路折腾到家里了。在这个思想的指导下,经过XXX时间的艰苦奋斗,终于,当当当当。。。

火车票抢票软件

终于,终于,媳妇不用昼夜不分的惦记着回家的车票了,不用时刻不停地在12306那个搓网站上不断的刷新,刷新,再刷新!更重要的是,这回回家的票可能有了新的希望。软件说来,功能是简单的,功能也不是强大的,目的却是明确的——买到票!功能如下:

1. 用户自动登录

2. 自动根据左侧设定的规则,生成可用的车次

3. 根据目标车次里面的内容筛选需要预定的车票信息

4. 自动查找可用的票源

5. 找到匹配的票源信息,快速提示并自动提交订单

当然,在后面还有很多的细节处理,为了快速实现功能,都被我毛糙的处理一带而过。好吧,看看效果吧,在这个只能检漏的日子里,霸王硬上弓一下。

测试过后发现结果还是不错的,27日的票买了一张坐票(BTW:这个票忘掉退票了,算免费给回家的某位无座的朋友的新年礼物了~),当然,这个票单张,媳妇不满意。继续刷,在经过一天的检漏,终于成功获得29同车次同车厢的票两枚,终于可以回家了,不仅有票,还能有直达(没刷到两张卧铺,遗憾...),虽然时间上到家有点晚。

后记:

1. 12306的自动5秒刷新机制就是个坑爹的设计,只能说:非常成功挡住了大部分正常购票者。

2. 个人牢骚:往年都会加开临时列车往老家方向过,今年也坑爹,取消了老家那边的所有临客,更奇葩的是,你妹,年后你的临客又出现了!!!

3. 12306现在不知道有多少人是按下面这个路线走的,至少我指望硬卧?刷到无座,保留,再刷,硬座,退无座,再刷,硬卧,退硬座。

 

Windows下Python,setuptools,pip,virtualenv的安装

MitchellChu 2014-01-16 其他技术 编程语言

Windows 2003平台,安装,Python3.3,setuptools,pip,virtualenv。

安装Python2.7.4(当前版本是2.7.6),安装路径:C:\Python27

安装Python3.3.2,安装路径:C:\Python33

安装完毕之后,请勿将python的目录添加到系统的环境变量中。

优先安装后面的pip和virtualenv可以通过easy_install来安装。

setuptools可以在 http://pypi.python.org/pypi/setuptools 找到Windows的安装方式,现在官网建议使用的是下载ez_setup.py来安装。

下载完ez_setup.py,CMD下路由到下载目录,使用:

C:\Python27\Scripts\python.exe ez_setup.py

下载完毕最新版本之后,系统会自动安装setuptools,安装完毕之后,会在scripts下会有一个可执行文件。

当安装完毕setuptools之后,剩下的就比较简单了。

# 安装pip
>C:\Python27\Scripts\easy_install.exe pip

#安装完成pip之后,接着安装virtualenv
>C:\Python27\Scripts\easy_install.exe virtualenv==1.10.1

安装完毕之后,同样在Scripts下面可以看到和virtualenv.exe文件。需要注意,当前irtualenv的版本是1.11,安装的时候如果不设定==1.10.1,默认会安装最新版本,而1.11版本的virtualenv是有问题的,安装1.11后,在创建环境的时候会失败,报错: setuptools pip failed with error code 1.这个问题是1.11的本身的问题,用1.10.1版本,没有这个问题,所以我们安装的时候需要明确版本1.10.1。

安装完毕之后,就可以创建虚拟环境了:

#创建虚拟环境:先在cmd中路由到需要创建虚拟环境的目录下,创建的虚拟环境是在该目录下的一个文件夹
>c:\python27\Scripts\virtualenv.exe vProject

创建之后,我们可以检查下vProject下是否有文件,同时确认下vProject\Scripts\下是否有activate.bat和deactivate.bat两个文件。至此,虚拟环境就创建好了。运行虚拟环境只需要在CMD下运行activate.bat,并在当前窗口中进行操作——所有的操作此时都已经在虚拟环境中进行的。

Linux下的用户管理及SSH禁止用户登录和IP连接的配置

MitchellChu 2014-01-14 Unix & Linux

linux学习     MitchellChu从零开始学,用户管理会在各种配置中显示其强大的作用。当我们在不太会配置Linux的时候,配置了一个运行在不同用户下的网站,另一个帐户下的数据库,当我们网站被黑之后,至少让别人在黑数据库的过程中没有那么顺当——增加被攻击的复杂度就是在增加自己站点的安全性。好吧,不得不说,我是这个思路的。那毫不犹豫的就开始了的操作。

在Linux中,用户的管理分为组和用户两种。这个Windows下也是这个样子,组是一类用户的统称。组和用户的关系是:多对多的关系。即用户可以存在于多个组中,组中也可以有多个用户。组的权限会被赋予组中的用户,用户可以从多个组中继承权限。

对于组的管理命令有:

#组管理命令
groupadd #添加组

groupdel #删除用户组

groupmod #修改用户组

groups #显示当前用户所属的用户组

grpck #检查用户组及密码文件的完整性(etc/group以及/etc/gshadow文件)

grpconv #通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;

grpunconv #通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。

对于用户的管理命令有:

#用户管理相关的命令
useradd #添加用户

adduser #添加用户

passwd #为用户设置密码

usermod #修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等

pwcov #同步用户从/etc/passwd 到/etc/shadow

pwck #pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;

pwunconv #是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;

finger #查看用户信息工具

id #查看用户的UID、GID及所归属的用户组

chfn #更改用户信息工具

su #用户切换工具

sudo #sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现

visudo #visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的

sudoedit #和sudo 功能差不多

这些命令可以完成绝大部分的用户和组的管理操作,下面的代码中,就完成了添加组和用户的功能,如果还有不能达到的地方——使用强大的文本编辑吧,各种用户和组的文件等待你去发掘(后面就有要修改文件的case)。

#如果你不想使用现有用户组,那么你可以新建一个用户组
groupadd GROUPNAME #GROUPNAME是新用户组的名称。这里使用的GID是默认的

#添加了用户组之后,我们可以将用户添加到用户组中。
useradd username -G GROUPNAME #添加用户username到GROUPNAME中,注意没有添加密码

#修改用户密码
passwd username #设置用户密码

#其他各种操作...

在Linux下,root是个非常特别的帐户,而且权限非常大,对于生产环境中,root的帐户保护就非常重要,其中一点就是远程连接的时候,我们最好能够将root的远程连接功能关闭。这个就需要修改配置文件来进行了。在/etc/ssh下面有个sshd_config文件,这个文件中,会有一个PermitRootLogin 配置,默认是被#注释掉的,要禁止SSH登录,就需要将这个注释去掉,并且将值改成no(默认值是yes)。

#修改/etc/ssh/sshd_config文件内容
vi /etc/ssh/sshd_config

#找到内容 #PermitRootLogin yes这行,修改成下面这行
PermitRootLogin no

#保存内容,并退出
#重启sshd服务
service sshd restart

此时我们关闭putty之后,再重新连接之后,输入root,并提供密码之后,远程的返回将会是:Access denied。这就禁止了root帐户的SSH连接。如果在SSH时,需要使用root帐户的执行权限执行命令,只需要用su/sudo来做即可。

对于一般用户,网上找到的禁用的方式有很多,至于那种处理方式会比较优就看个人爱好了,这里列出其中的一部分:

#直接禁用用户,让用户不能登录,方法有以下这些:
#1.修改/etc/shadow的第二列内容为*,这种方式是让用户不能登陆系统
username:*:15864:0:99999:7:::

#这种方式处理的用户不能再登录系统,同时该用户的密码也丢失了,如果要再次登录时,需要重新设置密码

#2.类似第一种,这种方式是直接修改/etc/passwd中的用户路径那一行的最后一列,将/bin/bash改成/sbin/nologin
username:x:501:500::/home/username:/sbin/nologin

#这种方式修改之后,用户同样不能登录,效果和上面类似,但是如果恢复/bin/bash之后,用户可以直接输入密码登录。

#3.当然,不想修改文件,直接使用usermod也是可以的
usermod -L username ##锁定username这个账户

#这种方式如果要解锁的时候,使用usermod -U username 即可。不用再修改文件了

#4.修改shell类型,可以禁止用户,还能让用户知道原因
chsh username -s /sbin/nologin #修改username的shell

#修改 /etc/nologin.txt(如果没有,可创建)
#在文件中添加被禁止的原因。
#这个方法和第二种效果差不多,不过这个方法可以让用户知道自己不能登录的原因

#5.禁止多用户登录
#首先需要在/etc下建立nologin文档
touch /etc/nologin 
##文件存在之后,除了root之外的所有用户都无法登陆,这个文件可以写上禁止登陆的原因,以便用户无法登录时看到原因

## 如果不要禁止所有用户,只需要将/etc/nologin文件删除即可。

#6.修改/etc/ssh/sshd_config文件,修改AllowUsers的值
#在文件中查找AllowUsers,如果没有,在文件末尾加上即可。
AllowUsers username root #仅允许username,root通过SSH登录

#修改文件保存之后,需要重启sshd服务
#如果要显示提示信息,可以修改/etc/issue.net,在文件中添加信息。同时修改sshd_config文件中加入Banner参数
Banner /etc/issue.net

#这个Banner是提示在用户登录之前。
#如果要输入密码之后提示,可以将提示信息放入/etc/motd中
#################################################
#来自网上关于motd和issue.net(issue的网络版)的区别:
#/etc/motd,即messageoftoday,每次用户登录时,/etc/motd文件的内容会显示在用户的终端。系统管理员可以在文件中编辑系统活动消息,如:管理员通知用户系统何时进行软件或硬件的升级、何时进行系统维护等。/etc/motd在用户进入的是图形界面时,可能看不到提示。

#/etc/issue.net与/etc/motd文件类似,区别在于:当一个网络用户登录系统时,/etc/issue.net的文件内容显示在login提示符之前,而/etc/motd内容显示在用户成功登录系统之后。

#7. 还有一种方法是修改/etc/pam.d/sshd文件
#在文件的第一行添加:
auth    required    pam_listfile.so item=user sense=deny file=/etc/sshdusers onerr=succeed
##一定要在第一行,pam的执行顺序是从上至下,优先匹配.
#保存之后,我们还在file指定的文件中添加需要被禁止的用户名称
#重启sshd即可。

Extension:

1. 以上是禁用帐户的登录,如果是想禁用某个IP的是否能够连接与否,则要使用/etc/host.allow和/etc/host.deny两个文件,deny文件是阻止IP文件,allow是允许文件。规则是先匹配deny,而后匹配allow,因此,allow中的文件会覆盖deny中的文件规则:

#/etc/host.deny文件中我们禁止所有的IP连接
sshd:ALL #所有IP都被禁止SSH到本机

#/etc/host.allow文件中我们允许指定的IP连接
sshd:192.168.128.183:allow

#两个文件的规则最终变成:
#仅允许192.168.128.183连接到本机.
#修改后,文件立即生效,对于当前已经运行的程序不生效,为了防止出现不必要的麻烦,建议还是先修改host.allow,而后再修改host.deny文件,这样能保证host.allow中的IP能够访问sshd进程.

2.上述管理中用的比较多的文件是文件来控制SSH的相关操作,sshd_config的所有配置详细设置内容可以参看这里,下面摘录具体内容:

SSHD_CONFIG(5)            OpenBSD Programmer's Manual           SSHD_CONFIG(5)

名称
     sshd_config - OpenSSH SSH 服务器守护进程配置文件

大纲
     /etc/ssh/sshd_config

描述
     sshd(8) 默认从 /etc/ssh/sshd_config 文件(或通过 -f 命令行选项指定的文件)读取配置信息。
     配置文件是由"指令 值"对组成的,每行一个。空行和以'#'开头的行都将被忽略。
     如果值中含有空白符或者其他特殊符号,那么可以通过在两边加上双引号(")进行界定。
     [注意]值是大小写敏感的,但指令是大小写无关的。

     当前所有可以使用的配置指令如下:

     AcceptEnv
             指定客户端发送的哪些环境变量将会被传递到会话环境中。[注意]只有SSH-2协议支持环境变量的传递。
             细节可以参考 ssh_config(5) 中的 SendEnv 配置指令。
             指令的值是空格分隔的变量名列表(其中可以使用'*'和'?'作为通配符)。也可以使用多个 AcceptEnv 达到同样的目的。
             需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用。
             默认是不传递任何环境变量。

     AddressFamily
             指定 sshd(8) 应当使用哪种地址族。取值范围是:"any"(默认)、"inet"(仅IPv4)、"inet6"(仅IPv6)。

     AllowGroups
             这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*"和"?"通配符)。默认允许所有组登录。
             如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。
             这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。
             这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:
             DenyUsers, AllowUsers, DenyGroups, AllowGroups

     AllowTcpForwarding
             是否允许TCP转发,默认值为"yes"。
             禁止TCP转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器。

     AllowUsers
             这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*"和"?"通配符)。默认允许所有用户登录。
             如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。
             如果指定了 USER@HOST 模式的用户,那么 USER 和 HOST 将同时被检查。
             这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:
             DenyUsers, AllowUsers, DenyGroups, AllowGroups

     AuthorizedKeysFile
             存放该用户可以用来登录的 RSA/DSA 公钥。
             该指令中可以使用下列根据连接时的实际情况进行展开的符号:
             %% 表示'%'、%h 表示用户的主目录、%u 表示该用户的用户名。
             经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。
             默认值是".ssh/authorized_keys"。

     Banner
             将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。
             这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。

     ChallengeResponseAuthentication
             是否允许质疑-应答(challenge-response)认证。默认值是"yes"。
             所有 login.conf(5) 中允许的认证方式都被支持。

     Ciphers
             指定SSH-2允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下:
             "aes128-cbc", "aes192-cbc", "aes256-cbc", "aes128-ctr", "aes192-ctr", "aes256-ctr",
             "3des-cbc", "arcfour128", "arcfour256", "arcfour", "blowfish-cbc", "cast128-cbc"
             默认值是可以使用上述所有算法。

     ClientAliveCountMax
             sshd(8) 在未收到任何客户端回应前最多允许发送多少个"alive"消息。默认值是 3 。
             到达这个上限后,sshd(8) 将强制断开连接、关闭会话。
             需要注意的是,"alive"消息与 TCPKeepAlive 有很大差异。
             "alive"消息是通过加密连接发送的,因此不会被欺骗;而 TCPKeepAlive 却是可以被欺骗的。
             如果 ClientAliveInterval 被设为 15 并且将 ClientAliveCountMax 保持为默认值,
             那么无应答的客户端大约会在45秒后被强制断开。这个指令仅可以用于SSH-2协议。

     ClientAliveInterval
             设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,
             sshd(8) 将通过安全通道向客户端发送一个"alive"消息,并等候应答。
             默认值 0 表示不发送"alive"消息。这个选项仅对SSH-2有效。

     Compression
             是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密。
             可用值:"yes", "delayed"(默认), "no"。

     DenyGroups
             这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*"和"?"通配符)。默认允许所有组登录。
             如果使用了这个指令,那么这些组中的成员将被拒绝登录。
             这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。
             这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:
             DenyUsers, AllowUsers, DenyGroups, AllowGroups

     DenyUsers
             这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*"和"?"通配符)。默认允许所有用户登录。
             如果使用了这个指令,那么这些用户将被拒绝登录。
             如果指定了 USER@HOST 模式的用户,那么 USER 和 HOST 将同时被检查。
             这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:
             DenyUsers, AllowUsers, DenyGroups, AllowGroups

     ForceCommand
             强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录shell执行(shell -c)。
             这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。
             这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的。

     GatewayPorts
             是否允许远程主机连接本地的转发端口。默认值是"no"。
             sshd(8) 默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。
             GatewayPorts 指令可以让 sshd 将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。
             "no"表示仅允许本地连接,"yes"表示强制将远程端口转发绑定到统配地址(wildcard address),
             "clientspecified"表示允许客户端选择将远程端口转发绑定到哪个地址。

     GSSAPIAuthentication
             是否允许使用基于 GSSAPI 的用户认证。默认值为"no"。仅用于SSH-2。

     GSSAPICleanupCredentials
             是否在用户退出登录后自动销毁用户凭证缓存。默认值是"yes"。仅用于SSH-2。

     HostbasedAuthentication
             这个指令与 RhostsRSAAuthentication 类似,但是仅可以用于SSH-2。推荐使用默认值"no"。
             推荐使用默认值"no"禁止这种不安全的认证方式。

     HostbasedUsesNameFromPacketOnly
             在开启 HostbasedAuthentication 的情况下,
             指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询。
             "yes"表示 sshd(8) 信任客户端提供的主机名而不进行反向查询。默认值是"no"。

     HostKey
             主机私钥文件的位置。如果权限不对,sshd(8) 可能会拒绝启动。
             SSH-1默认是 /etc/ssh/ssh_host_key 。
             SSH-2默认是 /etc/ssh/ssh_host_rsa_key 和 /etc/ssh/ssh_host_dsa_key 。
             一台主机可以拥有多个不同的私钥。"rsa1"仅用于SSH-1,"dsa"和"rsa"仅用于SSH-2。

     IgnoreRhosts
             是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略 .rhosts 和 .shosts 文件。
             不过 /etc/hosts.equiv 和 /etc/shosts.equiv 仍将被使用。推荐设为默认值"yes"。

     IgnoreUserKnownHosts
             是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件。
             默认值是"no"。为了提高安全性,可以设为"yes"。

     KerberosAuthentication
             是否要求用户为 PasswordAuthentication 提供的密码必须通过 Kerberos KDC 认证,也就是是否使用Kerberos认证。
             要使用Kerberos认证,服务器需要一个可以校验 KDC identity 的 Kerberos servtab 。默认值是"no"。

     KerberosGetAFSToken
             如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,
             将会在访问用户的家目录前尝试获取一个 AFS token 。默认为"no"。

     KerberosOrLocalPasswd
             如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)。
             默认值为"yes"。

     KerberosTicketCleanup
             是否在用户退出登录后自动销毁用户的 ticket 。默认值是"yes"。

     KeyRegenerationInterval
             在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。
             这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。
             设为 0 表示永不重新生成,默认为 3600(秒)。

     ListenAddress
             指定 sshd(8) 监听的网络地址,默认监听所有地址。可以使用下面的格式:

                   ListenAddress host|IPv4_addr|IPv6_addr
                   ListenAddress host|IPv4_addr:port
                   ListenAddress [host|IPv6_addr]:port

             如果未指定 port ,那么将使用 Port 指令的值。
             可以使用多个 ListenAddress 指令监听多个地址。

     LoginGraceTime
             限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒。

     LogLevel
             指定 sshd(8) 的日志等级(详细程度)。可用值如下:
             QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3
             DEBUG 与 DEBUG1 等价;DEBUG2 和 DEBUG3 则分别指定了更详细、更罗嗦的日志输出。
             比 DEBUG 更详细的日志可能会泄漏用户的敏感信息,因此反对使用。

     MACs
             指定允许在SSH-2中使用哪些消息摘要算法来进行数据校验。
             可以使用逗号分隔的列表来指定允许使用多个算法。默认值(包含所有可以使用的算法)是:
             hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96

     Match
             引入一个条件块。块的结尾标志是另一个 Match 指令或者文件结尾。
             如果 Match 行上指定的条件都满足,那么随后的指令将覆盖全局配置中的指令。
             Match 的值是一个或多个"条件-模式"对。可用的"条件"是:User, Group, Host, Address 。
             只有下列指令可以在 Match 块中使用:AllowTcpForwarding, Banner,
             ForceCommand, GatewayPorts, GSSApiAuthentication,
             KbdInteractiveAuthentication, KerberosAuthentication,
             PasswordAuthentication, PermitOpen, PermitRootLogin,
             RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,
             X11Forwarding, X11UseLocalHost

     MaxAuthTries
             指定每个连接最大允许的认证次数。默认值是 6 。
             如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。

     MaxStartups
             最大允许保持多少个未认证的连接。默认值是 10 。
             到达限制后,将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制。

     PasswordAuthentication
             是否允许使用基于密码的认证。默认为"yes"。

     PermitEmptyPasswords
             是否允许密码为空的用户远程登录。默认为"no"。

     PermitOpen
             指定TCP端口转发允许的目的地,可以使用空格分隔多个转发目标。默认允许所有转发请求。
             合法的指令格式如下:
                   PermitOpen host:port
                   PermitOpen IPv4_addr:port
                   PermitOpen [IPv6_addr]:port
             "any"可以用于移除所有限制并允许一切转发请求。

     PermitRootLogin
             是否允许 root 登录。可用值如下:
             "yes"(默认) 表示允许。"no"表示禁止。
             "without-password"表示禁止使用密码认证登录。
             "forced-commands-only"表示只有在指定了 command 选项的情况下才允许使用公钥认证登录。
                                   同时其它认证方法全部被禁止。这个值常用于做远程备份之类的事情。

     PermitTunnel
             是否允许 tun(4) 设备转发。可用值如下:
             "yes", "point-to-point"(layer 3), "ethernet"(layer 2), "no"(默认)。
             "yes"同时蕴含着"point-to-point"和"ethernet"。

     PermitUserEnvironment
             指定是否允许 sshd(8) 处理 ~/.ssh/environment 以及 ~/.ssh/authorized_keys 中的 environment= 选项。
             默认值是"no"。如果设为"yes"可能会导致用户有机会使用某些机制(比如 LD_PRELOAD)绕过访问控制,造成安全漏洞。

     PidFile
             指定在哪个文件中存放SSH守护进程的进程号,默认为 /var/run/sshd.pid 文件。

     Port
             指定 sshd(8) 守护进程监听的端口号,默认为 22 。可以使用多条指令监听多个端口。
             默认将在本机的所有网络接口上监听,但是可以通过 ListenAddress 指定只在某个特定的接口上监听。

     PrintLastLog
             指定 sshd(8) 是否在每一次交互式登录时打印最后一位用户的登录时间。默认值是"yes"。

     PrintMotd
             指定 sshd(8) 是否在每一次交互式登录时打印 /etc/motd 文件的内容。默认值是"yes"。

     Protocol
             指定 sshd(8) 支持的SSH协议的版本号。
             '1'和'2'表示仅仅支持SSH-1和SSH-2协议。"2,1"表示同时支持SSH-1和SSH-2协议。

     PubkeyAuthentication
             是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"。

     RhostsRSAAuthentication
             是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)。仅用于SSH-1。
             这是通过在RSA认证成功后再检查 ~/.rhosts 或 /etc/hosts.equiv 进行认证的。
             出于安全考虑,建议使用默认值"no"。

     RSAAuthentication
             是否允许使用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。

     ServerKeyBits
             指定临时服务器密钥的长度。仅用于SSH-1。默认值是 768(位)。最小值是 512 。

     StrictModes
             指定是否要求 sshd(8) 在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查。
             强烈建议使用默认值"yes"来预防可能出现的低级错误。

     Subsystem
             配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。
             值是一个子系统的名字和对应的命令行(含选项和参数)。比如"sft /bin/sftp-server"。

     SyslogFacility
             指定 sshd(8) 将日志消息通过哪个日志子系统(facility)发送。有效值是:
             DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7

     TCPKeepAlive
             指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"。
             这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。
             可以设为"no"关闭这个特性。

     UseDNS
             指定 sshd(8) 是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP地址真实对应。默认值为"yes"。

     UseLogin
             是否在交互式会话的登录过程中使用 login(1) 。默认值是"no"。
             如果开启此指令,那么 X11Forwarding 将会被禁止,因为 login(1) 不知道如何处理 xauth(1) cookies 。
             需要注意的是,login(1) 是禁止用于远程执行命令的。
             如果指定了 UsePrivilegeSeparation ,那么它将在认证完成后被禁用。

     UsePrivilegeSeparation
             是否让 sshd(8) 通过创建非特权子进程处理接入请求的方法来进行权限分离。默认值是"yes"。
             认证成功后,将以该认证用户的身份创建另一个子进程。
             这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。

     X11DisplayOffset
             指定 sshd(8) X11 转发的第一个可用的显示区(display)数字。默认值是 10 。
             这个可以用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆。

     X11Forwarding
             是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。
             如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。
             那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。
             需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。
             如果启用了 UseLogin ,那么X11转发将被自动禁止。

     X11UseLocalhost
             sshd(8) 是否应当将X11转发服务器绑定到本地loopback地址。默认值是"yes"。
             sshd 默认将转发服务器绑定到本地loopback地址并将 DISPLAY 环境变量的主机名部分设为"localhost"。
             这可以防止远程主机连接到 proxy display 。不过某些老旧的X11客户端不能在此配置下正常工作。
             为了兼容这些老旧的X11客户端,你可以设为"no"。

     XAuthLocation
             指定 xauth(1) 程序的绝对路径。默认值是 /usr/X11R6/bin/xauth


时间格式
     在 sshd(8) 命令行参数和配置文件中使用的时间值可以通过下面的格式指定:time[qualifier] 。
     其中的 time 是一个正整数,而 qualifier 可以是下列单位之一:
           <无>    秒
           s | S   秒
           m | M   分钟
           h | H   小时
           d | D   天
           w | W   星期

     可以通过指定多个数值来累加时间,比如:
           1h30m   1 小时 30 分钟 (90 分钟)


文件
     /etc/ssh/sshd_config
             sshd(8) 的主配置文件。这个文件的宿主应当是root,权限最大可以是"644"。

参见
     sshd(8)

作者
     OpenSSH is a derivative of the original and free ssh 1.2.12 release by
     Tatu Ylonen.  Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo
     de Raadt and Dug Song removed many bugs, re-added newer features and cre-
     ated OpenSSH.  Markus Friedl contributed the support for SSH protocol
     versions 1.5 and 2.0.  Niels Provos and Markus Friedl contributed support
     for privilege separation.

OpenBSD 4.2                     January 1, 2008                              9

 

取消淘宝的强制快捷支付付款

MitchellChu 2014-01-14 网络锁事

好久没在淘宝上买东西,近日在淘宝下单的时候发现,付款的时候突然再也没有的选项了。个人非常不愿意什么信息都和支付宝绑定在一起,以前可以直接网上银行支付,还算和支付宝相安无事,但现在竟然强制要求我要绑定银行卡,成为支付宝的快捷支付用户,这让我非常的不爽,因此好几次的购买都以放弃为最终结果。后来实在觉得虽然不太用淘宝购物,但难免有这个需要,就决定看看到底如何才能使用网上银行。

网上搜索如何取消淘宝的快捷支付都是基于已经开通支付宝的快捷支付为前提的,这个情况只要到支付宝里面找到快捷支付,直接关闭快捷支付就可以了。但我这个根本就没有开通支付宝的快捷支付,在支付宝里面根本就找不到来关闭或者是开启网上银行支付的选项来选择,这让我非常的恼火,后来,后来,就在下单的时候,突然无意之间划拉了一下左上角的设置我的个性收银台。竟然被我发现了设置的地方!!!我当时心中奔过无数只草泥马啊,草泥马。谁会想到这个地方还有这玩意儿!!!

淘宝下单时禁止快捷支付,并启用网上银行支付的方式

莫名其妙的关闭用户的储蓄卡网银,信用卡网银之后,只留个快捷支付,没有提示,只在这个左上角弄这么一个小东西,这是有意刁难用户呢,还是有意刁难用户呢?

支付宝快捷支付关闭,开启网上银行选项

下拉之后,内牛满面的发现了我消失已久的网银支付通道,对于这种好不容易重生的网银支付通道,我毫不犹豫的将快捷支付的所有通道全部关闭,只留下。剩下的,呃,,,保存吧!!!

关于博主

  一枚成分复杂的网络IT分子,属于互联网行业分类中的杂牌军。