标签: vps

增强VPS主机安全linux主机使用密匙验证关闭密码认证的方法

注意,此方法未经测试,转自李思思博客,原文链接已不存在。

平时我们登录VPS都是帐号加密码的方式登录,但是这样呢很不安全,知道密码的人就能登录,不知道的还可以无限尝试,也就是被扫描,为了更加安全,所以出了这文章

好了废话少说,简单的说就三步
第一步 生成一对锁匙
密匙有公匙和私匙,形象的说就是钥匙和锁头,虽然这样说不太对,不过为了便于理解,我这里把公匙比喻为锁头,私匙比喻为钥匙
生成这一对锁匙有多种方法,先来最简单的,
我们先密码登录到我们的linux VPS上,键入如下命令
ssh-keygen -t rsa
然后会得到提示 叫你输入密码,如果你不想为这对锁头再加密码就直接输入2次回车即可,如果你为了更加安全希望这对锁匙加密的话可以输入自己的密码,也就是把你的钥匙变成高级的带密码的钥匙
提示画面应该是这样的
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
你得到了2个文件 在/root/.ssh/下面应该有 id_rsa(钥匙)和id_rsa.pub(锁头).
我们需要把锁头id_rsa.pub 改名字为 authorized_keys
(如果你需要这一对钥匙在别的VPS上也可以使用,而不是一个机子一个钥匙的话,可以把锁头和钥匙一起复制下来,在别的机子上直接把authorized_keys上传到/root/.ssh/下面即可)
好了 上面这些就是第一步 生成一对锁匙

第二步其实是因为putty.exe这个东西不能正确识别linux弄出的钥匙才需要的操作,
我们打开puttygen.exe 把我们的
钥匙id_rsa进行一下处理 如图显示

导入以后 点击 Save private key 得到的就是putty能正常使用的钥匙了(如果你前面加了密码需要你输入密码)

现在呢打开putty 尝试密匙登录

在连接那里可以输入自动登录的用户名,就可以免去输入用户名的烦恼
登录的时候会有如下提示
login as: root
Authenticating with public key “imported-openssh-key”
表示密匙登录成功
第三步就是关闭密码登录
远程Linux主机的/etc/ssh/sshd_config配置文件
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes    #======》这里把注释去掉,并改成no

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes #========>把注释去掉,并改成no
修改后/etc/init.d/sshd reload #加载修改后的配置文件并生效
如果是debian的话使用 /etc/init.d/ssh reload 来重新加载配置文件
这样其他远程客户端如果没有私钥,那么这些用户连输入密码的机会都没有,就会被本主机直接断开

就这样教程完毕了

附加其他生成密匙的方法,有兴趣的继续看吧
方案一:使用puttygen.exe生成的密匙
1、用puttygen.exe生成一对密匙
1)、打开puttygen.exe,直接点击Generate,鼠标在Key区空白的位置频繁的晃动
加快随机数的产生,这样几秒钟就可以生成我们需要的密匙
2)、点击Save public key->id_rsa.pub(保存密匙)
因为puttygen.exe生成的格式和Linux系统使用的key格式不同,需要对生成的数据作些简单的修改:
比如源数据:
—- BEGIN SSH2 PUBLIC KEY —-
Comment: “rsa-key-gliethttp”
AAAAB3NzaC1yc2EAAAABJQAAAIEAg2Nx1dBZBypLXY1S78plfmPmwlQj1Ckuoz8o
4vAWjJfOy3i6t2+o7aZMbGN+yUbQY5ScyJu3bK7Wg3ZxXP6qps14J2CAXbdrT9VH
2AA3FIOgbLHii7Bwmjkr5+hVYp7Vazm7cPsGpKnmCWihqX7rkQdY7xq3mOCJI3ry
Nnfkrh0=
—- END SSH2 PUBLIC KEY —-
修改成:(我使用的Linux主机名为gliethttp)
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAg2Nx1dBZBypLXY1S78plfmPmwlQj1Ckuoz8o4vAWjJfOy3i6t2+
o7aZMbGN+yUbQY5ScyJu3bK7Wg3ZxXP6qps14J2CAXbdrT9VH2AA3FIOgbLHii7Bwmjkr5+hVYp7Vazm7cPsGpK
nmCWihqX7rkQdY7xq3mOCJI3ryNnfkrh0= root@gliethttp
(注意:修改后的数据不能有回车换行)
3)、将生成的id_rsa.pub拷贝到远程主机gliethttp的/root/.ssh上
重命名为authorized_keys
[root@gliethttp root]#cd .ssh
[root@gliethttp .sh]#mv id_rsa.pub authorized_keys
这样sshd服务程序当接收到远程客户端的连接申请时会自动匹配.ssh/authorized_keys文件中的密匙
4)、点击Save private key->id_rsa.ppk(保存私钥)
如果安全级别不是很苛刻,可以不设置Key passphrase
2、打开putty.exe
1)、Session –> Host Name (填写服务器地址或者域名)
2)、Connection –> SSH –> Auth (点Browse选择刚生成的id_rsa.ppk)
3)、open
成功打开后出现如下提示:
login as: root
Authenticating with public key “imported-openssh-key”

