SSH远程访问以及控制

  • 一、SSH远程管理基本简介
  • 二、OpenSSH服务端相关配置
  • 三、SSH客户端程序的登录以及使用
    • -登录验证方式
    • -SSH客户端程序的使用
      • (1)ssh远程登录:
      • (2)scp远程复制
      • (3)sftp文件传输 (安全的ftp)
  • 四、构建密钥对验证的SSH体系
  • 五、TCP Wrappers访问控制

一、SSH远程管理基本简介

  • SSH协议:
    SSH协议是一种安全通道协议,主要是用来实现字符界面的远程登录、远程复制等功能
    相比于Telnet、RSH、RCP等安全性更高
    默认端口: TCP 22
  • OpenSSH服务端:
    OpenSSH是由openssh和openssh-server等软件包提供的
    Linux系统默认已经将sshd添加为标准的系统服务
    服务名称: sshd
    服务端主程序: /usr/sbin/sshd
    服务端配置文件: /etc/ssh/sshd_config

二、OpenSSH服务端相关配置

因为主配置文件里大多都是以 # 开头的注释行,所以一般可以直接在主配置文件末尾添加选项,当然添加之前还是要确认所加的选项有没有

******相关服务监听选项
[root@ssh1 ~]# vim /etc/ssh/sshd_config
。。。。。。
Port   22 (监听端口,默认22)
ListenAddress   监听地址
Protocol  ssh协议版本
USEDNS  no  (禁用DNS反向解析)
******相关的用户登录控制选项
[root@ssh1 ~]# vim /etc/ssh/sshd_config
。。。。。。
LoginGraceTime 2m        (登录验证时间: 默认2 分钟)
PermitRootLogin yes      (默认是“yes”,表示允许root 用户登录)
PermitEmptyPasswords no  (默认禁止空密码账户登录)
MaxAuthTries 6           (最大的重试次数)
DenyUsers   用户         (拒绝这个用户在任何机器上使用ssh 远程登录;如果拒绝多个用户中间用空格隔开)
DenyUsers   用户@IP地址  (拒绝这个用户在对应的IP地址的机器上进行远程ssh 登录)
AllowUsers   用户名      (仅允许某个用户通过ssh 远程登录)
AllowUsers  用户名@IP地址    (仅允许某个用户通过对应地址的主机进行SSH远程登录)
(注意: DenyUsers 选项和AllowUsers 选项不要同时使用)

三、SSH客户端程序的登录以及使用

在Linux主机上登录Linux服务器的方法(格式):

[root@ssh1 ~]#ssh 用户名@登录Linux服务器的地址 -p 端口号

-登录验证方式

登录验证的方式有两种:
(1)密码验证: 服务器对本地系统用户进行用户名和密码验证 容易受到暴力破解
(2)密钥对验证: 在客户端上创建密钥文件 (公钥和私钥) ,公钥上传到服务器指定位置,私钥自己保留,远程登录时进行加密、解密关联认证,增强远程管理安全性
注意:当两种验证方式都启用时,服务器优先使用密钥对验证,对于安全性较高的服务器,建议关闭密码验证
(公钥和私钥可以相互解密,但是不能相互推算,只有私钥能解密公钥,公钥也同样只有私钥可以解密)

******主配置文件的配置选项
[root@ssh1 ~]# vim /etc/ssh/sshd_config
。。。。。。
PasswordAuthentication yes                    (密码验证方式开启)
PubkeyAuthentication yes                      (密钥对验证开启)
AuthorizedKeysFile      .ssh/authorized_keys  (指定公钥库位置)

-SSH客户端程序的使用

OpenSSH客户端: 由openssh-clients软件包提供 (linux系统默认已经安装) ,包括ssh远程登录命令,以及scp远程复制和sftp文件传输命令

(1)ssh远程登录:

  • 通过第三方工具使用ssh进行远程登录 (如Xshell、CRT、Putty等图形化工具)
  • 命令登录:
[root@ssh1 ~]# ssh 用户名@主机地址 -p 端口号

(端口号默认就是22,所以可以不用跟-p选项,除非修改了ssh的端口号,就需要指定ssh端口号)

(2)scp远程复制

语法结构:

