SSH远程访问及控制

SSH协议

  • SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
  • SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性

SSH优点

  • 数据传输是加密的,可以防止信息泄漏
  • 数据传输是压缩的,可以提高传输速度

SSH客户端:putty 、Xshell 、CRT、MobaXterm 、FinalShell

SSH服务端:OpenSSH

OpenSSH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统

CentOS 7系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务

作用:SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件。

相比较之前用Telnet方式传输文件要安全很多,因为Telnet使用明文传输,SSH是加密传输

SSH配置文件

  • sshd服务的默认配置文件是==/etc/ssh/sshd_config==
  • ssh_config和sshd_config都是ssh服务器的配置文件。
  • ssh_config是针对客户端的配置文件;
  • sshd_config是针对服务端的配置文件

配置openSSH服务端

提前关闭防火墙和setenforce

主配置文件修改参数

vim /etc/ssh/sshd_config                    #服务端配置文件
#Port 22                            #监端口为22
#ListenAddress 0.0.0.0              
#监听地址为任意网卡,也可以指定Openssh服务器的具体ip
 
#LoginGraceTime 2m                  #登录验证时间为2分钟
#PermitRootLogin no                 #禁止root用户登录
#MaxAuthTries 6                     #最大重试次数为 6
#PermitEmptyPasswords no            #禁止空密码用户登录
#UseDNS no                          #禁用DNS反向解析,以提高服务器的响应速度
 
PubkeyAuthentication yes            #开启密钥对验证
AuthorizedKeysFile      .ssh/authorized_keys
#指定密钥库文件
 
 
###配置允许和禁止用户登录:加@表示限制ip,注意允许和禁止不要同时使用!!
AllowUsers zhnagsan                  #允许zhangsan登录(多个用户以空格间隔)
AllowUsers zhangsan@192.168.47.30    #只允许zhangsan通过192.168.47.30登录
DenyUsers lisi                      #禁止lisi登录

修改ssh的端口号

 设置www可以登录,xxx只能从192.168.47.30主机远程登录

 

 

 

sshd服务的登录验证方式 

①密码验证

对服务器中本地系统的用户的登录名称、密码进行验证。简便,但可能会被暴力破解

②密钥对验证

要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登陆时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交户登录

③公钥和密钥的关系

Ⅰ.公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密

Ⅱ.不能根据一个密钥来推算出另一个密钥

Ⅲ.公钥对外公开,私钥只有私钥的持有人才知道

Ⅳ.当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式

ssh远程登录

当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入“yes”)后才能继续验证。接受的密钥信息将会保存到~/.ssh/known_hosts文件中

###验证

ssh [选项] 服务器端用户名@服务器IP地址 

-p:指定非默认的端口号,缺省时默认使用22号端口
ssh -p 1314 服务器端用户名@服务器IP地址

 scp远程复制

###下行复制,从服务器端下载到本机


scp 服务器端用户名@服务器IP地址:文件的绝对路径 复制到本机的哪的绝对路径

scp root@192.168.47.20:/etc/passwd /opt       

#将远程主机的/etc/passwd复制到本机/opt目录下

-P: 指定端口号

 

###上行复制,从本机上传到服务器端

scp -r 复制到本机的哪的绝对路径 服务器端用户名@服务器IP地址:文件的绝对路径

-r:复制或上传目录时,需要添加-r选项

scp -r /etc/ssh 192.168.47.20:/opt         ##将本机的/etc/ssh目录复制到远程主机 

cd /opt                                                   

scp -r /etc/ssh 192.168.47.20:`pwd`      #pwd查看当前路径,直接复制到所处目录下

sftp 安全FTP

由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。操作语法sftp与ftp几乎一样

 sftp [选项]  用户@目标主机

sftp 服务器端用户名@服务器端IP地址
Connecting to 服务器端IP地址 ...
###输入密码
服务器端用户名@服务器端IP地址’s password:
sftp> ls
###下载文件到ftp目录
sftp> get 文件名
###上传文件到ftp目录
sftp> put 文件名
###退出
sftp> quit

配置SSH密钥对 

1.在客户端配置密钥对验证

