前言:linux运维管理的时候,一般都是通过远程方式管理,当需要从一个工作站管理数以百计的服务器主机时,远程维护的方式将更占优势。

一:SSH远程管理

SSH是一种安全通道协议,主要用来实现字符界面的远程管理、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登陆时输入的用户口令。

与早起的TELNET(远程登录)、RSH(Remote Shell,远程执行)、RCP(Remote File Copy,远程文件复制)等应用相比,SSH协议提供了更好的安全性。

OpenSSH软件官网:http://www.openssh.com

1、服务监听选项

[root@localhost ~]# vim /etc/ssh/sshd_config 
......//省略部分内容
Port 22                                   //监听端口为22
#AddressFamily any
ListenAddress 192.168.1.1                 //监听地址为192.168.1.1
 ......//省略部分内容
Protocol 2                                //使用SSH V2协议
......//省略部分内容
UseDNS no                                 //禁用DNS反向解析
......//省略部分内容
sshd服务器使用的默认端口是22,必要时建议修改次端口号,并指定监听服务的具体IP地址,以提高在网络中的隐蔽性。除此之外,SSH协议的版本选用V2比V1的安全
性更要好,禁用DNS反向解析可以提高服务器的响应速度。

[root@localhost ~]# service sshd restart           //重新加载服务才能生效
停止 sshd:                                                [确定]
正在启动 sshd:                                            [确定]

2、用户登陆控制

通常应禁止root用户或密码为空的用户登录,另外,可以限制登录验证的时间(默认为2分钟)及最大重试次数,若超过限制后仍未登录则断开连接。

[root@localhost ~]# vim /etc/ssh/sshd_config
.....//省略部分内容
LoginGraceTime 2m                  //登陆验证时间为2分钟
PermitRootLogin yes                //允许root用户登陆
#StrictModes yes     
MaxAuthTries 6                     //最大重试次数为6
#MaxSessions 10                    
.....//省略部分内容
PermitEmptyPasswords no            //禁止空密码用户登陆
.....//省略部分内容

PermitRootLogin yes是允许root登录,如果不允许把yes改为no

PermitEmptyPasswords no的意思是禁止空密码用户登录,PasswordAuthentication yes是启用密码验证。


3、登录验证方式

对于服务器的远程管理,除了用户账号的安全控制以外,登陆验证的方式也非常重要。sshd服务支持两种验证--密码验证、秘钥对验证,可以设置只使用其中的一种方式,

也可以两种都启用。

[root@localhost ~]# vim /etc/ssh/sshd_config 
.....//省略部分内容
#RSAAuthentication yes                           
PubkeyAuthentication yes                          //启用秘钥对验证
AuthorizedKeysFile      .ssh/authorized_keys      //指定公钥库数据文件
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody
.....//省略部分内容
PasswordAuthentication yes                        //启用密码验证

4如果希望只允许或禁止某些用户登录时,可以使用AllowUsersDenyUsers,如果只允许某些用户,如下:

[root@localhost ~]# vim /etc/ssh/sshd_config
....//省略部分内容
# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       ForceCommand cvs server
AllowUsers root zhangsan lisi               //添加只允许的用户

5、使用SSH客户端程序

1).程登陆:ssh zhangsan@192.168.1.1                    
            whoami                                   //确定当前用户
            /sbin/ifconfig eth0 | grep "inet addr"   //确认当前主机地址
如果使用了非默认端口号(如2345),则在登陆时必须登陆通过“-p"选项指定端口号。
默认是22,不安全,可以修改端口:vim etc/ssh/sshd_config
            ssh -p 2345 zhangsan@192.168.1.1

 

2).远程连接到服务器之后,可以使用scp远程复制的方法在服务器和客户机之间传递文件。
例如:将远程主机中的/etc/passwd文件复制到本机,并将本机的/etc/vsftpd目录复制到远程主机。
scp root@192.168.1.1:/etc/passwd /root/chen1.txt
scp -r /etc/vsftpd/ root@192.168.1.1:/opt
3).通过sftp命令可以利用SSH安全连接与远程主机上传,下载文件,采用了类似于ftp的方式。
登陆服务器:sftp root@192.168.1.1
上传文件:put /boot/config-2.6.32-431.e6.x86
下载文件:get /boot/grub.conf
退出:bye
6、在windows客户端上使用图形工具xshell连接服务器
安装后新建会话,输入用户名和密码即可连接,如下图:

远程访问及控制_SSH


7、构建密钥对验证的SSH体系(这种验证方法更安全)

实验环境:一共两台linux,一台ssh客户机192.168.1.2,另一台linux服务器192.168.1.1

1)在客户端创建密钥对

执行命令之后一路回车

远程访问及控制_SSH_02

2)将公钥上传到服务器

远程访问及控制_SSH_03

3)在服务器中导入公钥文本

远程访问及控制_服务_04

4)在客户端使用密钥对验证(验证之前别忘记在sshd主配置文件中允许xiaohong

远程访问及控制_安全控制 _05

验证秘钥对

远程访问及控制_安全控制 _06

8、配置tcp wrappers访问控制
tcp wrappers机制针对访问服务的客户机地址进行访问控制,对应两个策略文件/etc/hosts.allow和/etc/hosts.deny,分别用来设置允许和拒绝策略。
策略的应用顺序:首先检查/etc/hosts.allow文件,如果找到匹配策略,则允许访问,否则继续检查/etc/hosts.deny文件,如果找到匹配,则拒绝,如果上述两个文件都找不到匹配的策略,则允许访问。
例如:允许192.168.1.2的主机或者192.168.2.0的网段访问sshd,其他地址被拒绝,执行以下操作。
1)vim  /etc/hosts.allow

远程访问及控制_安全控制 _07


2)vim /etc/hosts.deny

远程访问及控制_SSH_08

3)在客户端上修改ip192.168.1.200,测试连接失败

远程访问及控制_安全控制 _09

4)把客户端的ip改回到192.168.1.2之后,成功连接。

远程访问及控制_安全控制 _10