2014年3月

现在很多人都会扫描ssh端口并暴力破解root密码,虽然root密码不断,但破解结果仅是时间问题。为了增加对方的时间成本,所以改成使用密匙登陆是比较安全的了。这里介绍一下利用putty生成密匙并关闭root账号登陆。

大概步骤:

  • puttygen 生成 public key(公匙) 和 private key(私匙) ;
  • 将 public key 分发到Linux服务器上面,使putty可以使用密钥连接到Linux;
  • winscp使用putty生成的密匙登陆;

下载putty.exe和puttygen.exe,在文章底部输入验证码即可查看下载。

  1. 启动puttygen工具,为兼容OpenSSH密钥,选择“SSH2 RSA”。
  2. 单击 Generate 按钮,并使用鼠标在“key”框内移动,以获得足够的随机数据供生成密钥使用。

※期间,你会看到进度条上面有个提示“Please generate some radomness by moving the mouse over the blank area.”,意思就是让你用鼠标在空白区域随机移动。随着鼠标在空白区域的移动,进度条会一直走下去。停止移动鼠标,进度条也就停止了。所以,那我们要移动鼠标,直到进度条走满为止。

其中:

Key comment:是注释,不会影响密钥的有效性,但可作为自己用于区别其他密钥的参考;
Key passphrase :密匙密码
Confirm passphrase :确认密码
密匙密码用于保护私钥,如果不输入该信息,那么任何人只要拿到该私钥,即可无密码登陆系统,非常危险;通常情况下,我是建议大家输入的,但这里为了方便说明,暂时留空,请看后面使用的说明。

3.点击“Save private key”保留私钥。

如果没有输入Key passphrase信息,会有警告。

※公钥信息可以不用保留在本地的,puttygen可以从私钥得到它,验证时也不会用到。

4.打开保存的公匙public-key:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "测试"
AAAAB3NzaC1yc2EAAAABJQAAAQEAzn8E9jaJf0CEyWNGsqT1XlG+IXYsZd7a9sct
cp7EOsS6FwR75womYafMmdP+NO6jCenBFTmOq3uKtcIMVFVCAb1kegwbGa9DbrS2
zE7m0gbbnSWRi2ZCombS4KbtMdA6jx2sQlGbxwvLw8XIu8ICupF5MLd3WIRlGSbJ
6xhPBa3zjLtWCV9ZFBoZGNYyozk6vfnI7z+K0jzi/2hmI9eqXeYN0cgO5IXSqMhP
K2429EfooNU9+gt3Qs9KwcgoFRmVdTaM+Jtm4Ux0mUCQA3w2LaRJmYCRPUIBr6Vh
KgKxXk08rDyehzQC3RTjdCxtI9ztB3t5FBB+rJm7P7t0siwCqQ==
---- END SSH2 PUBLIC KEY ----

公匙内容是7行,在这里要改成一行,并在开头加上“ssh-rsa”,然后保存,或者直接复制生成密匙后界面中的public key:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAzn8E9jaJf0CEyWNGsqT1XlG+IXYsZd7a9sctcp7EOsS6FwR75womYafMmdP+NO6jCenBFTmOq3uKtcIMVFVCAb1kegwbGa9DbrS2zE7m0gbbnSWRi2ZCombS4KbtMdA6jx2sQlGbxwvLw8XIu8ICupF5MLd3WIRlGSbJ6xhPBa3zjLtWCV9ZFBoZGNYyozk6vfnI7z

5.把public key传到服务器上面,放在/root/.ssh/目录中,然后执行:

cd /root
chmod 700 .ssh
cd /root/.ssh
ls -l
cat public-key-name >> authorized_keys // 把public-key-name换成你上传的公匙文件名称
chmod 600 *
cat public-key-name >> authorized_keys // 把public-key-name换成你上传的公匙文件名
/etc/init.d/ssh restart //centos 是 service sshd restart

6.修改openssh配置

登陆服务器,修改/etc/ssh/sshd_config,把下面两行之前的“#”删掉,并把PasswordAuthentication yes 修改成 PasswordAuthentication no

ChallengeResponseAuthentication no  //关闭挑战应答方式
UsePAM no  //不使用PAM认证
PasswordAuthentication no //关闭root账号登陆

7.重启sshd服务:

/etc/init.d/ssh restart //centos 是 service sshd restart

最近在搬家自己的博客,使用天翼云主机的LTMP环境,在wordpress后台准备更新wordpress版本时,在顶部提示有错误:

[caption id="attachment_37" align="aligncenter" width="765"]scandir-wrong LTMP环境中wordpress提示scandir参数错误[/caption]

  1. Warning: scandir() has been disabled for security reasons in /luanzun.com/wp-includes/l10n.php on line 763  

解决方法也是比较简单的,这是由于我们ltmp环境下的php.ini文件scandir()函数问题,我们只需要去掉这个函数就可以了。我们可以通过FTP或者VI编辑 /usr/local/php/etc/php.ini文件中,找到 disable_functions 后面的 scandir删除掉这个函数。

