前言: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如果希望只允许或禁止某些用户登录时,可以使用AllowUsers或DenyUsers,如果只允许某些用户,如下:
[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连接服务器 安装后新建会话,输入用户名和密码即可连接,如下图:
7、构建密钥对验证的SSH体系(这种验证方法更安全)
实验环境:一共两台linux,一台ssh客户机192.168.1.2,另一台linux服务器192.168.1.1
1)在客户端创建密钥对
执行命令之后一路回车
2)将公钥上传到服务器
3)在服务器中导入公钥文本
4)在客户端使用密钥对验证(验证之前别忘记在sshd主配置文件中允许xiaohong)
验证秘钥对
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
2)vim /etc/hosts.deny
3)在客户端上修改ip为192.168.1.200,测试连接失败
4)把客户端的ip改回到192.168.1.2之后,成功连接。