猫大的最新版vps备份脚本

更新,2012年5月14日
发现猫大新脚本中有错误,需要修改两处代码。
1、添加sed -i ‘s/performance_schema //g’ mysqldata。注意,mysql5.1以前是没有这个库的,可以不用添加。
2、去掉tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz后面的.gz。
3、修改发送邮件语句
echo “主题:数据库备份” | mutt -a /home/backup/$DataBakName -s “内容:数据库备份” $MAIL_TO

echo “数据库备份,有问题可访问https://moper.me咨询” | mutt $MAIL_TO -s “数据库备份” -a /home/backup/$DataBakName
原语句好像不能发送成功了。
测试环境为centos6,如果没有安装邮件发送程序,请先安装yum install sendmail mutt。
以下代码已更新!最新版为https://moper.me/AutoBackupToFtp2.sh

联系了一下猫大,自动备份的脚本更改了一下。额,由于学艺不精,也不知道我上一篇文章改的对不对。不过看了一下猫大现在的脚本应该是没有问题的。难道是我自己没有注意到更新,抱歉了。下面再贴一下脚本全文。有一点需要注意的,请保存为UTF-8,并且换行编码为Unix(LF)。或者你也可以直接去下载这个文件。
猫言猫语最新版
https://moper.me/AutoBackupToFtp2.sh
moper修改的老版
https://moper.me/AutoBackupToFtp_moper.sh
文章链接《centos6下猫大自动备份脚本问题修正》
猫言猫语老版
https://moper.me/AutoBackupToFtp.sh
文章链接《AutoBackupToFtp.sh自动备份脚本》

#!/bin/bash
#你要修改的地方从这里开始
MYSQL_USER=root                             #mysql用户名
MYSQL_PASS=123456                      #mysql密码
MAIL_TO=i@moper.me                 #数据库发送到的邮箱
FTP_USER=moper                              #ftp用户名
FTP_PASS=123456                         #ftp密码
FTP_IP=imcat.in                          #ftp地址
FTP_backup=backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/www                          #要备份的网站数据
#你要修改的地方从这里结束

#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date +"%Y%m%d").tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz
OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz
#删除本地3天前的数据
rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz
cd /home/backup
#导出数据库,一个数据库一个压缩文件
/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs > mysqldata
sed -i 's/information_schema //g' mysqldata
sed -i 's/performance_schema //g' mysqldata
sed -i 's/mysql //g' mysqldata
for db in `cat mysqldata`; do
    (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS --databases ${db}> ${db}.sql)
