文章目录

  • 前言
  • 一、SSH数据传输原理
  • 二、SSH远程管理
    • 1、使用SSH客户端程序
    • 2、OpenSSH服务
      • SSH(Secure Shell)协议
      • OpenSSH
      • 服务监听选项
  • 三、SSH远程登录方式
    • 方法一
    • 方法二
    • 故障集
      • 问题
      • 原因
      • 解决方案
      • 实例操作
  • 四、scp远程复制
    • 1、从本地复制文件到服务器上
    • 2、复制服务器的文件到本地
    • 3、复制本地目录到服务器上
  • 五、sftp安全性传输
  • 六、SSH服务配置
    • 1、安全调优
    • 2、SSH服务验证方式
      • 2.1密码验证
      • 2.2秘钥验证
      • 2.2密钥对构建
  • 七、TCP wrappers 控制访问
  • 总结

前言

SSH (Secure Shell) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议。


一、SSH数据传输原理

SSH客户端与服务端是通过网络来进行数据文件传输的,数据传输是加密的,可以防止信息泄露,数据传输是压缩的,可以提高传输速度。

SSH客户端: Putty、Xshell、CRT、MobaXterm、 FinalShell
SSH服务端: OpenSSH
OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux 操作系统。
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
执行"systemctl start sshd" 命令即可启动sshd服务
sshd服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
sshd服务的默认配置文件是/etc/ssh/sshd_ config
ssh_ configsshd_ config(服务端比较多) 都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
ssh服务端主要包括两个服务功能ssh远程链接和sftp服务
作用:SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件。
相比较之前用Telnet 方式来传输文件要安全很多,因为Telnet使用明文传输,SSH 是加密传输。


二、SSH远程管理

1、使用SSH客户端程序

ssh 命令       #远程安全登录
scp 命令      #远程安全复制
sftp 命令 #安全FTP上下载

2、OpenSSH服务

SSH(Secure Shell)协议

  • 是一种安全通道协议
  • 对通信数据进行了加密处理,用于远程管理

OpenSSH

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

OpenSSH常用配置文件有两个/etc/ssh/ssh_ config和/etc/sshd_ config
ssh_ config: 为客户端配置文件,设置与客户端相关的应用可通过此文件实现
sshd_config:为服务器端配置文件,设置与服务端相关的应用可通过此文件实现

服务监听选项

  • 端口号、协议版本、监听IP地址
  • 禁用反向解析

三、SSH远程登录方式

方法一

ssh [远程主机用户名] @[远程服务器主机名或IP地址] -p port

当在Linux主机上远程连接另一台Linux 主机时,如当前所登录的用户是root 的话,当连接另一a台主机时也是用
root用户登录时,可以直接使用ssh
IP端口默认即可,如果端口不是默认的情况下,需要使用-p指定端口
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分
解却极其困难,因此可以将乘积公开作为加密密钥

方法二

ssh -l [远程主机用户名] [远程服务器主机名或IP地址] -p port
-l:-l 选项,指定登录名称。
-p:-p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p指定端口进行登录)

故障集

问题

在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登陆会被禁止,并弹出如下类似提示:

ssh会把你每个你访问过计算机的公钥(publickey)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpensSH会核对公钥。如果公钥不同,openSSH会发出警告,避免你受到DNS Hijack之类的攻击。

原因

一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容

解决方案

  1. 使用ssh连接远程主机时加上"-o strictHostKeyChecking=no"的选项,如下:
    ssh -o StrictHostKeyChecking=no 192.168.xxx.xxx
  2. 一个彻底去掉这个提示的方法是,修改/etclssh/ssh_config文件(或$HOME/.ssh/config)中的配置,添加如下两行配置:
    strictHostKeyChecking no
    UserKnownHostsFile /dev/null

实例操作

rpm -qa | grep openssh       #过滤查询openssh的软件包信息

vim /etc/ssh/sshd_config     #配置服务端的配置文件





四、scp远程复制

scp(secure copy)使用于Linux环境系统下的远程拷贝文件的命令,且是scp加密传输的

1、从本地复制文件到服务器上

 scp passwd root@192.168.223.33:/home/  #将passwd文件复制到192.168.223.33的home目录下


2、复制服务器的文件到本地

