linux ssh密钥认证

SSH是一个在应

用程序中提供安全通信的协议,通过SSH可以用安全的访问服务器,因为SSH基于

成熟的共钥加密体系,把所有的传输的数据进行加密,保证数据在传输时不被恶

意破坏,泄漏,篡改。SSH还是用了多种加密和认证方式,解决了传输中数据加密

和身份认证的问题,能有效的防止网络嗅探和ip欺骗等攻击。
OpenSSH
Linux下广泛使用免费的OpenSSH程序来实现SSH协议.Red Hat Enterprise

linux 4也同样使用OpenSSH.它同时支持SSH1和SSH2协议.

一、检查系统是否安装OpenSSH
[root@simple ~]# rpm -q openssh-server
openssh-server-3.9p1-8.RHEL4.15

二、SSH服务的配置
1、配置SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的


2、因为SSH服务使用默认的配置已经能够很好的工作,如果仅仅提供SSH服务不需

要修改。这里只介绍一
些常用的选项。
#Port 22
定义了SSH服务监听的断口号,SSH服务默认使用的端口号是22
#Proctocol 2,1
定义了SSH服务器使用SSH协议的顺序。默认识先使用SSH2协议,如果不成功则使

用SSH1协议,为了安全起
见,可以设置只使用SSH2协议。
#ListenAddress 0.0.0.0
定义SSH服务器帮定的IP地址,默认绑定服务器所有可用的IP地址.
#PermitRootLogin yes
定义是否允许管理员登陆
#PermitEmptyPasswords no
定义是否允许空密码登陆.
#PasswordAuthentication no
定义是否使用口令认证方式,如果准备使用公钥认证可以设置为no

三、使用公钥认证

1、原理:首先由用户生成一对密钥,然后将公钥保存在SSH服务器用户的目录

下.ssh子目录中的authorized_key文件里(/root/.ssh/authorized_key).私钥保

存在本地计算机.当用户登陆时,服务器检查authorized_key文件的公钥是否与用

户的私钥对应,如果相符则允许登入,否则拒绝.由于私钥只有保存在用户的本地计

算机中,因此入侵者就算得到用户口令,也不能登陆到服务器.
2、启用公钥认证
修改配置文件/etc/ssh/sshd_config
将”PasswordAuthentication yes”修改为”PasswordAuthentication no”
3、生成密钥

A:192.168.1.159

