文章目录

  • 一、SSH远程管理
    • 1、SSH的概述
  • 二、OpenSSH服务器
  • 三、配置OpenSSH服务器
    • 3.1、sshd_ config配置文件的常用选项设置
    • 3.2、实例操作:配置文件的常用选项
    • 3.3、sshd服务支持登录验证方式有:密码验证和密钥对验证,可以设置只使用其中一种,也可以都启用
  • 四、使用SSH客户端程序
    • 4.1、ssh 远程登录
    • 4.2、 scp远程复制
    • 4.3、sftp 安全FTP
    • 4.4、实例操作
      • 4.4.1 scp远程复制
      • 4.4.2 sftp
  • 五、配置密钥对验证
    • 5.1、在客户端创建密钥对
    • 5.2、将公钥文件.上传至服务器
    • 5.3、在服务器中导入公钥文本
    • 5.4、在客户端使用密钥对验证、在客户机设置ssh代理功能,实现免交互登录
  • 六、实例操作:配置密钥对验证
    • 6.1 方法一:将公钥上传至服务器,并在服务器导入公钥文本
    • 6.2 方法二:将公钥直接导入到服务器中
  • 七、TCP Wrappers访问控制
    • 7.1、TCP Wrappers (TCP封套 )
    • 7.2、TCP Wrappers 保护机制
    • 7.3、TCP Wrappers的访问策略
    • 7.4、格式:<服务程序列表>:<客户端地址列表>
    • 7.5、TCPWrappers机制的基本原则:
  • 八、实例操作
  • 九、总结

一、SSH远程管理

1、SSH的概述

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

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

  • 与早期的Telnet(远程登录)、rsh(远程执行命令)、rcp(远程文件控制)等相比,SSH协议提供了更好的安全性

  • SSH客户端: Putty、 Xshell、 CRT

  • SSH服务端: OpenSSH

✔ 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服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件

二、OpenSSH服务器

1、 SSH (Secure Shell)协议
• 是一种安全通道协议
• 对通信数据进行了加密处理,用于远程管理
2、OpenSSH
• 服务名称: sshd
• 服务端主程序: /usr/sbin/sshd
• 服务端配置文件: /etc/ssh/sshd_ config

三、配置OpenSSH服务器

3.1、sshd_ config配置文件的常用选项设置

vim /etc/ssh/sshd_config                    #服务端配置文件
#Port 22                        #监端口为22
#AddressFamily any                  #监听地址为任意网卡,也可以指定Openssh服务器的具体ip
#LoginGraceTime 2m                  #登录验证时间为2分钟
#PermitRootLogin yes                        #禁止root用户登录
#MaxAuthTries 6                     #最大重试次数为 6
#PermitEmptyPasswords no                    #禁止空密码用户登录
#UseDNS no                          #禁用DNS反向解析,以提高服务器的响应速度
----------------------------------------------------------------------------------
配置允许和禁止用户登录:加@表示限制ip,注意允许和禁止不要同时使用!!
AllowUsers zhangsan                 #允许zhangsan登录(多个用户以空格间隔)
AllowUsers zhangsan@192.168.80.80                   #只允许zhangsan通过192.168.80.80登录
DenyUsers lisi                      #禁止lisi登录

3.2、实例操作:配置文件的常用选项

1 更改端口号(默认是22),指定端口登录


2 设置不允许root用户登录


3 设置只允许lili、lulu用户登录,且其中lili用户仅能够从192.168.229.10的主机远程登录



3.3、sshd服务支持登录验证方式有:密码验证和密钥对验证,可以设置只使用其中一种,也可以都启用

2.1 密码验证:
以服务器中本地系统用户的登录名称、密码进行验证。

这种方式使用最为简便,但从客户机角度来看,正在连接的服务器有可能被假冒,从服务器角度来看,当遭遇密码暴力破解攻击时防御能力比较弱。

2.2 密钥对验证:
要求提供相匹配的密钥信息才能通过验证,通常先在客户机中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中的指定位置。

远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,增强了远程管理的安全性。

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

