文章目录

  • 一、什么是ssh
  • 二、ssh的登录验证模式
    • 2.1 账户密码验证:
    • 2.2 密钥对验证:
  • 三、配置ssh服务
    • 3.1 环境准备
    • 3.2 用户密码验证
    • 3.3 密钥对验证
    • 3.4 禁止使用密码登录
    • 3.5 禁止使用root远程登录
    • 3.6 修改默认端口、限制ssh监听IP
  • 四、ssh服务相关命令
    • 4.1 scp:安全的远程文件复制命令
    • 4.2 sftp:安全的文件传输协议
  • 五、TCP Wrappers(简单防火墙)
    • 5.1 TCPWrappers 简介
    • 5.2 TCPWrappers 工作原理
    • 5.3 TCPWrappers 的使用

一、什么是ssh

ssh是Secure Shell 的缩写,是一个建立在应用层上的安全远程管理协议。ssh是目前较为可靠的传输协议,专为远程登录会话和其他网络服务提供安全性。利用ssh协议可以有效防止远程管理过程中的信息泄露问题。ssh可用于大多数UNIX和类UNIX操作系统中,能够实现字符界面的远程登录管理,它默认使用22端口,采用密文的形式在网络中传输数据,相对于通过明文传输的Telnet协议,具有更高的安全性

二、ssh的登录验证模式

ssh提供了基于账户密码(口令)密钥对两种登录验证方式,这两者都是通过密文传输数据的。

2.1 账户密码验证:

账户密码登录认证过程中传输的是用户的账户名和密码,密码具有足够的复杂度才能具有更高的安全性。Linux主机之间的远程管理工具是ssh命令,所以我们直接使用ssh进行远程登录

格式:

[root@localhost ~]$ ssh 用户名@IP地址
[root@localhost ~]$ ssh root@192.168.137.20

windows远程登录Linux主机一般使用第三方工具,比如Xshell等工具

2.2 密钥对验证:

  1. 首先需要在Client上创建一对密钥,并且需要把公钥放在需要访问的Server上
  2. 当Client需要连接Server时,Client端的软件就会向Server端发出登录请求,请求使用密钥对中的的公钥进行安全验证
  3. Server收到请求之后,会在该用户的家目录下查询公钥文件,拿Client发送过来的公钥和自己家目录下的公钥进行比较
  4. 如果两个公钥一致,Server就用公钥加密“challenge(质疑)”,并把它发送给Client软件。Client收到加密内容之后,使用本地的私钥进行解密,再把解密结果发送给Server端,Server端验证成功后,允许登录

注意:若第3个步骤对比结果失败,则Server端会通知Client端此公钥未在本机注册,无法验证登录

三、配置ssh服务

准备好两台Linux操作系统的主机,配置好相关网络参数,实现可以正常通信,并将主机名修改为不同的名字

[root@localhost ~]$ sysctl kernel.hostname=centos6.81
[root@localhost ~]$ sysctl kernel.hostname=centos6.82

3.1 环境准备

Centos6
临时关闭防护功能:

[root@localhost ~]$ iptables -F  #清空防火墙规则
[root@localhost ~]$ setenforce 0  #临时关闭SELinux

永久关闭防护功能:

[root@localhost ~]$ chkconfig iptables off #设置防火墙开机不自启动[root@localhost ~]$ sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config  #永久关闭SELinux[root@localhost ~]$ getenforce  #查看SELinux[root@localhost ~]$ reboot

3.2 用户密码验证

Linux主机之间的远程管理工具是ssh命令,所以我们直接使用ssh进行远程登录

格式:

[root@localhost ~]$ ssh 用户名@IP地址
[root@localhost ~]$ ssh root@192.168.137.21

windows远程登录Linux主机一般使用第三方工具,比如Xshell等工具

格式:

[root@localhost ~]$ ssh root@192.168.137.21

3.3 密钥对验证

Linux主机之间的密钥对登录验证
一个服务器可以保存多个客户端的公钥

  1. 客户端生成密钥对文件
