【SSH】快速新建开通SSH代理帐号

购买美国LinuxVPS的朋友,除了自己建网站外,另外一个就可以使用SSH代理上国外的网络,如果是自己用,直接添加一个帐号就ok了,如果想给自己的朋友用,有不想开放SSH登录权限给朋友(主要怕朋友误操作 ),那么有没有一种快速建立SSH的方法,同时有可以限制SSH登录帐号的,修改自己的密码。可以使用如下方法:

#开SSH帐号翻墙:
useradd -s /usr/bin/passwd  vps15099  #新建立vps15099帐号,
usermod -s /usr/bin/passwd vps15099   #如果帐号已经存在,使用此语句修改帐号的登录shell为/usr/bin/passwd
passwd vps15099                       #修改帐号密码
echo "/usr/bin/passwd" >> /etc/shells #把/usr/bin/passwd添加到shells列表里
这样就建立的vps15099帐号,只能是修改密码,下面我用vps15099通过 putty登录修改密码:
login as: vps15099                                  <--输入帐号
vps15099@74.62.***.***'s password:                  <--输入给管理员给你的密码
Last login: Fri Aug 13 18:24:45 2010 from 59.42.***.***
Changing password for user vps15099.
Changing password for vps15099
(current) UNIX password:                            <--再次输入管理员给你的密码
New UNIX password:                                  <--输入你自己想修改的密码
Retype new UNIX password:                           <--再次输入你自己想修改的密码
更多帐号操作如下:
#删除用户:
userdel name

#禁用、关闭用户
passwd name -l

#开放用户
passwd name -u
通过上面操作就可以参考此文章(【ssh】如何使用Linux VPS主机ssh帐号代理访问网络?)设置游览器通过代理访问国外网站了。

【FAQ】什么吃掉了我的硬盘?

经常收到我们的 VPS 用户询问,“我的 VPS 没装新东西,为什么硬盘越用越少了?”,这多半是因为系统上的各种日志长期积累下来的结果,比如 nginx, apache 等留下来的访问日志信息长时间不清理、而且访问量大的话会很容易就膨胀到 GB;有时候某种应用程序的日志藏在文件系统的深处,不易发觉;有时候自己拷贝了一些大文件放在某个地方时间长了就忘了。那么如何在 Linux 系统上找到这些占用硬盘空间的文件呢?

首先我们可以统计一下根目录下各个目录占用硬盘的情况,找出最占用硬盘的那个目录:

# du -sh /*
6.2M /bin
17M /boot
136K /dev
97M /etc
147G /home
584M /lib
16M /lib64
16K /lost+found
8.0K /media
12K /mnt
252K /opt
0 /proc
1.7G /root
28M /sbin
8.0K /selinux
3.1M /srv
0 /sys
20K /tmp
1.9G /usr
748M /var
从上面可看出 /home 占用了最多的硬盘,我们去看看 /home 下哪些用户占用了最多的空间:
# du -sh /home/*
4.0K /home/bak
106M /home/cos
28K /home/guest
16K /home/lost+found
105G /home/vps
33G /home/somebody
8.2G /home/abc
可以看到 vpsee 这个用户和他的 home 目录 /home/vps 用掉了最多的硬盘(105GB),我们再看看 /home/vps 下究竟哪些文件占用了空间,用下面的一行命令找出某个目录下(这里是 /home/vps)大小超过 500MB 的文件(打印前40行并按照 MB 从小到大排列):
# find /home/vpsee -printf "%k %p\n" | sort -g -k 1,1 | \
awk '{if($1 > 500000) print $1/1024 "MB" " " $2 }' |tail -n 40

647.68MB  /home/vps/linux/debian-504-amd64-CD-1.iso
675.664MB /home/vps/linux/Fedora-13-i686-Live.iso
677.656MB /home/vps/unix/osol-0906-x86.iso
678.172MB /home/vps/linux/ubuntu-10.04-server-amd64.iso
700.133MB /home/vps/linux/ubuntu-10.04-desktop-i386.iso
可以看到 /home/vps 是个 iso 收藏狂,收了一堆 Linxu ISO 安装文件,以前拨号上网时代大家都喜欢收集一些软件和工具存在硬盘里,现在网络这么发达,这些旧习惯已经没必要了,ISO 文件可有可无,需要的时候就去下一个最新的,用不着自己保留,网络就是我们的硬盘。

参考文章:http://www.vpsee.com/2010/08/what-is-using-my-disk-space-up/

【sSMTP】在美国VPS(centos 5)上利用Gmail发邮件

