今天使用Putty从windows客户端ssh装有openSUSE的主机端提示timeout。google很久发现都是suse的防火墙在捣鬼。suse默认防火墙自动开启。所以为了能使用ssh服务,修改步骤如下:
1.首先查看端口状态,可以使用命令
-># netstat -an (若查看某个端口,后面可接端口号)
2.检查服务状态使用chkconfig,如检查SSH,
-># chkconfig sshd
如为off,则需要打开系统服务的端口,可用chkconfig on命令,如打开SSH,
-># chkconfig ssh on service xinetd restart
3.防火墙开放端口:
(方法一:)
i. 进入 /etc/sysconfig/ 目录,用 vi 命令编辑 SuSEfirewall2 文件,
-># vi SuSEfirewall2
在文件中找到FW_SERVICES_EXT_TCP,在其后面加上服务名或者是服务对应的端口,如SSH,
FW_SERVICES_EXT_TCP=”ssh” 或 FW_SERVICES_EXT_TCP=”22″
保存之后退出。
ii. 重启防火墙,以使配置生效,
-># rcSuEfirewall2 restart
(方法二:)
i. 进入 /etc/sysconfig/ 目录, 查找 iptables 文件。若不存在,则新建一个名为iptables文件,
-># touch iptables
ii. 在iptables文件中添加如下,以便打开端口,如:
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp –dport 22 –state NEW -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp –dport 80 –state NEW -j ACCEPT
iii. 重起iptalbes服务:service iptables restart 或重启机器。
为了再安全一些,可以选择性地对一些IP开启ssh服务。编辑/etc/hosts.allow文件,其他不动,在最后一行添加 sshd : (你所允许的IP地址) : allow,如果是对某一段IP允许服务的话,可以写成192.168.0.0/24的形式。比如对所有59.22.33.×××的地址,就可以写成 sshd : 59.22.33.0/24 : allow。
同样要编辑/etc/hosts.deny文件,在最后一行加上sshd : all : deny。系统读取的时候是先读取allow文件再读取deny文件的,并且allow优先级较高,这样设置不会导致冲突。
iptables命令详解:http://www.diybl.com/course/6_system/linux/Linuxjs/200888/135058.html
原文http://blog.sina.com.cn/s/blog_71c391e0010148xd.html