最后,我们通过SSH命令 重启php-fpm就OK了。

  1. /etc/init.d/php-fpm restart  

一直在嘀咕lnmp怎么设置图片防盗链。因为流量太可怕了。国内空间商都很小气,而且量大了对网站也有影响。关于lnmp图片防盗链的问题,有人说在lnmp论坛已经发过了,但是我没找到,在其它博主的博客里看到了方法,拿来记录一下,后期使用。

因为nginx不支持.htaccess,我们只有通过修改配置文件来解决。

第一步,我们找到需要防盗链的域名的conf文件,路径:/usr/local/nginx/conf/vhost/,例如baidu.conf 先在本地备份一份。

第二步,找到下面的部分:

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$    
  2. {    
  3. expires 30d;    
  4. }  

将它修改为:

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$    
  2. {    
  3. valid_referers none blocked dutool.com www.toowu.com;    
  4. if ($invalid_referer) {  
  5. rewrite ^/ http://www.baidu.com/404.jpg;  
  6. #return 404;  
  7. }  
  8. expires 30d;    
  9. }  

具体代码大家根据下面的解释自行修改。

  1. 第一行gif|jpg|jpeg|png……是需要防止盗链的文件类型,可以自由设置;  
  2. 第三行是可以使用这些图片的网站域名,如果有多个,域名之间使用空格隔开;  
  3. 第五行是给盗链网站看到的图片,返回一个404.jpg或其它图片,这个图片源地址必须可以外链,否则别人看到的就是浏览器默认X图片。  

第三步,保存并上传覆盖源文件,然后重启lnmp。

  1. /root/lnmp restart  

在上一篇《nginx实现域名301重定向规则方法》文章里,我提到了nginx的重定向写法(其实内容写的就是域名031重定向)。今天对那篇文章进行补充。主要说一下主目录内容移动到子目录后的页面重定向方法。这写篇文章的目的是我在百度找不到······
其实道理很简单(会者不难,难者不会),还是使用rewrite写法。举个例子:
内容在主目录时的url是

www.ymywz.com/caipu-1-1-1.html

在子目录的url是

  1. www.ymywz.com/caipu/1-1-1.html  

那么,在nginx下的301重定向写法就是: 

rewrite ^/caipu\-(.+?).html /caipu/$1.html permanent;

规则与我们的伪静态写法是不一样的,伪静态的写法是:

  1. rewrite ^/caipu/([0-9]+)-([0-9]+)-([0-9]+).html /caipu/index.php?catid=$1&id=$2&page=$3 last;  

按照我这个小白的理解:

  1. 伪静态的写法是“需要的域名+原本的域名+last”;    

  2. 而301重定向呢,则是“原本的域名+需要的域名+permanent”  

代码注释

  1. rewrite /*重定向开始*/

  2. permanent /*返回301永久重定向 地址栏会显示跳转后的地址*/

  3. redirect /*返回302临时重定向 地址栏会显示跳转后的地址*/

  4. /*在前面的域名里代表结束符,而$1则代表第一个参数*/

其实rewrite还有很多用法,不单单用来重定向以及伪静态。接下来我会发另外一篇文章进行解释,分享给大家,也算是加强自我学习。

今天在一个论坛看到有人整理出来的linux vps 常用ssh命令,看着不错,我就转过来了,分享给大家。这个不是lnmp的独立命令,而是linux系统ssh通用命令。

1.目录操作:

  1. rm -rf mydir /*删除mydir目录*/  
  2. mkdir dirname /*创建名为dirname的目录*/  
  3. cd mydir /*进入mydir目录*/  
  4. cd - /*回上一级目录*/  
  5. cd .. /*回父目录,中间有空格*/  
  6. cd ~ /*回根目录*/  
  7. mv tools tool /*把tools目录改名为tool */  
  8. ln -s tool bac /*给tool目录创建名为bac的符号链接,最熟悉的应该就是FTP中www链接到public_html目录了*/  
  9. cp -a tool /home/vpser/www /*把tool目录下所有文件复制到www目录下 */  

2.目录权限:
解决安装程序时提示没有相应的文件读写权限,需要同时执行以下命令即可。

  1. chmod 777 -R 虚拟主机目录 /*权限*/  
  2. chown www:www -R 虚拟主机目录 /*属主*/  

3.文件操作

  1. rm go.tar /* 删除go.tar文件 */  
  2. find mt.cgi /* 查找文件名为mt.cgi的文件 */  
  3. df –h /* 查看磁盘剩余空间,好像没这个必要,除非你太那个了 */  