[root@ssh1 ~]# scp root@对方的地址:对方文件位置 本地位置
(回车后,按照提示输入对方root账户的密码)
示例:
******将192.168.100.7主机的root目录下的AAA.txt文件复制到本机的root目录下,使用root账户登录
[root@ssh2 ~]# scp root@192.168.100.7:/root/AAA.txt  /root/
The authenticity of host '192.168.100.7 (192.168.100.7)' can't be established.
ECDSA key fingerprint is SHA256:weaks0wagWSeyPZfM99IlV/pbISthvV5FMnczNdtcj4.
ECDSA key fingerprint is MD5:af:d9:66:c2:45:b3:c6:8e:0b:53:07:99:d7:8f:a0:06.
Are you sure you want to continue connecting (yes/no)? yes  (会询问是否进行连接,输入yes即可)
Warning: Permanently added '192.168.100.7' (ECDSA) to the list of known hosts.
root@192.168.100.7's password:    (输入root账户的密码)
AAA.txt                        100%    0     0.0KB/s   00:00     (显示传输完毕)
[root@ssh2 ~]# ls    (查看/root下发现多了一个AAA.txt)
AAA.txt  anaconda-ks.cfg
******将本地root目录下的bbb目录复制到192.168.100.8主机下的root目录里
[root@ssh1 ~]# scp -r /root/bbb root@192.168.100.8:/root/  (复制目录需要加-r选项)
The authenticity of host '192.168.100.8 (192.168.100.8)' can't be established.
ECDSA key fingerprint is SHA256:k2YVo9hnbXnXqpinsSIIKc+xwNr0DYFgwd5J6thuuaU.
ECDSA key fingerprint is MD5:6a:9d:38:87:6f:67:63:b2:87:30:a0:4e:9e:1b:8f:a2.
Are you sure you want to continue connecting (yes/no)? yes   (输入yes)
Warning: Permanently added '192.168.100.8' (ECDSA) to the list of known hosts.
root@192.168.100.8's password:   (输入密码)
传输完毕后切换到192.168.100.8主机,发现root目录下多了一个bbb目录
[root@ssh2 ~]# ls
AAA.txt  anaconda-ks.cfg  bbb

(3)sftp文件传输 (安全的ftp)

语法结构:

登录
[root@ssh2 ~]# sftp 用户名@对方地址 (按回车输入密码)
下载
sftp>get 文件名
上传
sftp>put 文件名
退出登录
sftp>bye 或 exit
示例:
******登录主机192.168.100.8
[root@ssh1 ~]# sftp root@192.168.100.8
root@192.168.100.8's password:   (输入密码)
Connected to 192.168.100.8.
sftp> get aaa.txt   (下载aaa.txt文件)
Fetching /root/aaa.txt to aaa.txt
sftp> put bbb.txt   (上传bbb.txt文件)
Uploading bbb.txt to /root/bbb.txt
bbb.txt                        100%    0     0.0KB/s   00:00
sftp> bye           (退出登录)
[root@ssh1 ~]# ls   (查看root目录下,发现多了aaa.txt文件)
aaa.txt  anaconda-ks.cfg  bbb.txt

四、构建密钥对验证的SSH体系

Linux主机 ip地址
ssh1 192.168.100.7
ssh2 192.168.100.8

要求: ssh2主机中的boss账户可以通过密钥对验证体系登录ssh1主机
步骤:

******在ssh2主机上创建boss账户,并且创建密钥对
[root@ssh2 ~]# useradd boss
[root@ssh2 ~]# passwd boss
更改用户 boss 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
******切换成boss账户登录,并且使用ecdsa的加密方式创建密钥对文件
[root@ssh2 ~]# su - boss
[boss@ssh2 ~]$ ssh-keygen -t ecdsa   (连续按三次回车即可)
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/boss/.ssh/id_ecdsa):  (私钥公钥存放位置)
Created directory '/home/boss/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/boss/.ssh/id_ecdsa.
Your public key has been saved in /home/boss/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:DngxV6VMBECrjdfAeFpPZx6vJjfMEINGeCdaquWh7yI boss@ssh2
The key's randomart image is:
+---[ECDSA 256]---+
|     o+..o+..    |
|    .++o.+ .     |
|    .=@o= *      |
|    =X O * o     |
|   ==.= S . .    |
|  o .o o + .     |
|   .    o B      |
|E . .    + .     |
| . o.            |
+----[SHA256]-----+
密钥对文件的默认位置:/home/boss/.ssh/
id_ecdsa(私钥文件)id_ecfsa.pub(公钥文件)
[boss@ssh2 ~]$ ll /home/boss/.ssh
总用量 8
-rw------- 1 boss boss 227 12月 16 18:53 id_ecdsa
-rw-r--r-- 1 boss boss 171 12月 16 18:53 id_ecdsa.pub
******把公钥文件上传给ssh1主机的tmp目录下
[boss@ssh2 ~]$ scp /home/boss/.ssh/id_ecdsa.pub root@192.168.100.7:/tmp
The authenticity of host '192.168.100.7 (192.168.100.7)' can't be established.
ECDSA key fingerprint is SHA256:weaks0wagWSeyPZfM99IlV/pbISthvV5FMnczNdtcj4.
ECDSA key fingerprint is MD5:af:d9:66:c2:45:b3:c6:8e:0b:53:07:99:d7:8f:a0:06.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.7' (ECDSA) to the list of known hosts.
root@192.168.100.7's password:
id_ecdsa.pub                   100%  171   193.1KB/s   00:00  (传输完成)
******切换到ssh1主机上,创建boss用户,并且在boss的家目录中创建公钥数据库的存放目录.ssh
[root@ssh1 ~]# useradd boss
[root@ssh1 ~]# mkdir -p /home/boss/.ssh
******把ssh2发送过来的公钥文件的内容追加到刚刚创建的公钥数据库中并且指定文件名为authorized_keys
[root@ssh1 ~]# cat /tmp/id_ecdsa.pub >> /home/boss/.ssh/authorized_keys
******在ssh2主机上使用密钥对验证登录ssh1的boos用户
[boss@ssh2 ~]$ ssh boss@192.168.100.7
Last login: Wed Dec 16 19:07:24 2020 from 192.168.100.8
[boss@ssh1 ~]$
不用输入密码,直接就可以使用boss用户登录到ssh1主机

五、TCP Wrappers访问控制

  • 定义: 一种防护机制,作为应用服务与网络之间的一道特殊防线,提供额外的安全保障(类似于ACL)
  • 工作原理: 将TCP服务程序 包裹 起来,监听TCP服务程序端口,增加一个安全检测过程,外来的链接请求必须通过这层安全检测,获得许可后,才可以真正的访问服务程序
    CentOS7.3上默认的软件包: tcp_wrappers-7.6-77.el7.x86_64
  • 提供: 执行程序tcpd 和共享链接库文件libwrap.so.*
  • 保护机制的两种实现方式:
    (1)直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd
    (2)其他的服务程序调用libwrap.so.*链接库,不需要运行tcpd (应用更广泛,更有效率)
  • 查看程序的共享库:
[root@ssh1 ~]# ldd /usr/sbin/sshd | grep "libwrap" libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f90ca8a6000)
  • TCP Wrappers对应的两个策略文件:
    (1)/etc/hosts.allow: 用来设置允许策略
    (2)/etc/hosts.deny: 用来设置拒绝策略
  • 策略的配置格式: 服务程序列表:客户端地址列表
    (1)服务程序列表
    ALL: 表示所有服务
    单个服务: 直接写服务名
    例:httpd、ftpd等
    多个服务程序: 服务名中间以 , 隔开
    例:httpd,sshd
    (2)客户端地址列表
    ALL: 任何客户端
    LOCAL: 本机地址
    单个IP: 直接写一个IP
    例:192.168.100.1
    网段地址:
    例: 192.168.100.0/255.255.255.0 (表示192.168.100.0 这个网段)
    以"."开始的域名: 所有的以同一个域名后缀结尾的主机
    例:.baidu.com (也就是说前面不管是www还是mail只要是后缀是.baidu.com的都符合这个域名地址)
    以"." 结束的网络地址: 表示一个网段
    例:192.168.10. (表示192.168.10.0网段)
  • 访问控制的基本原则:
    (1)先检查/etc/hosts.allow 文件,找到相匹配的策略,就允许访问
    (2)然后继续检查/etc/hosts.deny ,如果找到相匹配的策略,则拒绝
    (3)如果检查两个文件都没有匹配的策略,则允许访问