[root@localhost ~]$ ssh-keygen -t rsa -b 2048
-t指定加密类型(rsa/dsa等)
-b指定密钥对加密长度

询问1:执行过程中会询问保存位置?
一般默认保存在当前用户家目录下的.ssh/目录下

询问2:是否对密钥文件进行加密?
    加密:若加密,则在调用密钥文件时需要先验证密钥的密码,密码正确才能使用密钥文件
     不加密:若不加密,则密钥文件可以直接被调用,整个登录验证过程无需输入任何密码,即为免密登录

  1. 将公钥文件上传至服务器端
  [root@localhost ~]$ ssh-copy-id 用户名@服务器IP地址   #该用户名和要用来登录服务器的用户名一致
  1. 客户端尝试登录服务器
  [root@localhost ~]$ ssh用户名@服务器IP地址  #密钥对验证优先级大于账户密码验证

Windows使用密钥对登录Linux

  1. 使用Xshell自带的密钥对生成向导生成密钥对

  1. 将公钥导入Linux主机的指定用户下的指定公钥配置文件内,后面用哪个用户登录就放在谁家里,这里我们先用root用户做实验在root家目录下,找到.ssh目录,然后在里面创建authorized_keys文件,并且将公钥写入进去

  2. 使用windows尝试登录指定用户

3.4 禁止使用密码登录

当我们学会了使用密钥对进行验证后,建议生产环境下将账户密码登录功能关掉配置文件:/etc/ssh/sshd_config

[root@localhost ~]$ vim /etc/ssh/sshd_config
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no #yes
...[root@localhost ~]$ service sshd restart

注意:ssh的配置文件中,并不是注释掉的就是不生效的,有些是默认生效,需要修改时一定要取消注释再修改

3.5 禁止使用root远程登录

root在系统中是一个可以为所欲为的角色,我们可以在平时的操作中用普通用户操作,在有需要修改一些系统设置的时候再从普通用户切换到root用户,这样可以最大限度的避免因为误操作而对系统造成破坏,同时也可以避免黑客在暴力破解后直接使用root用户登录系统,一般在远程登录管理上我们会禁止直接使用root用户登录配置文件:/etc/ssh/sshd_config

[root@localhost ~]$ vim /etc/ssh/sshd_config
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10...

3.6 修改默认端口、限制ssh监听IP

修改默认端口: ssh 作为一个用来远程管理服务器的工具,需要特别的安全,默认情况下使用TCP的22端口,若不进行修改,很容易被利用遭到攻击,所以我们一般都会修改端口,尽量修改一个高位端口(范围1-65535)配置文件:/etc/ssh/sshd_config

[root@localhost ~]$ vim /etc/ssh/sshd_config
Port 59527
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
...[root@localhost ~]$ ssh -p 端口 用户名@服务器IP[root@localhost ~]$ netstart -antp  #查看端口

限制ssh监听IP: 有些服务器则安全级别更高一些,不允许使用外网直接登录,只有通过局域网才能登录,我们可以在机房里设置其中一台能够被外网远程连接,其他的主机都通过这个机器进行远程连接即可配置文件:/etc/ssh/sshd_config

[root@localhost ~]$ vim /etc/ssh/sshd_config
Port 59527
#AddressFamily any
ListenAddress 192.168.137.21
#ListenAddress ::
...

四、ssh服务相关命令

4.1 scp:安全的远程文件复制命令

scp是 secure copy 的简写,用于在Linux下进行远程拷贝文件的命令,类似于命令有cp,scp传输是加密的,所以可能会稍微影响一点速度。另外,scp还非常不占资源,不会提高多少系统负荷

本地文件复制到远程服务器
格式:
scp [-P 端口]本地文件 用户名@服务器IP:远程服务器目标文件名(绝对路径)

[root@localhost ~]$ scp[-P 端口] 本地文件 用户名@服务器IP:远程服务器目标文件名(绝对路径)
[root@localhost ~]$ scp/root/demo.txt root@192.168.137.20:/tmp   #上传到服务器
[root@localhost ~]$ scp root@192.168.137.20:/tmp/demo.txt /root/  #下载到本地
-P 端口
#若端口不是默认22,则需要使用-P 端口指定端口

