当前位置:   article > 正文

SSH远程登录与控制_powershell ssh

powershell ssh


前言

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上下载
  • 1
  • 2
  • 3

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 
  • 1

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

方法二

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

故障集

问题

在平时工作中,有时候需要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的软件包信息

  • 1
  • 2

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、scp远程复制

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

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

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

在这里插入图片描述
在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述


五、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						#显示当前主机位置
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

六、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             #每个连接最大允许认证次数,若认证次数超过此数值一半,连接强制断开
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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域中的所有主机。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

总结

  • sshd服务数据传输是加密的,可以防止信息泄漏,数据传输是压缩的,可以提高传输速度
  • .ssh服务中的sftp传输数据比ftp更加安全可靠
  • 密钥对为客户机生成并发送给服务器
  • TCP_wrappers可以有效的控制某些地址的用户访问是否可以访问一些服务
  • scp可以在两天linux主机间远程传输文件
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/409136
推荐阅读
  

闽ICP备14008679号