公钥和私钥要配对使用,如果用公钥对数据进行加密,只有用相对应的私钥才能解密;如果用私钥对数据进行加密,那么只有对应的公钥才能解密。

当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。

对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可以。
可根据实际情况设置验证方式:

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

四、使用SSH客户端程序

4.1、ssh 远程登录

ssh [选项] lili@192.168.229.10

当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入"yes")后才能继续验证。

接收的密钥信息将保存到~/.ssh/known_hosts文件中。密码验证成功以后,即可登录目标服务器的命令行环境中了

ssh [选项] zhangsan@192.168.229.10 #指定登录用户、目标主机地址作为参数 ssh -p 20 zhangsan@192.168.229.10 #-p为指定端口

4.2、 scp远程复制

复制多个文件时,中间用空格间隔

如果对方有相同的文件名,则会覆盖原文件

2.1 下行复制

scp root@192.168.229.20:/etc/passwd /root/passwd10. txt
#将远程主机中的/etc/passwd文件复制到本机

2.2 上行复制

scp -r /etc/ssh/root@192.168.229.30:/opt    #复制目录时要加-r
#将本机的/etc/ssh目录复制到远程主机

4.3、sftp 安全FTP

由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。操作语法sftp与ftp几乎一样

sftp root@192.168.229.30
Connecting to 192.168.229.30...
tsengyia@172.16.16.22's password:
#输入密码sftp> ls
sftp> get文件名
#下载文件到ftp目录
sftp> put文件名.
#_上传文件到ftp目录
sftp> quit
#退出.

4.4、实例操作

4.4.1 scp远程复制

1.下行复制
2.上行复制

4.4.2 sftp


五、配置密钥对验证

5.1、在客户端创建密钥对

通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等 ( ssh- keygen命令的“-t”选项用于指定算法类型

首先创建账户:admin
useradd admin                                   #创建新用户
echo "123456" | passwd --stdin admin                                    #设置密码
su admin                                    #切换到admin用户ssh-keygen -t ecdsa                             #使用ssh-keygen进行加密
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_ecdsa):        #指定私钥位置,回车选择默认
Created directory '/home/admin/.ssh'.                           #告诉我们生成的密钥对存放在目录中的隐藏目录.ssh、下
Enter passphrase (empty for no passphrase):                  #设置私钥的密码
Enter same passphrase again:                            #再次确认ls -l ~/.ssh/id_ecdsa*                                  #可以查看到生成的密钥对文件
/home/admin/.ssh/id_ecdsa                               #这是私钥文件,权限默认为600
/home/admin/.ssh/id_ecdsa.pub                           #这是公钥文件,用来提供给SSH服务器

5.2、将公钥文件.上传至服务器

scp ~/.ssh/id_ecdsa.pub root@192.168.80.80:/opt         #将自己的公钥文件上传到服务器的opt目录下
或
cd ~/.ssh                                   #切换到密钥对所在目录,此方法在服务端创建好zhangsan用户,使用此方法直接跳过第三步
ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.229.10     #这个方法可以直接在服务的/home/zhangsan/,ssh/目录中导入公钥文本 

5.3、在服务器中导入公钥文本

useradd zhangsan                                        #添加新用户zhangsan
echo "123456" | passwd -- stdin zhangsan                                        #设置密码
mkdir /home/zhangsan/.ssh/                                      #创建zhangsan的.ssh目录
cat /opt/id_ecdsa.pub >> /home/zhangsan/.ssh/authorized_keys                                  #将从客户端接受的公钥导入到zhangsan的公钥库中
cat /home/zhangsan/.ssh/authorized_keys                                         #使用cat命令进行查看确定  

5.4、在客户端使用密钥对验证、在客户机设置ssh代理功能,实现免交互登录

ssh zhangsan@192.168.229.20                             #使用密钥进行远程连接验证
Enter passphrase for key '/home/admin/.ssh/id_ecdsa':                                   #输入私钥的密码进行验证
exit                                            #退出服务器端
ssh-agent bash                                      #对客户机设置ssh代理功能,实现面交互登录
ssh-add
Enter passphrase for /home/admin/.ssh/id_ecdsa:                                 #输入私钥进行确定
ssh zhangsan@192.168.80.80                              #再次远程连接服务器的时候无需输入密码 