4.解压缩

  1. tar xvf wordpress.tar /* 解压tar格式的文件 */  
  2. tar -tvf myfile.tar /* 查看tar文件中包含的文件 */  
  3. tar cf toole.tar tool /* 把tool目录打包为toole.tar文件 */  
  4. tar cfz vpser.tar.gz tool /* 把tool目录打包且压缩为vpser.tar.gz文件,因为.tar文件几乎是没有压缩过的,MT的.tar.gz文件解压成.tar文件后差不多是10MB */  
  5. tar jcvf /var/bak/www.tar.bz2 /var/www/ /*创建.tar.bz2文件,压缩率高*/  
  6. tar xjf www.tar.bz2 /*解压tar.bz2格式*/  
  7. gzip -d ge.tar.gz /* 解压.tar.gz文件为.tar文件 */  
  8. unzip phpbb.zip /* 解压zip文件,windows下要压缩出一个.tar.gz格式的文件还是有点麻烦的 */  
  9. zip -r myfile.zip /* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件*/  

5.unzip

  1. unzip -o -d /home/sunny myfile.zip /* 把myfile.zip文件解压到 /home/sunny/ */  
  2. -o: /*不提示的情况下覆盖文件;*/  
  3. -d:-d /home/sunny /*指明将文件解压缩到/home/sunny目录下;*/  

6.其他

  1. zip -d myfile.zip smart.txt /* 删除压缩文件中smart.txt文件 */  
  2. zip -m myfile.zip ./rpm_info.txt /* 向压缩文件中myfile.zip中添加rpm_info.txt文件 */  

7.下载

  1. wget http://soft.vpser.net/web/nginx/nginx-0.8.0.tar.gz  
  2. /*下载远程服务器上的文件到自己的服务器,连上传都省了,服务器不是100M就是1000M的带宽,下载一个2-3兆的MT还不是几十秒的事 */  
  3. wget -c http://soft.vpser.net/web/nginx/nginx-0.8.0.tar.gz /* 继续下载上次未下载完的文件 */  

8.进程管理

  1. ps -aux /*ps 进程状态查询命令*/  

ps命令输出字段的含义:

  1. USER /*进程所有者的用户名*/  
  2. PID /*进程号,可以唯一标识该进程*/  
  3. %CPU /*进程自最近一次刷新以来所占用的CPU时间和总时间的百分比*/  
  4. %MEM /*进程使用内存的百分比*/  
  5. VSZ /*进程使用的虚拟内存大小,以K为单位*/  
  6. RSS /*进程占用的物理内存的总数量,以K为单位*/  
  7. TTY /*进程相关的终端名*/  
  8. STAT /*进程状态,用(R--运行或准备运行;S--睡眠状态;I--空闲;Z--冻结;D--不间断睡眠;W-进程没有驻留页;T停止或跟踪。)这些字母来表示*/  
  9. START /*进程开始运行时间*/  
  10. TIME /*进程使用的总CPU时间*/  
  11. COMMAND /*被执行的命令行*/  
  12. ps -aux | grep nginx /*在所有进程中,查找nginx的进程*/  
  13. kill 1234 /*1234为进程ID,即ps -aux 中的PID*/  
  14. killall nginx /*killall 通过程序的名字,直接杀死所有进程,nginx为进程名*/  

Vim操作

1.移动类

  1. h/j/k/l: 左/下/上/右 移一格*/  
  2. /*向后词移动 (前面加数字移动多少个词)*/  
  3. /*向前词移动 (前面加数字移动多少个词)*/  
  4. /*向后移到词末*/  
  5. ge /*向前移到词末*/  
  6. /*行末*/  
  7. /*行首*/  
  8. tx /*向右查找本行的x并移到那儿(大写时向左)*/  
  9. 33G /*移到文件的第33行*/  
  10. gg /*文件首行*/  
  11. /*文件尾行*/  
  12. 33% /*文件的33%处*/  
  13. H/M/L /*屏幕的首/中/尾行 */  
  14. zt/zz/zb /*当前行移到屏幕的首/中/底部*/  

2.跳转

  1. /*回到跳转来的地方*/  
  2. CTRL-O /*跳到一个 “较老” 的地方*/  
  3. CTRL-I /*则跳到一个 “较新” 的地方*/  

3.查找

  1. /*向下查找(后加关键字)*/  
  2. /*向上查找(后加关键字)*/  
  3. /*下一条符合的记录*/  

4.编辑

  1. /*转换到插入模式*/  
  2. /*删除当前字符*/  
  3. /*重复最后一次的修改操作(同PS里ctrl+f执行滤镜)*/  
  4. /*撤销操作*/  
  5. CTRL-R /*重做*/  
  6. /*将删除的字符插入到当前位置(put)*/  

5.退出保存

  1. :q /*退出*/  
  2. :q! /*不保存退出*/  
  3. ZZ /*保存后退出*/  
  4. :e! /*放弃修改重新编辑*/  

掌握这些基本命令,Linux下的基本使用已经掌握,只要多加练习,多遇到问题,解决问题,能力就会不断的提升。