[root@159 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory ‘/root/.ssh’.
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:
dd:61:6a:1e:df:37:14:61:0a:f1:9f:b3:37:5e:bb:1c root@159

[root@159 ~]# cd .ssh/
[root@159 .ssh]# ls
id_rsa id_rsa.pub

[root@159 .ssh]# scp id_rsa.pub [email protected]:/root/.ssh/authorized_keys

B:192.168.1.39

[root@39 ~]# ssh-keygen -t rsa
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:
66:7b:2f:d8:af:db:f0:37:aa:09:05:25:fc:4f:0b:4c root@39

[root@39 ~]# cd .ssh/

[root@39 .ssh]# ls
authorized_keys id_rsa id_rsa.pub known_hosts

[root@39 .ssh]# scp id_rsa.pub [email protected]:/root/.ssh/authorized_keys

四:验证:

[root@39 .ssh]# ssh 192.168.1.159
Last login: Mon Jun 27 10:47:03 2011 from 192.168.1.39
[root@159 ~]#

[root@159 .ssh]# ssh 192.168.1.39
Last login: Fri Jun 10 08:05:47 2011 from 192.168.1.159
[root@39 ~]#

linux 硬盘格式化、挂载、卸载命令

linux系统硬盘格式化,mkfs.ext3 /dev/hdb1
 硬盘挂载 mount -t ext3 /dev/sdb /home/
 卸载硬盘分区 umount /dev/sdb
修改/etc/fstab 系统启动时,自动挂载硬盘。

安装DenyHosts防止ssh密码被爆破

wget -c http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz/download
tar -zxvf DenyHosts-2.6.tar.gz
cd DenyHosts-2.6
python setup.py install
cp -f /usr/share/denyhosts/denyhosts.cfg-dist /usr/share/denyhosts/denyhosts.cfg
cp -f /usr/share/denyhosts/daemon-control-dist /usr/share/denyhosts/daemon-control
chown root /usr/share/denyhosts/daemon-control
chmod 755 /usr/share/denyhosts/daemon-control
ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
chkconfig --level 345 denyhosts on
service denyhosts start

命令行导入MySQL数据库

导入MySQL数据库可使用source命令:
1、进入数据库控制台:mysql -u*** -p (会提示输入超级用户密码)
2、新建一个数据库:create database name
3、导入已备份好的名字假设为db_name.sql的数据库文件:source [path]/db_name.sql
在我机器上测试项目论坛的数据库文件,发现使用# mysql -uroot -p database < database.sql出现问题,而上述方法可行!

Linux统计目录下文件个数

Linux下没有专门的语句对文件个数进行统计,但是可以通过语句组合来实现

方法1:

# ls -l | grep "^-" | wc -l

其中,"^-" 是过滤出以"-"开头的记录,表示是文件而不是目录,目录用"^d"
wc -l 是统计出输出信息的行数,一行信息对应一个文件,所以得出文件数

# ls -lR | grep "^-" | wc -l

可以统计出包括子目录文件的个数

方法2:

# find /***/*** -type f | wc -l

可以统计指定目录下所有文件个数,包括子目录

Linux上iptables基础应用

Linux上iptables防火墙的基本应用解说 iptables是Linux上常用的防火墙软件,下面vps侦探给大家说一下iptables的安装、清除iptables规则、iptables只开放指定端口、iptables屏蔽指定ip、ip段及解封、删除已添加的iptables规则等iptables的基本应用。 关于更多的iptables的使用方法可以执行:iptables --help或网上搜索一下iptables参数的说明。 1、安装iptables防火墙
如果没有安装iptables需要先安装,CentOS执行: yum install iptables
Debian/Ubuntu执行: apt-get install iptables
2、清除已有iptables规则
iptables -F
iptables -X
iptables -Z
3、开放指定的端口

阅读剩余部分...

Xen 128M yum内存不足解决

setenforce 0 >> /dev/null 2>&1
echo "exclude=filesystem">>/etc/yum.conf
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum/pluginconf.d/fastestmirror.conf
小内存下用centos有点蛋痛,各位小内存玩家还是用debian或者加大内存


sshfs通过ssh挂载远程目录到本地

SSH 是一个强大且安全的工具,我们除了可以用它来远程管理主机外,还可以通过它建立 SSH tunnel 作 Proxy 用,远程传输文件等等。而这里我想要介绍另外一个功能,那就是结合 sshfs 这个工具可以把远程主机的文件系统映射到本地主机上,透过 SSH 把远程文件系统挂载到本机上,这样我们可以不必使用 scp 工具就可以做到直接复制及删除远程主机的文件了,就像操作本地磁盘一样方便。

sshfs 是基于 FUSE 构建的 SSH 文件系统客户端程序,通过它远程主机的配置无需作任何改变,就可以透过 SSH 协议来挂载远程文件系统了,非常方便及安全。

主页:http://fuse.sourceforge.net/sshfs.html

Ubuntu 上安装:

sudo apt-get install sshfs

挂载远程 ssh 文件系统:

sshfs -o transform_symlinks -o follow_symlinks user@hostname:/远程路径 /本地路径

sshfs root@hostname:/远程路径 /本地路径

-o transform_symlinks 表示转换绝对链接符号为相对链接符号
-o follow_symlinks 沿用服务器上的链接符号

更多参数请 man sshfs ,如果碰到其它问题请参考官方的 FAQ

如果你想不输入密码的话,请使用 SSH key 认证方式。

执行命令后就可以像操作本地磁盘一样操作这个映射的磁盘了。

PS: 其实 FreeBSD 上也有此工具,Ports : /usr/ports/sysutils/fusefs-sshfs

linux修改ssh端口和禁止root远程登陆设置

linux修改ssh端口22
vi /etc/ssh/sshd_config
找到#port 22
将前面的#去掉,然后修改成其他端口
比如:port 1890
为增强安全和管理方便
增加一个普通权限的用户,并设置密码
useradd 您自己的帐户
passwd 您自己的密码
帐户和密码不建议使用单词/常见词/有规则性的字符
然后禁止ROOT远程SSH登录:
vi /etc/ssh/sshd_config
把其中的
PermitRootLogin yes
修改为
PermitRootLogin no
最后重启sshd服务
service sshd restart

Linux查看系统配置常用命令

系统

# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量

资源

阅读剩余部分...

CentOS安装crontab及使用方法

安装crontab:
yum install crontabs

说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:
chkconfig --level 35 crond on

1,crontab命令

功能说明:设置计时器。

语  法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command

参  数:
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。

2,crontab 格式

基本格式 :
* *  *  *  *  command
分 时 日 月 周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启 apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、 10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每 隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三 的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间

Linux系统安装RAR

wget http://www.rarsoft.com/rar/rarlinux-3.9.3.tar.gz
tar -xvf rarlinux-3.9.3.tar.gz
cd rar
make
cp rar_static /usr/local/bin/rar

centos下添加IP地址实例

操作如下,登陆SSH:

vi /etc/syscionfig/network-scripts/ifcfg-eth0:0

第二个IP,就是

vi /etc/syscionfig/network-scripts/ifcfg-eth0:1

第三个IP,就是
ifcfg-eth0:2(由此类推)

DEVICE=eth0:0 网卡设备名称
onboot=YES    随机启动
BOOTPROTO=static  静态分配IP
IPADDR=*.*.*.*  要添加的IP地址
NETMASK=255.255.255.0  子网掩码(以实际为准)
GATEWAY=*.*.*.*  路由

如果IP是连续的,可以使用下面的方法。

vi /etc/sysconfig/network-scripts/ifcfg-eth0-range
DEVICE=eth0
BOOTPROTO=static
IPADDR_START=起始IP
IPADDR_END=结束IP
CLONENUM_START=网卡起始编号
NETMASK=子网掩码
ONBOOT=yes

保存文件然后重启网络服务立即生效

/etc/init.d/network restart

centos add IP addresses

关于XEN HVM和KVM虚拟化

HVM是XEN的一个全虚拟化的模式,XEN分为半虚拟化环境(Xen PV)和全虚拟化环境(Xen HVM), 全虚拟化环境可以支持Windows Freebsd 以及各大Linux的发行版都可以使用ISO来自主安装DIY系统,而半虚拟化的系统则只支持Linux的发行版.

KVM是在近几年被红帽抬进了linux内核属于后起之秀,而XEN出现的要早所以更加成熟稳定!

KVM和HVM一些明显相同点都是qemu全虚拟化的环境可以完整的支持Windows freebsd Linux的各大发行版操作系统。一些明显不同之处就是Xen和Kvm的资源分配模式差异就是对内存的分配,XEN是采用完全独立式分割内存给vps,而Kvm则是增量式的分配内存给VPS,这样一来就充分发挥宿主服务器的内存资源!Xen和Kvm的内核不一样这个就不用说了 !

KVM的起步比较晚,和xen比还不够完善,技术普及度还有很长的路走!

我们的KVM VPS也将会在短期内上架,敬请关注!

使用netstat判断网络连接数状况

#查看所有80端口的连接数
netstat -nat|grep -i ":80"|wc -l

#对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

#查看TCP连接状态
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}' 
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c

#查看80端口连接数最多的20个IP
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn|head -n20

#用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20

#查找排列较多time_wait连接
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
#查找排列较多的SYN连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more