SSH远程访问以及控制相关推荐

  1. ssh远程访问及控制与TCP Wrappers

    远程访问及控制 文章目录 远程访问及控制 SSH协议 客户端和服务端 OpenSSH 配置opensSH服务端 设置SSH白名单和黑名单 使用SSH客户端程序 1. ssh远程登录 2. scp远程复 ...

  2. SSH远程访问及控制

    大多数企业服务器是通过远程登录的方式来进行管理的,如何更加安全.高效的远程管理网络中的各种服务器是作为网络管理人员的必修课.这里将针对Linux环境使用安全的SSH远程管理途径,以及通过TCP Wra ...

  3. SSH远程访问及控制——远程登录服务器并传输数据

    文章目录 一.SSH远程管理 1.SSH的概述 二.OpenSSH服务器 三.配置OpenSSH服务器 3.1.sshd_ config配置文件的常用选项设置 3.2.实例操作:配置文件的常用选项 3 ...

  4. SSH远程访问与TCP Wrappers 访问控制(基础概述及配置操作)

    SSH远程访问及控制 OpenSSH服务器 基础概述 Windows远程桌面连接 配置OpenSSH 服务端 sshd_config配置文件的常用选项设置 使用SSH客户端程序进行黑白名单登录测试 使 ...

  5. 【鬼网络】之远程访问及控制ssh

    远程访问及控制ssh 一.SSH远程管理 1.定义 2.优点 3.客户端与服务端 4.SSH服务的开启.端口号和配置文件 二.配置 OpenSSH 服务端 1.配置文件常用设置选项 2.AllowUs ...

  6. Linux远程访问及控制(SSH、TCP Wrappers 访问控制)

    Linux远程访问及控制 一.SSH远程管理 1.SSH定义 2.SSH数据传输优点 3.SSH客户端和服务端 二.OpenSSH 1.配置OpenSSH 服务端配置 2.scp远程复制 3.sftp ...

  7. 远程访问及控制(详解)——SSH远程管理及TCP Wrappers 访问控制

    远程访问及控制(详解)--SSH远程管理及TCP Wrappers 访问控制 一.SSH远程管理 1.定义 2.优点 3.客户端与服务端 4.SSH服务的开启.端口号和配置文件 二.配置 OpenSS ...

  8. centos 7.6 ——远程访问及控制——(ssh密钥登录、ssh客户端、TCP Wrappers)

    远程访问及控制 文章目录 远程访问及控制 一.ssh基本配置 1. 允许root登录 2. 禁止root远程登录 **注意 3. DenyUsers 黑名单的使用 4. AllowUsers 白名单使 ...

  9. Linux 远程访问及控制

    Linux 远程访问及控制 文章目录 Linux 远程访问及控制 引言: 一.SSH远程管理 1.SSH是什么: 2.SSH客户端与OpenSSH服务端 3.SSH服务配置 4.SSHD服务端的功能 ...

最新文章

  1. 深度学习的多个 loss 是如何平衡的?
  2. 网络编程学习笔记(Unix域套接口地址)
  3. UA OPTI501 电磁波 Lorentz Oscillator Model 3 相速度与群速度
  4. Validate使用及配置
  5. matlab中的种子数seed,set.seed()设置种子到底是啥作用?
  6. 24期分期免息可以提前还吗?
  7. python 中统计超大文件行数
  8. android listview 数据混乱,求解,listView里面嵌套listView数据显示混乱
  9. pythonlambda多行_Python中通过lambda抛异常的奇迹淫巧
  10. 运行ug软件需要什么样的配置?
  11. MySQL数据库中主键和候选键的区别?
  12. 《专业创新实践Ⅱ》大作业 LeNet在眼疾识别数据集iChallenge-PM上的应用
  13. 分享个网站首页弹窗代码
  14. 哥德巴赫猜想python
  15. 1.19.10.Flink SQL工程案例\Flink批式处理\自定义函数\Window窗口计算\将DataSet数据转成Table数据\将Table数据转成DataSet等
  16. 难难难!如何求图的某一顶点到其他顶点最短距离?迪杰斯特拉Dijkstra和弗洛伊德Floyd要上场了
  17. OpenCV开发笔记(五十二):红胖子8分钟带你深入了解直方图对比匹配(图文并茂+浅显易懂+程序源码)
  18. flv视频转换成mp4格式怎么转?
  19. 巴别塔圣经_承认巴别塔
  20. 澳洲值得代购物品汇总

热门文章

  1. nginx和ftp搭建图片服务器
  2. 爬取王者荣耀皮肤-点券领取
  3. 阿里云云效平台配置持续集成--java篇
  4. 信号处理之FIR数字滤波器(Matlab仿真)
  5. 网易云音乐APP(基于APICloud平台)
  6. 数值图形处理软件活图简介
  7. UI设计中聊天气泡框的设计技巧
  8. 面试被HR问:你有什么优缺点,该如何作答
  9. NB-IoT和eMTC对比
  10. 如何安装KEIL并配置好51与STM32的环境