六、实例操作:配置密钥对验证

6.1 方法一:将公钥上传至服务器,并在服务器导入公钥文本

6.1.1.在客户端创建密钥对:


6.1.2.将公钥文件上传至服务器


6.1.3.在服务器中导入公钥文本

6.1.4.在客户端使用密钥对验证

6.2 方法二:将公钥直接导入到服务器中

6.2.1 在客户端创建密钥对:

6.2.2 将公钥直接导入到服务器中

6.2.3.在客户端使用密钥对验证


6.2.4.在客户机设置ssh代理功能,实现免交互登录

七、TCP Wrappers访问控制

7.1、TCP Wrappers (TCP封套 )

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

• 大多数Linux 发行版,TCP Wrappers 是默认提供的功能。rpm -q tcp_wrappers

7.2、TCP Wrappers 保护机制

两种实现方式:

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

7.3、TCP Wrappers的访问策略

• TCPWrappers机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制

• 对应的两个策略文件为/etc/hosts.allow和/etc/hosts .deny,分别用来设置允许和拒绝的策略

7.4、格式:<服务程序列表>:<客户端地址列表>

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

4.2 客户端地址列表
• ALL:代表任何客户端地址
• LOCAL:代表本机地址

多个地址以逗号分隔:

允许使用通配符“*" 和“?" ,前者代表任意长度字符,后者仅代表一个字符

网段地址:如“192. 168.80.”或者192. 168.80.0/255.255.255.0

区域地址:如". benet.com"匹配benet.com 域中的所有主机

7.5、TCPWrappers机制的基本原则:


• 首先检查/etc/hosts.allow文件, 如果找到相匹配的策略,则允许访问

• 否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问

• 如果检查上述两个文件都找不到相匹配的策略,则允许访问

“允许所有,拒绝个别”——黑名单
只需在/etc/hosts.deny文件中添加相应的拒绝策略(系统默认的就是允许所有)

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

八、实例操作

实例一:设置黑名单,不允许IP地址为192.168.229.10的主机访问sshd服务,其他都可以访问



实例二:设置白名单,只允许192.168.229.10的主机访问ssh服务

九、总结

1、ssh服务器的配置文件以及所在的位置
ssh_config:客户端的配置文件;位置:/etc/ssh/ssh_config

sshd_config:服务端的配置文件;位置:/etc/ssh/sshd_config

2、ssh服务器客户端的功能
远程登录:ssh 用户名@IP地址

复制:scp (注意主机IP后面要加冒号,复制目录时加-r)

sftp:格式跟ftp相同(上传文件和下载文件功能)

3、配置密钥对验证
流程:

在客户端创建密钥对(有公钥文件和私钥文件)

将公钥文件上传到服务器(有两种方法:一种是远程复制到服务器中,再将服务器端导入私钥文件到公钥本中;另一种方法是直接在客户端导入,服务端直接使用即可)

最后在客户端进行密钥对验证,还可以设置免密登录(ssh-agent bash 、ssh add)

4、TCP wrappers
两种访问策略文件:/etc/hosts.allow 、/etc/hosts.deny

访问的过程:先检查/etc/hosts.allow文件,有则访问,无则继续访问/etc/hosts.deny文件,若有则拒绝,无则允许访问

文件设置的格式:服务程序:服务端地址 如,sshd:192.168.229.20

