Linux远程访问及控制SSH命令

目录

  • 一. SSH服务
    • 1.1 SSH基础
      • 1.1.1什么是SSH服务器?
      • 1.1.2SSH优点
      • 1.1.3常见的ssh协议
  • 二. 服务端配置文件常用选项
    • 2.1设置白名单
    • 2.2设置黑名单
  • 三. SSH服务的两种验证方式
    • 3.1 公钥与私钥的关系
  • 四. ssh客户端程序
    • 4.1ssh远程登录
    • 4.2 scp 远程复制
    • 4.3 sftp 安全的ftp
  • 五. 配置密钥对验证
    • 5.1免交互验证:
    • 5.2 在已有的密钥密码验证下实现免交互
  • 六. TCP Wrappers 访问控制 (TCP封套)
    • 6.1 TCP Wrappers保护机制的两种实现方式
    • 6.2 TCP Wrappers 访问策略
    • 6.3 基本原则

一. SSH服务

1.1 SSH基础

1.1.1什么是SSH服务器?

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

SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令;

SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

SSH客户端<--------------网络---------------->SSH服务端

1.1.2SSH优点

数据传输是加密的,可以防止信息泄漏

数据传输是压缩的,可以提高传输速度

1.1.3常见的ssh协议

客户端: Linux Client: ssh, scp, sftp,slogin Windows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclient
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
执行"systemctl start sshd"命令即可启动sshd 服务
sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
sshd服务的默认配置文件是/etc/ssh/ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件

服务名称 : sshd
服务端主程序: /usr/sbin/sshd
服务端配置文件 : /etc/ssh/sshd_config
客户端配置文件: /etc/ssh/ssh_config

二. 服务端配置文件常用选项

Linux远程访问及控制SSH命令_第1张图片Linux远程访问及控制SSH命令_第2张图片

2.1设置白名单

AllowUsers zhangsan [email protected] 仅允许zhangsan,lisi在此用户上登录,且lisi只能在此主机下远程登录

Linux远程访问及控制SSH命令_第3张图片Linux远程访问及控制SSH命令_第4张图片

2.2设置黑名单

DenyUsers zhangsan [email protected]禁止zhangsan和lisi在此主机上远程登陆且lisi只禁止在101上登录

Linux远程访问及控制SSH命令_第5张图片Linux远程访问及控制SSH命令_第6张图片Linux远程访问及控制SSH命令_第7张图片

三. SSH服务的两种验证方式

  1. 密码验证:对服务器中本地系统用户登录名称,密码进行验证,简单,但可能会被暴力破解
  2. 密钥对验证:要求提供相匹配的密钥才能进行验证通过,通常先在客户端中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中指定位置,远程登录时,系统会使用公钥和私钥进行加密/解密关联验证,增加安全性,且可以免密交互登录。

3.1 公钥与私钥的关系

  1. 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密
  2. 不能根据一个密钥来推算另一个密钥
  3. 公钥对外公开,私钥只有私钥持有人才知道

当密码验证和密钥验证同时开启时,服务器会优先使用密钥对验证

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

四. ssh客户端程序

4.1ssh远程登录

ssh [选项] 用户@ip
-p指定端口号

当用户第一次远程登陆时,必须接受服务器发来的ECDSA密钥验证,接收的密钥信息存放到~/.ssh/known_hosts文件中,验证成功后,即登陆目标服务器命令环境中了

Linux远程访问及控制SSH命令_第8张图片Linux远程访问及控制SSH命令_第9张图片

4.2 scp 远程复制

下行复制:

scp [email protected]:/etc/passwd /root/passwd.txt
将远程主机中的/etc/passwd文件复制到本机中

Linux远程访问及控制SSH命令_第10张图片上行复制:

scp -r /etc/ssh/ [email protected]:/opt
将本机中的/etc/ssh目录复制到远程主机中

此复制若对方主机有同名文件则会自动覆盖

Linux远程访问及控制SSH命令_第11张图片
Linux远程访问及控制SSH命令_第12张图片
补充:

Linux远程访问及控制SSH命令_第13张图片

4.3 sftp 安全的ftp

由于使用了加密/ 解密技术,所以传输效率比普通的FTP低,但是安全性更高

五. 配置密钥对验证

  1. 在客户端创建密钥对,在自己的家目录中.ssh目录中生成私钥和公钥

ssh -keygen -t rsa

  1. ssh -copy-id -p 端口号 -i id-rsa.pub 用户@ip地址
    注意生成的.ssh权限要700 authorized _keys 权限为600

Linux远程访问及控制SSH命令_第14张图片
Linux远程访问及控制SSH命令_第15张图片Linux远程访问及控制SSH命令_第16张图片
Linux远程访问及控制SSH命令_第17张图片

5.1免交互验证:

就是在创建密钥对时不设置密钥对密码

5.2 在已有的密钥密码验证下实现免交互

ssh - agent bash 设置一个代理(只在当前环境中)
ssh - add 在输入密钥密码

但此操作只能在当前会话中有效,重启则失效

Linux远程访问及控制SSH命令_第18张图片
Linux远程访问及控制SSH命令_第19张图片

六. TCP Wrappers 访问控制 (TCP封套)

将tcp服务程序包裹起来,代为监听tcp服务程序的端口,增加了一个安全检测过程,外来的连接请求必须通过这层安全检测,获得许可后才能进访问真正的服务程序

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

  1. 直接使用tcpd程序对其他的服务进行保护,需要允许tcpd程序
  2. 其他网络服务程序调用libwrap.so * 链接库,不用运行tcpd程序,此方法更加有效

使用 lld 命令查看程序的libwrap.so 链接库

lld $(which sshd)

Linux远程访问及控制SSH命令_第20张图片

6.2 TCP Wrappers 访问策略

为各种网络服务程序,针对访问服务的客户端地址进行访问控制,对应的策略文件为/etc/hosts.allow和/etc/hosts.deny分别来设置允许和拒绝访问

格式:《服务程序列表》:《客户端地址列表》
客户端地址列表允许使用通配符 * ?

6.3 基本原则

先检查/etc/hosts.allow 文件,密钥则检查/etc/hosts.deny 文件,若都没有相匹配的策略,则全部允许访问

例如
如果我只希望从ip地址为12.0.0.1主机或位于192.168.137.101的主机访问ssh服务,其他的拒绝

vim /etc/hosts.allow
sshd:12.0.0.1,192.168.137.101
vim /etc/hosts.deny
sshd:ALL

在192.168.137.102中设置白名单和黑名单

Linux远程访问及控制SSH命令_第21张图片
Linux远程访问及控制SSH命令_第22张图片
Linux远程访问及控制SSH命令_第23张图片Linux远程访问及控制SSH命令_第24张图片

你可能感兴趣的:(Linux命令讲解,linux,ssh,服务器,运维,网络)