4.2 sftp:安全的文件传输协议

sftp是Secure FileTransferProtocol 的缩写,安全文件传送协议。sftp与ftp有着几乎一样的语法和功能。由于这种传输方式使用了加密/解密技术,所以sftp比ftp更安全一些,但传输效率比普通的FTP要低得多

格式:
sftp 用户名@服务器IP

[root@localhost ~]$ sftp [-oPort=端口] 用户名@服务器IP
[root@localhost ~]$ sftp root@192.168.137.20
sftp>
sftp>#若端口不是默认22,则需要使用-oPort=端口指定端口交互命令:help:查看在交互模式下支持哪些命令pwd/lpwd:pwd是查看服务器所在路径;lpwd是查看客户端所在路径ls/lls:ls是查看服务器当前目录下的文件列表;lls是查看客户机当前所在路径的所有文件列表put path:将客户机中的指定文件上传到服务器端get path:将服务器端的指定文件下载到客户机的当前所在目录rm path:删除掉服务器端的指定文件quit:退出sftp的交互模式,断开和服务器之间的连接

五、TCP Wrappers(简单防火墙)

5.1 TCPWrappers 简介

TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接(TCP)的特定服务进行安全检测并实现访问控制,界定方式是凡是调用libwrap.so库文件的的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet

判断方式:

  1. 查看对应服务命令所在位置
[root@localhost ~]$ which sshd
  1. 查看指定命令执行时是否调用libwrap.so文件
[root@localhost ~]$ ldd /usr/sbin/sshd | grep libwrap.so

5.2 TCPWrappers 工作原理

以ssh为例,每当有ssh的连接请求时,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。

  1. 优先查看hosts.allow,匹配即停止
  2. 允许个别,拒绝所有:hosts.allow文件添加允许的策略,hosts.deny文件添加all
  3. 拒绝个别,允许所有:hosts.allow文件为空,hosts.deny文件添加单个拒绝的策略

5.3 TCPWrappers 的使用

TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow, /etc/hosts.deny,以此实现访问控制,默认情况下,/etc/hosts.allow,/etc/hosts.deny什么都没有添加,此时没有限制

配置文件编写规则:

service_list@host: client_list
service_list: 是程序(服务)的列表,可以是多个,多个时,使用,隔开
@host: 设置允许或禁止他人从自己的哪个网口进入。这一项不写,就代表全部
client_list: 是访问者的地址,如果需要控制的用户较多,可以使用空格或,隔开

格式如下:

基于IP地址:192.168.137.1 192.168.137.
基于主机名:www.atguigu.com .atguigu.com 较少用
基于网络/掩码:192.168.0.0/255.255.255.0
内置ACL:ALL(所有主机)、LOCAL(本地主机)

案例:

拒绝单个IP使用ssh远程连接:

配置文件:
hosts.allow:空着
hosts.deny:sshd:192.168.137.20[root@localhost ~]$ vim /etc/hosts.deny
sshd:192.168.137.20

拒绝某一网段使用ssh远程连接:

配置文件:
hosts.allow:空着
hosts.deny:sshd:192.168.137.[root@localhost ~]$ vim /etc/hosts.deny
sshd:192.168.137.

仅允许某一IP使用ssh远程连接:

配置文件:
hosts.allow:sshd:192.168.137.20
hosts.deny:sshd:ALL[root@localhost ~]$ vim /etc/hosts.allow
sshd:192.168.137.20
[root@localhost ~]$ vim /etc/hosts.deny
sshd:all