done
#压缩数据库文件为一个文件
tar zcf /home/backup/$DataBakName /home/backup/*.sql
rm -rf /home/backup/*.sql mysqldata
#发送数据库到Email,如果数据库压缩后太大,请注释这行
echo "数据库备份,有问题可访问https://moper.me咨询" | mutt $MAIL_TO -s "数据库备份" -a /home/backup/$DataBakName
#压缩网站数据
tar zcf /home/backup/$WebBakName $WEB_DATA
#上传到FTP空间,删除FTP空间5天前的数据
ftp -v -n $FTP_IP << END
user $FTP_USER $FTP_PASS
type binary
cd $FTP_backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END

备份恢复需要注意的事项

1、用ssh登陆后,解压上传内容,文件变成了root拥有,需要改成admin或者apache等。使用的命令chown -R admin *
2、重装后,上传的文件目录需要设定相应的权限,例如777,保证程序的正常运行。
使用的命令chmod -R 777 cache
需要设置777点文件夹
cache
wp-content
archivers
3、自动备份脚本需要重新部署。
4、上传后解压,伪静态文件.htaccess并没有上传,不知道什么原因。重新上传后正常。

AutoBackupToFtp.sh自动备份脚本

2012年5月6日版本更新!
猫言猫语最新版
https://moper.me/AutoBackupToFtp2.sh
文章链接《猫大的最新版vps备份脚本》
moper修改的老版
https://moper.me/AutoBackupToFtp_moper.sh
文章链接《centos6下猫大自动备份脚本问题修正》
猫言猫语老版
https://moper.me/AutoBackupToFtp.sh

自从柒月开始使用廉价Linux VPS做一些小站后,备份成了关键问题之一。每次手动备份很麻烦,也可能会因为别的事而耽搁了。不过还好,在猫言猫语的网站找到了一个专门在Linux下自动备份的脚本,可以将数据库和网站文件打包上传到指定FTP或直接发送到邮箱。

首先安装需要的组件:

yum install sendmail mutt

然后新建一个.sh文件,文件名随意:

AutoBackupToFtp.sh

编辑“AutoBackupToFtp.sh”输入以下内容:

#!/bin/bash
#你要修改的地方从这里开始
MYSQL_USER=root                             #mysql用户名
MYSQL_PASS=123456                      #mysql密码
MAIL_TO=x@xxx.com                 #数据库发送到的邮箱
FTP_USER=xxx                              #ftp用户名
FTP_PASS=123456                         #ftp密码
FTP_IP=xxx.xxx.xxx                          #ftp地址
FTP_backup=backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/www                          #要备份的网站数据
#你要修改的地方从这里结束

#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date +”%Y%m%d”).tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +”%Y%m%d”).tar.gz
OldWeb=Web_$(date -d -5day +”%Y%m%d”).tar.gz
#删除本地3天前的数据
rm -rf /home/backup/Data_$(date -d -3day +”%Y%m%d”).tar.gz /home/backup/Web_$(date -d -3day +”%Y%m%d”).tar.gz
cd /home/backup
#导出数据库,一个数据库一个压缩文件
for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e ‘SHOW DATABASES’ | xargs`; do
(/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 – > ${db}.sql.gz)
done
#压缩数据库文件为一个文件
tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz
rm -rf /home/backup/*.sql.gz
#发送数据库到Email,如果数据库压缩后太大,请注释这行
echo “主题:数据库备份” | mutt -a /home/backup/$DataBakName -s “内容:数据库备份” $MAIL_TO
#压缩网站数据
tar zcf /home/backup/$WebBakName $WEB_DATA
#上传到FTP空间,删除FTP空间5天前的数据
ftp -v -n $FTP_IP << END
user $FTP_USER $FTP_PASS
type binary
cd $FTP_backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END

以上内容需要自己手动修改的部分:

#!/bin/bash
#你要修改的地方从这里开始
MYSQL_USER=root                             #mysql用户名
MYSQL_PASS=123456                      #mysql密码
MAIL_TO=x@xxx.com                 #数据库发送到的邮箱
FTP_USER=xxx                              #ftp用户名
FTP_PASS=123456                         #ftp密码
FTP_IP=xxx.xxx.xxx                          #ftp地址
FTP_backup=backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/www                          #要备份的网站数据
#你要修改的地方从这里结束

另外,你需要在/home下建立一个 /backup 文件夹:

mkdir -p /home/backup

完成以上步骤后,给.sh脚本添加权限:

chmod +x AutoBackupToFtp.sh

利用crontab 实现自动备份,在ssh下:

crontab -e

输入以下内容:

00 00 * * * /home/AutoBackupToFtp.sh

这样就实现了每天00:00自动备份网站文件和数据库上传到FTP空间。 阅读详细 »

Vi编辑器的基本使用方法

Vi编辑器的基本使用方法

vi编辑器是所有UnixLinux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对UnixLinux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

1vi的基本概念
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1) 命令行模式command mode

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

2) 插入模式(Insert mode

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

3) 底行模式(last line mode

将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。 阅读详细 »

解决自动备份脚本不执行

我是直接在VPS上创建.sh文件的,复制内容进去以后保存,不管用,提示-bash: ./AutoBackupToFtp.sh: /bin/bash^M: bad interpreter: No such file or directory
查了一下,出错原因如下:
此文件是在window下写的,所以在每行后面会加个ctrl+m就是^M,所以后面的sh就变成sh^M当然是没有这个命令的,所以脚本就不能运行了,把^M去掉就应该没问题了。(觉得可能是自己创建的方法问题,或者说是linux为了安全,故意这么设定)

输入命令:dos2unix AutoBackupToFtp.sh 把它转化成linux文件。

会提示dos2unix: converting file AutoBackupToFtp.sh to UNIX format …

如果没有dos2unix此命令,可用此方法:

cat ./AutoBackupToFtp.sh | tr -d ‘\r’ > temp.sh
mv temp.sh AutoBackupToFtp.sh

重装kloxo的方法和具体步骤

官方没有提供卸载程序,也没有提供卸载的步骤;一旦出现不可修复的问题,直接覆盖安装又不行,一般都要重做系统了。网上搜索的结果是乱七八糟一大片,所以这里写个详细的简明步骤:

1、卸载:
卸载 mysql, apache和php:不管用yum还是rpm还是其他什么,最后的结果是rpm -qa | grep mysql,rpm -qa | grep httpd,rpm -qa | grep php都不应该输入什么结果。
删除目录:/var/lib/mysql 是一定要删除的;除此之外,find / -name lx* -print,看得到的都删除掉吧,除非你自己的目录也起了类似的名字。
删除用户:把kloxo自动生成的用户都userdel掉,当然应该也可以保留,自己斟酌。

2、重装:
和新装是一样的,直接下载后运行即可。
如果出现乱码: /usr/sbin/setenforce 0,然后重装;
如果还是出现乱码:rpm -e lxzend lxphp lxlighttpd,然后重装;
安装最后出现错误,如果是英文的就忽略吧。

3、登录:
安装完毕后如果无法登录:请先略微等待一会儿;如果没有解决,想办法终止掉占用内存多的进程,停止掉某些服务(比如apache),然后重试。

一般情况下,以上的步骤应该可以使你想重装多少遍就重装多少遍了。

PS:转载自互联网。此方法自己没有在本地实验成功,可能是其他因素造成。留个记录,以备后用。