SSH远程管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH远程管理相关的知识,希望对你有一定的参考价值。


一、SSH介绍

SSH(Secure Shell) 是一种安全的通道协议,主要用来实现字符界面的远程登录、远程复制等功能。

软件:opensshopenssh-server等(默认已安装)

服务名称:sshd

端口:默认端口是22

服务端主程序:/usr/sbin/sshd

服务端配置文件:/etc/ssh/sshd_config

 

1.服务监听选项

[[email protected] ~]# vi /etc/ssh/sshd_config

……

Port 22                        //监听端口号为22

Protocol 2                     //使用SSH V2协议

ListenAddress 192.168.4.254    //监听地址为192.168.4.254

UseDNS no                      //禁用DNS方向解析(提高服务器的响应速度)

……

注意:为了提高安全性,监听端口和监听地址可以根据需求进行修改。

 

2.用户登录控制

[[email protected] ~]# vi /etc/ssh/sshd_config

……

PermitRootLogin no             //禁止root用户登录

PermitEmptyPasswords no        //禁止空密码用户登录

LoginGraceTime 2m              //登录验证时间为2分钟

MaxAuthTries 6                 //最大重试次数为6

……

注意:sshd服务默认允许root用户登录(不安全),普遍做法:先以普通用户远程登入,进入安全的shell环境后,根据实际需要可以使用su 命令切换root用户。

 

AllowUsers  jerry  [email protected]          //只允许jerryadmin用户登录,且admin用户仅能够从IP地址                                                    为61.23.24.25的主机远程登录。

注意:当希望只允许或禁止某些用户登录时,可以使用AllowUsersDenyUsers配置,两者用法类似,但不能同时使用。

 

3.登录验证方式

[[email protected] ~]# vi /etc/ssh/sshd_config

……

PasswordAuthentication  yes                     //启用密码验证

PubkeyAuthentication  yes                       //启用密钥对验证

AuthorizedKeysFile  .ssh/authorized_keys        //指定公钥数据文件


密码验证:以服务器中本地系统用户的登录名称、密码进行验证。

密钥对验证:要求提供相同匹配的密钥信息才能通过,创建方式主要有三步。

 

注意:密码验证使用方法简单,但是不安全,对于安全性较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可以启用,服务器优先使用密钥对验证。

 

3.SSH客户端程序(密码验证)

软件包:openssh-clients(默认已安装)

 

ssh命令 —— 远程安全登录

格式:ssh  [email protected]

scp命令 —— 远程安全复制

格式1scp  [email protected]:file1  file2            //下行

格式2scp  file1  [email protected]:file2            //上行

sftp命令 —— 安全FTP上下载

格式:sftp  [email protected]           //FTP类似

 

注意:任何支持SSH协议的客户端程序都可以与OpenSSH服务器进行通信,如windows平台中的XshellSecureCRTPutty等。

 

4.密钥对验证的SSH体系

(1)在客户端创建密钥对

[[email protected] ~]$ ssh-keygen -t rsa//在客户机为用户zhangsan生成密钥对

Generating public/private rsa key pair.

Enter file in which to save the key (/home/zhangsan/.ssh/id_rsa):

            //指定私钥位置

Enter passphrase (empty for no passphrase):             //设置私钥短语

Enter same passphrase again:                            //确认所设置的短语

Your identification has been saved in /home/zhangsan/.ssh/id_rsa.

Your public key has been saved in /home/zhangsan/.ssh/id_rsa.pub.

……

注意:在指定私钥存放位置时,一般直接回车,默认位置为宿主目录下的.ssh文件夹下;

  私钥短语对私钥文件进行保护,当使用该私钥验证登录时必须正确提供此处所设置的短语。如果,直接回车不设置私钥短语,可以实现无口令登录,相比较安全性稍差。

 

(2)将公钥文件上传至服务器

[[email protected] ~]$ scp ~/.ssh/id_rsa.pub [email protected]:/tmp/        //上传方法随意

 

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

[[email protected] ~]# mkdir -p /home/lisi/.ssh/

[[email protected] ~]# cat /tmp/id_rsa.pub  >>  /home/lisi/.ssh/authorized_keys

注意:这里用来远程登录的账号是lisi,所以先在lisi的宿主目录中创建.ssh文件夹,然后将用户zhangsan的公钥追加到该文件夹下的authorized_keys文件中。


二、TCP Wrappesr访问控制

