> 文章列表 > 【Linux网络服务】SSH远程访问及控制

【Linux网络服务】SSH远程访问及控制

【Linux网络服务】SSH远程访问及控制

一、openssh服务器

1.1ssh协议

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

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

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

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

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

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

1.2openssh

  • openssH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统。
  • Centos 7系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动。
  • 执行”systemctl start sshd”命令即可启动 sshd 服务
  • sshd 服务默认使用的是TCP的 22端口
  • sshd 服务的默认配置文件是/etc/ssh/sshd_config
  • ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户瑞的配置文件,后者则是针对服务端的配置文件。

客户端常用的ssh连接软件

  • Linux Client: ssh, scp, sftp,slogin ,

  • Windows Client:xshell, MobaXterm,putty, securecrt ,telnet

  • 服务名称 : sshd

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

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

  • 客户端配置文件: /etc/ssh/ssh_config

二、配置openssh服务端

2.1sshd_config配置文件的常用选项

vim /etc/ssh/sshd config
Port 22 #监听端口为 22
ListenAddress 0.0.0.0  #监听地址为任意网段,也可以指定openSSH服务器的具体IP
LoqinGraceTime 2m  #登录验证时间为 2 分钟
PermitRootLoqin no   #禁止: root 用户欲录
MaxAuthTries 6    #最大重试次数为 6
PexmitEmptyPasswords no  #禁止空密码用户录
UseDNs no   #禁用 DNS 反向解析,以提高服务器的响应速度
PubkeyAuthentication yes #开启密钥对验证

【Linux网络服务】SSH远程访问及控制
【Linux网络服务】SSH远程访问及控制
【Linux网络服务】SSH远程访问及控制

二、设置白名单与黑名单的两种方法

2.1方法一:修改sshd_config文件

  • Allowusers 添加白名单
  • DenyUsers添加黑名单
  • 白名单与黑名单不可以同时使用
    白名单
    【Linux网络服务】SSH远程访问及控制
    【Linux网络服务】SSH远程访问及控制
    【Linux网络服务】SSH远程访问及控制
    黑名单
    【Linux网络服务】SSH远程访问及控制
    【Linux网络服务】SSH远程访问及控制
    【Linux网络服务】SSH远程访问及控制

2.2方法二:设置TCP Wrappers访问策略

2.2.1TCP Wrappers保护机制的方式

  • 由其他网络服务程序调用 libwrap.so.*链接库,不需要运行 tpd 程序。此方式的应用更加泛,也更有效率。
  • 使用 ldd 命令可以查看程序的 ibwrap.so.*链接库Idd $(which ssh)

2.2.2访问策略

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

2.2.3格式

  • <服务程序列表>:<客户端地址列表>
    (1) 服务程序列表
  • ALL:代表所有的服务。
  • 单个服务程序:如”vsftpd”
  • 多个服务程序组成的列表: 如rvsftpd,sshd"。

(2)客户端地址列表

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

2.24设置白名单与黑名单

查看哪些tcp服务可以被wrappers保护

  • Idd $(which ssh)

【Linux网络服务】SSH远程访问及控制
白名单

【Linux网络服务】SSH远程访问及控制
【Linux网络服务】SSH远程访问及控制
【Linux网络服务】SSH远程访问及控制
【Linux网络服务】SSH远程访问及控制

  • 黑名单相反即可,TCP Wrappers会先读取allow文件,如果有则直接允许通过,然后在读取deny文件,如果有则拒绝访问,如果都没有则允许通过

三、scp、sftp服务

3.1scp远程复制

下行复制:将远程主机中的文件复制到本机

【Linux网络服务】SSH远程访问及控制
上行复制
【Linux网络服务】SSH远程访问及控制
注:复制目录要加-r,加端口号要加-P ,如果有同名文件会直接覆盖不提醒

3.2sftp 远程文件传输协议

  • 由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。操作语法sftp与ftp几乎一样。
sftp> ls
sftp> get 文件名  #下载文件到ftp目录
sftp> put 文件名  #上传文件到ftp目录
sftp> quit		 #退出

【Linux网络服务】SSH远程访问及控制

四、配置密钥对验证

(1)在客户端创建密钥对
ssh-keygen -t rsa
-t指定算法类型

【Linux网络服务】SSH远程访问及控制

(2)把公钥文件发送给服务端主机,即可完成密钥验证登录

ssh-copy-id -i id_rsa.pub dn@192.168.243.99# ssh-copy-id 可以指定在指定用户的家目录中生成公钥文件的目录和文件,并且目录权限700,文件权限600,只有这样密钥验证才能使用# -i 指定公钥文件

【Linux网络服务】SSH远程访问及控制
【Linux网络服务】SSH远程访问及控制

(3)客户端主机即可通过密钥验证登录,无需输出密码,密钥验证时一对一的,安全性比密码登录更高

【Linux网络服务】SSH远程访问及控制

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

方法一:

  • 在生成密钥文件时设置私钥密码为空即可完成免交互登录
    方法二:
    通过创建ssh会话代理 (只在当前会话有效)
ssh-agent bash
ssh-add