ssh 安全远程管理相关推荐

  1. 路由器开启ssh实现远程管理

    ssh[secure shell]:安全的远程控制协议,端口号 tcp 22 特点:传输数据进行加密传输 aaa:authentication authority account    认证  授权 ...

  2. H3C SSH远程管理登录配置

    一. SSH简介 SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议.SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止 ...

  3. SSH服务如何远程管理RHEL 5

    Linux提供了多种方式让用户进行远程管理,如Telnet,它的基本应用就是提供远程管理,共享远程系统中的资源.Telnet使用户坐在自己的电脑前通过网络进入另一台电脑,并把用户输入的每个字符传递给主 ...

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

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

  5. Linux SSH远程管理故障如何排查?

    SSH远程管理故障排查方案: 1.检测两个机器是否畅通 两个机器之间是否畅通,查看物理链路是否有问题(网线网卡.IP是否正确) 第1步:物理链路是否畅通,比喻为"高速公路是否畅通" ...

  6. Linux远程管理协议(RFB、RDP、Telnet和SSH)

    提到远程管理,通常指的是远程管理服务器,而非个人计算机.个人计算机可以随时拿来用,服务器通常放置在机房中,用户无法直接接触到服务器硬件,只能采用远程管理的方式. 远程管理,实际上就是计算机(服务器)之 ...

  7. Linux系统学习 八、SSH服务—SSH远程管理服务

    1.SSH简介 ssh(安全外壳协议)是Secure Shell的缩写,是建立在应用层和传输层基础上的安全协议.传输的时候是经过加密的,防止信息泄露,比telnet(明文传递)要安全很多. ftp安装 ...

  8. SSH远程管理OpenSSH使用

    SSH(secure shell)是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能.SSH协议对于通信双方的数据传输进行了加密处理,其中包括你用户登录时输入的用户口令.与早期的tel ...

  9. SSH远程管理、参数讲解、xshell使用、scp,sftp,ssh命令(ssh两种方式的密钥验证方...

    1.SSH远程管理 SSH(Secure Sheel)是一种安全通道协议,主要用于实现字符界面的远程登录.远程复制等功能.SSH协议对通信双方的数据传输进行了加密处理,其中包括用户的口令.与早期的TE ...

最新文章

  1. 如何画出漂亮的神经网络图?神经网络可视化工具集锦搜集
  2. 【NOIP2015】斗地主 题解
  3. [Codevs] 1001 舒适的路线
  4. 学习Kotlin(五)函数与Lambda表达式
  5. nlv sqlserver_未能使用提供程序“DataProtectionConfigurationProvider”进行解密。提供程序返回错误消息为: 该项不适于在指定状态下使用...
  6. ‘a’、“a”、‘abc’和“abc”的区别
  7. 如何让百度第一时间收录你的网站
  8. 6-7 使用函数输出水仙花数_「Java」再议printf函数
  9. 利用Python我发现我女朋友每天都在看这种网站
  10. 使用组策略禁止域用户运行特定软件名称的程序
  11. verify code
  12. oracle数据库王珊,数据库系统概论 王珊 教材部分总结
  13. win10电脑IIS服务器配置ASP环境
  14. js调用原生android应用的方法
  15. 网络服务器充斥大量信息,使网络服务器中充斥着大量要求回复的信息,消耗带宽,导致网络或系统停止正常服务,这属于什么攻 - 普法考试题库问答...
  16. 阿尔克分享平面设计的基本常识,以及ps软件小知识
  17. 数独问题每行每列每3X3
  18. 洛谷 P4408 [NOI2003] 逃学的小孩(树的直径)
  19. 技术管理进阶——总监以上一定要会经济学
  20. Kotlin协程序列:

热门文章

  1. R语言dataframe获取每个字段(特征)的数据类型实战:使用sapply函数获取每个字段(特征)的数据类型、通过柱状图可视化特征的种类以及个数
  2. 胡想——对机器人控制体系的一些想法
  3. 如何配置jdk环境变量
  4. 生物信息学常见数据格式 • fasta • fastq • gff/gtf
  5. linux进程间通讯-消息队列
  6. java 庖丁解牛api_Java Restful API Best Practices
  7. 交换友链的几个技巧!
  8. 大数据分布式集群搭建(7)
  9. 目标检测--Beyond Skip Connections: Top-Down Modulation for Object Detection
  10. C++ 面试题:子类与父类同名变量