SSH远程访问及控制——远程登录服务器并传输数据相关推荐

  1. linux启动本地远程服务,如何使用SSH在本地控制远程服务器执行命令

    通过SSH在本地控制远程服务器执行命令,如果每次都要登录到远程服务器真的好麻烦,起始通过SSH就可以远程执行 在本地使用 ssh $RemoteNode    可以在执行远程机器上的命令,例如 ssh ...

  2. Java使用Ganymed SSH远程登录服务器并读取文件

    Java使用Ganymed SSH远程登录服务器并读取文件 导入jar包,或配置依赖 <-- ganymed-ssh2-build210.jar --> <dependency> ...

  3. XManager5 ssh远程登录服务器工具xshell ,服务器资源上传下载工具xftp

    XManager5 网盘下载 链接:https://pan.baidu.com/s/1t1wL3xnsucoP6hDnP30INA 提取码:9cq3 安装后 打开 ssh 远程登录服务器工具 xshe ...

  4. SSH远程访问以及控制

    SSH远程访问以及控制 一.SSH远程管理基本简介 二.OpenSSH服务端相关配置 三.SSH客户端程序的登录以及使用 -登录验证方式 -SSH客户端程序的使用 (1)ssh远程登录: (2)scp ...

  5. 技术漫谈 | 远程访问和控制云端K8S服务器的方法

    对于部署在云端的K8S容器编排系统,可以先通过SSH远程登录到K8S所在主机,然后运行kubectl命令工具来控制K8S服务系统.然而,先SSH登录才能远程访问的二阶段方式,对于使用Linux桌面或者 ...

  6. 怎么修改登录服务器的权限,远程登录服务器权限怎么设置

    远程登录服务器权限怎么设置 内容精选 换一换 云服务器网络异常.防火墙未放行本地远程桌面端口.云服务器CPU负载过高等问题均可能导致云服务器无法正常登录.本节操作介绍无法登录Windows弹性云服务器 ...

  7. SSH远程访问及控制

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

  8. 远程服务器登入信息,远程登录服务器查看信息

    远程登录服务器查看信息 内容精选 换一换 云堡垒机与LDAP服务器对接,认证登录系统的用户身份.本小节主要介绍如何配置LDAP域认证模式.不支持一键同步LDAP服务器用户.不能添加两个相同的LDAP配 ...

  9. 实验四:Telnet远程登录服务器的安装、管理及Telnet客户端的应用

    实验四:Telnet远程登录服务器的安装.管理 及Telnet客户端的应用 一.       实验目的 1.掌握Telnet远程登录服务器的安装.使用和配置: 2.熟悉Telnet客户端使用方法. 二 ...

最新文章

  1. Java 技术篇-java连接并操作数据库实例演示,执行查询、插入、更新和删除操作
  2. java spring 上传图片,springboot 上传图片并回显
  3. Solution : Cannot add new node – Rule SQL Server Database Services feature state failed.
  4. What can Lines3D Class do?
  5. C++中的namespace ----转载
  6. java 注解应用技巧_改善Java应用程序性能的快速技巧
  7. java查看jdk源码_Java-如何查看JDK源码
  8. 如何用栈实现浏览器的前进和后退?
  9. GBTC负溢价扩大至20.44%,创下历史新低
  10. jquery html dom方式创建新html元素
  11. iOS:懒加载符号绑定流程
  12. 还需要注册的是我们还有一个是“交差集” cross join, 这种Join没有办法用文式图表示,因为其就是把表A和表B的数据进行一个N*M的组合,即笛卡尔积。表达式如下:...
  13. sd卡umount时busy解决方法
  14. flv格式转换为mp4(ffmpeg)
  15. java学习笔记(22)java输入标签,单选框,复选框,添加文件,文本域,下拉框
  16. CSS 网页弹出微信二维码
  17. 4G+5G多卡聚合智能融合通信
  18. Pytorch——如何创建一个tensor与索引和切片(二)
  19. android设备之间屏幕共享
  20. 用Arduino读取HX711应变片专用模块

热门文章

  1. Django 使用手册
  2. 2018软工实践第六次作业
  3. (原创)无废话C#设计模式之四:Factory Method
  4. 公司只发你工资不发你工资条可以吗?
  5. 爬山算法 求解 最小“球”覆盖 POJ 2069 /2018 南京现场D
  6. 社交电商新零售是什么模式,社交电商新零售的优势
  7. 中国厨房更净一步:一场科技“下凡”带来的方太式浪漫
  8. Anaconda下安装opencv
  9. 服装店收银系统如何设置小票内容?
  10. JavaScript的本地存储和会话存储