概述:

为了方便美国VPS的用户监控自己的系统运行情况,特写下此篇文章,目的是使用sSMTP和gmail帐号发邮件到自己的邮件,可能有些同学会说,使用sendmail, postfix,exim 等完整的邮件系统,不过也有一些不便:
  • 完整的邮件系统配置相对复杂,而我只需要实现非常简单的监控邮件发送,有些杀鸡用牛刀了。
  • 很多大型邮件系统,如新浪,会做IP地址反向DNS解析,会拒绝没有动态IP地址发送出来的邮件。
实际上,我要实现的目的就是发送告警邮件,并且希望减轻自己VPS的负担。那么,不如在服务器上设置邮件客户端,通过gmail这样稳定的邮件服务系统来发送邮件。

配置环境

配置环境为美国VPS 系统为:centos 5,在I386和x86_64 测试通过。
这里先约定下面内容:
发送邮件帐号:sendmail@gmail.com
密码:sendmailpasswd

安装

由于默认的仓库中没有包含sSMTP,所以我们使用Fedora’s EPEL repo
先安装EPEL repo
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm  #i386平台安装这个
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm #x86_64平台安装这个
yum install ssmtp mailx #这里安装mailx,是由于下面要用到mail命令,此命令在mailx里

配置ssmtp

/bin/mv /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.OLD  #备份原配置文件
vi /etc/ssmtp/ssmtp.conf                                 #新建配置文件,输入如下内容
root=sentmail@gmail.com
mailhub=smtp.gmail.com:465
FromLineOverride=YES
UseTLS=YES
Hostname=sentmail@gmail.com
AuthUser=sentmail@gmail.com
AuthPass=sentmailpasswd
调整revaliases文件内容
echo 'root:sentmail@gmail.com:smtp.gmail.com:465' >> /etc/ssmtp/revaliases
备份sendmail程序
/bin/mv /usr/sbin/sendmail /usr/sbin/sendmail.OLD
ln -s /usr/sbin/ssmtp /usr/sbin/sendmail

测试

echo test | mail -s "testing ssmtp" youmail@youdomain.com
或者使用
ssmtp youmail@youdomain.com
按回车开始输入内容,ctrl+d结束内容发送

日志查看

[root@vps2 ~]# tail -f /var/log/maillog
Jul 30 18:26:59 vps2 sSMTP[16320]: Sent mail for sentmail@gmail.com (221 2.0.0 closing connection w3sm1998496ybl.21) uid=0 username=root outbytes=353
Jul 30 19:59:27 vps2 sSMTP[7708]: Creating SSL connection to host
Jul 30 19:59:27 vps2 sSMTP[7708]: SSL connection using RC4-MD5
Jul 30 19:59:32 vps2 sSMTP[7708]: Sent mail for sentmail@gmail.com (221 2.0.0 closing connection w6sm3517146anb.23) uid=0 username=root outbytes=405
Jul 30 21:16:11 vps2 sSMTP[25745]: Creating SSL connection to host
Jul 30 21:16:11 vps2 sSMTP[25745]: SSL connection using RC4-MD5
Jul 30 21:16:16 vps2 sSMTP[25745]: Sent mail for sentmail@gmail.com (221 2.0.0 closing connection d35sm3731749waa.9) uid=0 username=root outbytes=638
Jul 30 21:18:27 vps2 sSMTP[31881]: Creating SSL connection to host
Jul 30 21:18:27 vps2 sSMTP[31881]: SSL connection using RC4-MD5
Jul 30 21:18:31 vps2 sSMTP[31881]: Sent mail for sentmail@gmail.com (221 2.0.0 closing connection v38sm2544553wfh.0) uid=0 username=root outbytes=638
从上面可以看到成功发送邮件。

案例

结合定时cront和bash,我们可以编辑适合自己的监控脚本,下面简单写一个把磁盘信息发送给youmail@youdomain.com邮件
vi ssmtp.sh
#!/bin/sh
DATESTR=`date +"%m/%d/%Y"`
(echo -e "is is current disk usage: \n"; df -h ; echo -e "\n\nPlease cleanup if necessary.\n";)| mail -s "[server notification] $DATESTR " youmail@youdomain.com

参考资料:

http://www.187299.com/archives/1571
http://en.gentoo-wiki.com/wiki/HOWTO_Gmail_and_sSMTP

完整脚本

wget -N http://file.xingke.info/linux/bash/send-mail-with-gmail-and-ssmtp.sh;sh ./send-mail-with-gmail-and-ssmtp.sh