su wuqu                               #切换到wuqu用户
 
ssh -keygen -t rsa                                                #使用rsa算法进行加密,默认为rsa
Generating public/private ecdsa key pair.      
Enter file in which to save the key (/home/admin/.ssh/id_ecdsa):        

#指定私钥位置,回车选择默认
Created directory '/home/admin/.ssh'.                          

#告诉我们生成的密钥对存放在目录中的隐藏目录.ssh/下
Enter passphrase (empty for no passphrase):                  #设置私钥的密码
Enter same passphrase again:                                         #再次确认
 
ls -l ~/.ssh                                                                     #可以查看到生成的密钥对文件
-rw-------. 1 wuqu wuqu 1766 4月  20 19:01 id_rsa               #这是私钥文件,权限默认为600
-rw-r--r--. 1 wuqu wuqui  390 4月  20 19:01 id_rsa.pub    #这是公钥文件,用来提供给SSH服务器  

 

公钥文件上传到服务器  

scp ~/.ssh/id_rsa.pub root@192.168.47.20:/opt        

#将自己的公钥文件上传到服务器的opt目录下 

或  
cd ~/.ssh                                  
ssh-copy-id -i id_rsa.pub lisi@192.168.88.20     

#这个方法可以直接在服务器的/home/lisi/.ssh/目录中导入公钥文本

 

在服务器中导入公钥文件 

cat /opt/id_rsa.pub >> /home/xxx/.ssh/authorized_keys                                

 #将从客户端接受的公钥导入到xxx 的公钥库中
cat /home/xxx/.ssh/authorized_keys                                        

#使用cat命令进行查看确定 

 在客户端使用密钥对验证

 ssh -p 1314 xxx@192.168.47.20         # lisi 在客户端远程连接服务端

密钥对免交互界面的几种方式 

1.生成密钥对时密码为空

 ###无密码密钥对

ssh-keygen -t rsa                            #创建密码对时直接回车,不设置私钥密码

cd ~/.ssh

ssh-copy-id -i id_rsa.pub lisi@192.168.88.20      #将公钥文件导入服务端
 

2.若密钥对生成时设置了密码,则设置个临时的会话代理(该代理只在当前的会话有效)
ssh-agent bash
ssh-add
###输入密钥对的密码
Enter passphrase for /root/.ssh/id_ecdsa:
Identity added:/root.ssh/id_ecdsa(/root.ssh/id_ecdsa)

TCP Wrappers访问控制

1)TCP Wrappers (TCP封套)

将TCP服务程序“包裹"起来,代为监听TCR服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
大多数Linux发行版,TCP wrappers是默认提供的功能。rpm -q tcp_ wrappers

 

2)TCP Wrappers保护机制的两种实现方式

①直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序

②由其他网络服务程序调用libwrap.so.*链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率
使用ldd命令可以查看程序的libwrap.so.*链接库

ldd $(which ssh)

TCP Wrappers的访问策略

TCPWrappers机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。

对应的两个策略文件为/etc/hosts.allow和/etc/hosts .deny,分别用来设置允许和拒绝的策略。

 

对应的两个策略文件为/etc/host.allow和/etc/host.deny,分别用来设置允许和拒绝的策略,先看/etc/host.allow,有则放通,再看/etc/host.deny,有则拒绝,如果都没有则放通所有

允许所有,拒绝个别” ----- 黑名单

只需在/etc/host.deny文件中添加相应的拒绝策略

“允许个别,拒绝所有” -----白名单

除了在/etc/host.allow中添加允许策略之外,还需要在/etc/host.deny文件中设置“ALL:ALL”的拒绝策略
 

###两个文件的设置格式,列表以“,”相隔
<服务程序列表>:<客户端地址列表>
服务程序列表:
ALL:代表所有服务
单个服务程序:如“sshd”
多个服务程序:如“sshd,sftp”
客户程序服务列表:
ALL:代表任何客户端地址
Local:代表本机地址
允许使用通配符“*”和“?”
网段地址,如“192.168.58.*”或者“192.168.58.0/255.255.255.0”
区域地址:如“*.tsy.com”匹配tsy.com域中的所有主机
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值