scp root@192.168.223.17:/home/test.txt ./   #远程复制服务器上的指定文件到当前目录

3、复制本地目录到服务器上

scp -r root@192.168.223.17:/home/bak ./ #复制目录的话需要带上参数-r


五、sftp安全性传输

sftp是安全文件传送协议,可以为传输文件提供一种安全的网络的加密方法
sftp与ftp有着几乎一样的语法和功能。SFTP为SsH的其中一部分,其实在ssH软件包中,已经包含了一个叫作SFTP (Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本 身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全
性要求更高时,可以使用SFTP代替FTP

sftp root@192.168.223.33   #登陆到服务器
get                         #下载
get -r                      #下载目录
put                         #默认会上传到/root
help                        #查看sftp可使用的命令和用途
pwd                         #显示当前服务器所在位置
lpwd                        #显示当前主机位置

六、SSH服务配置

1、安全调优

Port 22                     #监听端口,默认22,为了安全可以更改为高位端口
ListenAddress 0.0.0.0      #监听地址,如果主机不需要从公网ssh访问,可以把监听地址改为内网地址
UseDNS yes                 #DNS反向解析(禁止会加快响应速度)
SyslogFacility AUTHPRIV    #用户登录的信息记录的类型为AUTHPRIV,sshd服务日志存放在: /var/1og/secure
AllowUsers  zhangbin       #只允许xiayan用户通过ssh登入,注:root用户不在名单中,也无法登入
DenyUsers   csdn           #拒绝csdn用户通过ssh登入;注:DenyUsers与AllowUsers不能同时使用
LoginGraceTime 2m          #登录时间限制2分钟,超时拒绝登录
PermitRootLogin yes        #是否允许root用户登入
PasswordAuthentication yes #密码验证登录
PermitEmptyPasswords no    #是否允许空密码用户登入
PrintLastLog yes           #显示上次登入信息
MaxAuthTries 6             #每个连接最大允许认证次数,若认证次数超过此数值一半,连接强制断开

2、SSH服务验证方式

2.1密码验证

对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户端角度来看,正在连接的服务器有可能被假冒;从服务器角度来看,当遭遇密码穷举(暴力破解)攻击时防御能力比较弱。同时:18位密码复杂性(大写、小写、字符、数字) 端口(1023以上叫做高危端口)

2.2秘钥验证

要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒,且可以免交互登录,在Shell 中被广泛使用。当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可启用。

2.2密钥对构建



七、TCP wrappers 控制访问

在Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如Samba、 BIND、HTTPD、 OpenSSH等TCP Wrappers 将TCP服务程序”包裹"起来,代为监听TCP服务程序的端口,增加了一“个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
访问控制的基本原则:
首先检查/etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问;否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;如果检查上述两个文件都找不到相匹配的策略,则允许访问。
“允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略
“允许个别,拒绝所有
除了在/etc/hosts .allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置"ALL:ALL"的拒绝策略。
tcp_wrappers 保护机制的两种实现方式

  • 直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
  • 由其他网络服务程序调用libwrap.so.* 链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。

使用ldd命令可以查看程序的链接库

[root@localhost ~]# rpm -q tcp_wrappers
tcp_wrappers-7.6-77.el7.x86_64        #系统默认安装###语法格式: <服务程序列表>: <客户端地址列表>
(1)服务程序列表ALL:代表所有的服务。单个服务程序:如“vsftpd" .多个服务程序组成的列表:如“vsftpd,sshd"。 .
(2)客户端地址列表ALL:代表任何客户端地址。LOCAL:代表本机地址。多个地址以逗号分隔允许使用通配符*"和"?”,前者代表任意长度字符,后者仅代表一个字符网段地址:如"192.168.223." 或者192.168.223.0/255.255.255.0区域地址:如”test.com"匹配test.com域中的所有主机。

总结

  • sshd服务数据传输是加密的,可以防止信息泄漏,数据传输是压缩的,可以提高传输速度
  • .ssh服务中的sftp传输数据比ftp更加安全可靠
  • 密钥对为客户机生成并发送给服务器
  • TCP_wrappers可以有效的控制某些地址的用户访问是否可以访问一些服务
  • scp可以在两天linux主机间远程传输文件

SSH远程登录与控制相关推荐

  1. python ssh 远程登录路由器执行命令_ssh批量登录并执行命令(python实现)

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...

  2. 树莓派的ssh远程登录操作(图文)

    树莓派学习系列3--树莓派的远程登录操作(图文) 前言 没有液晶显示器的各位还可以通过远程登录的方式来操作你的树莓派. ip如果通过网线连接路由器,可以直接查询:如果不是,可以通过软件扫描等方式. 如 ...

  3. linux远程登录显示,SSH远程登录显示自定义警告信息

    SSH远程登录显示自定义警告信息On 2015年9月9日 by admin >Linux服务器经常需要通过ssh服务远程登录操作.为了提醒登录着,或者非法入侵者,我们可以自定义设置警告或提醒信息 ...

  4. windows远程android传输文件,电脑(Linux/Windows)使用SSH远程登录安卓(Android)手机实现无线传输和管理文件(图文详解)-Go语言中文社区...

    电脑(Linux/Windows系统)使用SSH远程登录安卓(Android)手机实现无线传输和管理文件(图文详解) 温馨提示 本文只针对安卓(Android)手机!iPhone或者WP的手机用户,请 ...

  5. 在Windows 10/11上使用SSH远程登录到Linux服务器

    Windows 10/11内置SSH客户端,在Windows 10/11上使用OpenSSH客户端,只需打开PowerShell窗口或命令提示符窗口并运行ssh命令. PowerShell即cmd的增 ...

  6. SSH远程登录和SSH免密码登录

    SSH是一种通讯协议,可以实现远程安全登录.可以通过如putty.MobaXterm等工具通过ssh安全登录到虚拟机进行操作. Openssh:ssh远程安全登录的开源实现(软件). 一.SSH远程登 ...

  7. linux服务器之间调用反应慢,Linux使用ssh远程登录服务器反应慢的解决办法

    机房里其它机器使用ssh远程都正常,新来一个服务器每次使用ssh远程登录的时候,"root@***.***.***.***'s password:"这行输入密码的提示都来的特别慢, ...

  8. CISCO路由器TELNET和SSH远程登录配置实例

    一.TELNET远程登录配置 1.配置CISCO路由器上登录账号.口令.账号级别,如下所示,账号名abc.口令为abc123.账号级别为15(最高级别) R1#configure terminal R ...

  9. key位置 win10生成的ssh_华为路由器配置SSH远程登录,就这么简单

    SSH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密. SSH远程登录华为路由器 SSH是在传统的Telnet协议之 ...

最新文章

  1. 这些好用的网站,看看你都收藏了没!
  2. 计算机操作系统:虚拟存储器
  3. BZOJ - 3578: GTY的人类基因组计划2
  4. [云炬创业基础笔记]第五章创业机会评估测试4
  5. (译)在Objective-c里面使用property教程
  6. Angular 依赖的测试和 Fake
  7. excel怎么启用宏_EXCEL制作的小升初毕业生登记表,全自动填充,包括照片
  8. 设计模式_4_适配器模式(AdapterPattern, 多个功能的结合)
  9. java服务端无法发送给客户端,无法从客户端向服务器发送消息
  10. POS打印机系列之 = 并口
  11. BCZM : 1.8
  12. 利用yarn多队列实现hadoop资源隔离
  13. PAT|1147 Heaps(最大堆、最小堆、二叉树的遍历)
  14. 论文:Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection通过划块的方式进行小目标检测
  15. c语言 宏定义 去除宏定义_如何在C中重新定义宏?
  16. 如何使用计算机蠕虫病毒软件,计算机中了蠕虫病毒如何解决
  17. SylixOS命令行下内存操作/测试工具
  18. Comparable
  19. 我是这样克服拖延症的,你也可以试试
  20. Word文字怎么复制粘贴

热门文章

  1. dva 底层框架构建
  2. 诗词格律[1] 诗词入门
  3. 火柴棒游戏(暴力枚举)C++
  4. SkyEye QA ——第一期
  5. ChatGPT专业应用:撰写节日营销活动方案
  6. 微信小程序------API
  7. realme 真我Q2系列手机及多款AIoT生态新品汇总盘点
  8. vscode常用插件-Auto Close Tag
  9. php如何实现简繁体互转
  10. 苹果cms影片集数不更新解决方法