SSH远程访问及控制

本文详细介绍了SSH协议的功能、远程连接方式(包括SSH与telnet的对比)、服务器端和客户端的配置,重点讲解了密钥对验证、SSH验证方式以及TCPWrappers访问控制。
摘要由CSDN通过智能技术生成

一、ssh概述

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

远程连接的方式:

ssh(tcp/22端口,密文传输)         telnet(tcp/23端口,明文传输)

SSH客户端:Putty、Xshell、CRT、MobaXterm
SSH服务端:OpenSSH 

二、ssh相关配置文件 

1、基本操作

systemctl start sshd                 //启动sshd服务。

systemctl status sshd              //查看服务状态

systemctl is-enabled sshd      //查看服务是否自启动执行

2、配置文件  

/etc/ssh/sshd_config(服务端配置文件)            

/etc/ssh/ssh_config(客户端配置文件)

3、服务端的重要配置

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 反向解析,以加快远程连接速度
							
AllowUsers zhangsan lisi wangwu@61.23.24.25 #只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为61.23.24.25 的主机远程登录
					
DenyUsers zhangsan                      #禁止zhangsan用户登录

4、ssh客户端的使用

1)ssh 远程登录
ssh [-p 端口] 用户名@目标主机IP 
ssh [-p 端口] 用户名@目标主机IP  命令         #临时登录目标主机执行命令后退出

2)scp 远程复制
scp [-P 端口] [-r] 本机文件/目录路径 ...  用户名@目标主机IP:绝对路径       #将本地的文件/目录复制到目标主机
scp [-P 端口] [-r] 用户名@目标主机IP:绝对路径  本机路径                    #将目标主机的文件/目录复制到本机

3)sftp 文件传输
sftp [-P 端口]  用户名@目标主机IP
> get  put  cd  ls

 三、ssh验证方式

密码验证:使用账号和密码进行验证

密钥对验证:使用客户端创建的密钥对进行验证

 vim /etc/ssh/sshd_config
PasswordAuthentication yes                         #启用密码验证
PubkeyAuthentication yes                           #启用密钥对验证
AuthorizedKeysFile  .ssh/ authorized_keys          #指定公钥库文件

创建使用密钥对验证

1、首先确保服务端开启了ssh密钥对验证     /etc/ssh/sshd_config   -->  PubkeyAuthentication yes

2、在客户端创建密钥对 

ssh-keygen [-t rsa/dsa/ecdsa] 

3、上传公钥至服务端

 ssh-copy-id [-i 公钥文件]  用户名@目标主机IP    //公钥信息会自动保存到服务端的 ~/.ssh/authorized_keys 文件里

 4、客户端 ssh 远程登录,使用密钥对的密码进行验证

注:密钥对在客户端是谁创建的,只能谁使用;密钥对上传给服务端的哪个用户,那么就只能使用那个用户去登录

 无交互式密钥登录的种方法

1)在生成密钥文件时设置私钥密码为空即可完成免交互登录

ssh-keygen      一路回车,不设置密码
ssh-copy-id

(2)创建ssh会话代理(只能在当前会话中有效)

ssh-agent bash
ssh-add

Enter passphrase for /home/admin/.ssh/id_ecdsa:     //输入私钥的密码

5、免交互创建密钥对 

免交互上传至服务器 :

四、TCP Wrappers 访问控制 

TCP Wrappers(TCP封套) 是一个简单的防火墙机制。用来将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
大多数 Linux 发行版,TCP Wrappers 是默认提供的功能。rpm -q tcp_wrapper
 

格式:

<服务程序列表>:<客户端地址列表>

服务程序列表:
ALL:代表所有的服务。
单个服务程序:如“vsftpd”。
多个服务程序组成的列表:如“vsftpd,sshd”。

客户端地址列表:
ALL:代表任何客户端地址。
LOCAL:代表本机地址。
多个地址以逗号分隔
允许使用通配符 “*” 和 “?” ,前者代表任意长度字符,后者仅代表一个字符
网段地址,如 “192.168.80.” 或者 192.168.80.0/255.255.255.0 
区域地址,如 “.benet.com”匹配 benet.com 域中的所有主机。

例如:

            sshd,vsftpd:192.168.80.13,192.168.80.14
            ALL:ALL
            sshd:192.168.80.*
            sshd:192.168.80.0/255.255.255.128

 TCP Wrappers 机制的基本原则:

首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;
否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;
如果检查上述两个文件都找不到相匹配的策略,则允许访问。

“允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略

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

  • 42
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值