TCP Wrappers将其他的TCP服务程序“包裹”起来,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。

 

1.访问控制策略的配置文件

/etc/hosts.allow        //允许个别,拒绝所有,需要在hosts.deny中设置ALL:ALL

/etc/hosts.deny         //允许所有,拒绝个别

 

2.策略配置格式

服务器程序列表:客户机地址列表

服务列表--ALL:代表所有服务

单个服务程序

多个服务程序,用逗号分隔

客户机地址列表--ALL:代表任何客户机地址

LOCAL:代表本机地址

单个IP地址

网络段地址:如192.168.4.  或者 192.168.4.0/255.255.255.0

.开始的域名,如.benet.com,匹配benet.com域中所有主机。

多个地址以逗号分隔

允许使用通配符 ? *

 

3.策略的应用顺序

先检查hosts.allow,找到匹配则允许访问。

否则再检查hosts.deny,找到则拒绝访问。

    若两个文件中均无匹配策略,则默认允许访问。





实验案例:

某公司的电子商务站点由站门的网站管理员进行配置和维护,并需要随时从Internet进行远程管理。考虑到易用性和灵活性,在web服务器上启用OpenSSH服务,同时基于安全性考虑,需要对SSH登录进行严格的控制。

 

需求描述:

允许用户wzadm从任意地址登录,采用密钥对验证

允许用户jacky从主机192.168.3.110登录

禁止其他所有用户远程登录

 

 

环境拓扑如下:

技术分享


1.准备实验环境

一共四台电脑,一台internet测试机,一台网站服务器,一台网关服务器(添加两块网卡),使用真机做网管工作站。

技术分享

 

1正确配置各主机的网络参数(IP地址、子网掩码、默认网关),网关服务器的内网卡使用vm1ip地址是192.168.1.254,外网卡使用vm8ip地址是218.29.30..31Internet测试机ip地址是218.29.30.218,网卡vm8,配置网关指向218.29.30.31,网站服务器的地址是192.168.1.1,网卡vm1,网关指向192.168.1.254

 

2)在linux上配置网关的临时方式例如:route add default gw 192.168.1.254

 

3在网关服务器上开启路由转发。

echo “1” > /proc/sys/net/ipv4/ip_forward                //临时开启路由功能

修改/etc/sysctl.conf文件                    //永久开启路由功能

        net.ipv4.ip_forward = 1

修改完毕后执行sysctl -p执行,让sysctl.conf配置文件即使生效。

 

4)测试内外网之间可以ping

 

5在网站服务器上添加测试用户jackywzadm,并设置好密码。

 

2、创建密钥对文件,分发公钥

1)在Internet测试用机218.29.30.218上创建SSH密钥对文件。

 

[[email protected] ~]# ssh-keygen -t rsa

 

2)将其中的公钥文件发送给网站Web服务器(使用FTP等任何方式)。

3、配置OpenSSH服务端

1)在网站服务器中,开启SSH密钥对验证、密码验证,并限制登录用户。

 

[[email protected] ~]# vi /etc/ssh/sshd_config

…… //省略部分内容

PermitRootLogin no

AllowUsers [email protected] wzadm

PasswordAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_key

[[email protected] ~]# service sshd reload

 

2)将客户机发过来的公钥文本导入wzadm用户的公钥数据库。

 

[[email protected] ~]# mkdir -p /home/wzadm/.ssh/

[[email protected] ~]# cat id_rsa.pub >> /home/wzadm/.ssh/authorized_keys

 

3)锁定用户账号wzadm,以禁止其直接使用口令验证。

 

[[email protected] ~]# passwd -l lisi

Locking password for user lisi.

passwd: Success

 

4、验证实验结果

1)使用jacky的用户名/密码,可以从主机192.168.3.110远程登录网站服务器。

2)使用wzadm的用户名/密码,在任何主机中均无法远程登录网站服务器。

3)在生成密钥对的主机中,使用wzadm的用户名、验证私钥短语后可以登录网站服务器。(4)使用root用户或其他用户(如wangwu),无法远程登录网站服务器。



本文出自 “网络技术” 博客,请务必保留此出处http://fjc365.blog.51cto.com/11891287/1877015

以上是关于SSH远程管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础知识第六讲,远程管理ssh操作

SSH远程管理

SSH远程管理

SSH原理 and SSH远程登录

SSH远程管理

ssh远程管理