直接使用系统的root帐户登录系统,在很多环境下是不允许。而且如果网络中的所有机器都能使用ssh登录关键服务器也是不允许的。这就要求我们需要使用一些手段,现在root帐号的登录,而且是只有指定的几台机器才能登录。当然限制登录的ip这些通过网络设备也恩那个完成。但是我们只需要了解怎么使用系统自己的功能实现,这是每一个系统管理员都比较了解的。
1,修改ssh的配置文件,是root用户只能通过本地登录,不能通过远程ssh连接服务器。
vim /etc/ssh/sshd_config,
把#PermitRootLogin yes改成
PermitRootLogin no,然后重启ssh服务器,root用户就不能通过ssh远程登录系统了,只能通过一个普通帐号su或者本地登录。
2,可以同修改其他系统配置文件,使之能通过几个指定的IP远程ssh登录服务器。把下面这段放到root的.bash_profile文件中
ALLOWHOSTSLIST=”192.168.163.1″
REMOTEHOST=$(env | grep SSH_CLIENT | awk ‘{print $1}’ | awk -F “=” ‘{print $2}’)
if echo “${ALLOWHOSTSLIST}” | grep “${REMOTEHOST}” > /dev/null
then :
else
exit
fi
结果就只能通过IP地址是192.168.163.1这台服务器通过ssh远程连接本服务器了。
3,可以把需要ssh远程服务器的IP地址添加到/etc/hosts.allow,例如下面的操作:
sshd:192.168.163.1:allow #只允许这个IP地址ssh登录
sshd:192.168.163.:allow #允许这个网段的所有IP地址ssh登录
sshd:all:deny #拒绝所有没有出现在上面的IP地址的ssh连接
4,也可以使用iptables指定能够远程ssh到服务器的IP地址
iptables -A INPUT -p tcp –dport 22 -s 192.168.163.1 -j ACCEPT #允许这个IP地址ssh连接本服务器
iptables -A INPUT -p tcp –dport 22 -s 192.168.163.0/24 -j ACCEPT #允许这个网段的所有IP远程ssh连接本服务器
iptables -A INPUT -p tcp –dport 22 -j DROP #除了上面允许的IP地址外,都拒绝使用ssh连接到服务器