Part.4_SSH

本文详细介绍了SSH的概念、账户密码与密钥对验证模式,包括Linux主机间的密钥对登录、Windows使用密钥登录Linux,以及SSH服务的配置,如禁用密码登录、限制SSH监听IP,同时涵盖了scp和sftp安全文件传输命令的使用和端口设置。
摘要由CSDN通过智能技术生成

一、ssh概念和账户密码登陆

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

公钥 私钥

二、ssh密钥对验证模式

在这里插入图片描述

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

C客户端——C服务器
C:C公钥、C私钥、S公钥
S:S公钥、S私钥、C公钥
1、.C发连接请求、.发C公钥
2、.S验证本地S公钥和接受到的C公钥是否一致——一致.生成一段challenge(质疑)并使用C公钥加密
3、.C使用C私钥进行解密,使用S公钥对challenge(质疑)进行加密并返回服务器
4、.通过2、3两次challenge(质疑)验证成功后,允许登陆
在这里插入图片描述
安全和效率不可兼得
和telnet相比安全性更好,但效率不行

三、ssh配置

1、环境准备

临时关闭防护功能
清空防火墙规则:iptables -F
临时关闭SELinux:setenforce 0
永久关闭防护功能
设置防火墙开机不自启动:chkconfig iptables off
永久关闭SELinux:sed -i ‘7s/enforcing/disabled’ /etc/selinux/config

注意:以上两条命令执行后,需要重启后服务器后才能生效:reboot

su root 进入root 模式
说明:
SELinux(Security-Enhanced Linux):扩张强制访问控制安全模块
SELINUX有「disabled」、「permissive」、「enforcing」3种模式可选择
.disabled:不加载SELinux,
.permissive:SELinux有效,但是即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来。.在我们开发策略的时候非常的有用。相当于Debug模式。
Enforcing:就是你违反了策略,你就无法继续操作下去。

2、用户密码验证

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

ssh 用户名@IP地址	
|ssh	hostname@192.168.88.20	
|ssh root@192.168.88.20
|ssh 192.168.88.20				//(直接 “ssh IP地址”也可以,这样默认为root登陆 )

Windows远程登陆Linux主机一般使用第三方工具,比如Xshell等工具
格式:

|ssh root@192.168.88.20

注意:提前修改主机名,方便识别。

|hostname			//查看主机名
|hostname	name1	//更改主机名为name1

3、密钥对验证

Ⅰ、Linux主机之间的密钥对登陆验证**

①、客户端生成密钥对

ssh-keygen -t rsa -b 2048
-t 指定加密类型(rsa/dsa等)
-b 指定密钥对加密长度

rsa1024长度被暴力破解
询问1:
执行过程中会询问保存位置,一般默认保存在当前用户家目录下的.ssh/目录下。询问2:
是否对密钥文件进行加密
加密:若加密,则在调用密钥文件时需要先验证密钥的密码,密码正确才能使用密钥文件。不加密:若不加密,则密钥文件可以直接被调用,整个登录验证过程无需输入任何密码,即为免密登录。
②、客户端将公钥文件上传至服务器

ssh-copy-id 用户名@服务器IP地址
//该用户名和要用来登录服务器的用户名一致。
客户端的.ssh目录下有:
id_rsa、id_rsa.pub、known_hosts三个文件,其中id_rsa.pub就是公钥文件
服务器的.ssh目录下有:
authorized_keys

③、客户端尝试登陆服务器

ssh 用户名@服务器IP地址
//密钥对登陆验证优先级大于账户密码验证。

Ⅱ、Windows使用密钥对登陆Linux

①、使用Xshell自带的密钥对生成向导生成密钥对
密钥类型:DSA、RSA、ECDSA、ED25519
加密长度:1024、2048、(加密长度和效率之间的取舍)
在这里插入图片描述
过程中可以选择加密的私钥不加密的私钥
②、将公钥导入Linux主机的指定用户下的指定公钥配置文件内
后面哪个用户登陆就放在谁家里
例如在root家目录下,找到.ssh目录,然后在里面创建authorized_keys文件,并且将公钥写入进去
③、使用windows尝试登陆指定用户

4、禁止使用密码登录

将使用密码登陆
生成环境下将账户密码登陆功能关掉

1、配置文件路径:
/etc/ssh/sshd_config
2、修改配置选项:
|PasswordAuthentication yes //将yes改为no
|PasswordAuthentication no
3、重启服务
|service sshd restart		//重启服务

5、禁止使用root远程登陆

1、配置文件路径:
/etc/ssh/sshd_config
2、修改配置选项:
|PermitRootLogin yes		//将yes改为no
|PermitRootLogin no
3、重启服务
|service sshd restart		//重启服务

虽然使用用户登陆,但是还可以通过su -root 切换到root用户权限,变相保护root用户安全
绕一圈最后虽然都能使用root权限,主要目的是为了避免:root远程登陆。

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

①、修改默认端口
默认情况下使用TCP的22端口,容易遭到攻击,修改端口,尽量改为高位端口(范围1~65535)

1、配置文件:/etc/ssh/sshd_config
2、配置选项:
|Port 22		//默认为22,修改为59527
|Port 59527
3、重启服务
|service sshd restart		//重启服务
.使用ssh需要选择端口
|ssh 192.168.88.10			//使用默认的22端口无法使用ssh功能
|ssh 192.168.88.10 59527	//使用新的端口59527
|ssh -p 59527 root@192.168.88.10		//使用-p来指定端口 
安装nmap
方法一:
yum -y install nmap
方法二:
cd /media/Packages/
rpm -ivh nmap-5.51-4.el6.x86_64.rpm

使用namp扫描
nmap -sT 192.168.88.10
nmap默认扫描低位端口、常规端口

②、限制ssh监听IP
不允许外网直接登陆,只有通过局域网才能登陆,可以在机房里设置其中一台能够被外网远程连接,其他的主机都通过这个机器进行远程连接即可

1、配置文件:/etc/ssh/sshd_config
2、配置选项:
|ListenAddress 0.0.0.0		//listen的本机的哪个网卡的IP地址,默认的0.0.0.0为所有网卡的所有IP
|ListenAddress 192.168.88.22	//本机没有22这个ip
本机想要多个IP地址,加网卡

ifconfig命令,将一个网卡设置两个ip地址
ifconfig eth0:0 192168.88.22
3、重启服务
|service sshd restart		//重启服务

4、ssh访问
|ssh 192.168.88.20		//20网卡没有监听,只监听22网卡
|ssh 192.168.88.22		//只有访问22的IP才能被处理

四、ssh服务相关命令

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

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

scp:安全的远程文件复制命令
格式:
|scp 源文件 用户名@服务器IP:目标绝对路径
|scp /root/atguigu.txt root@192.168.88.20/tmp		//传文件到服务器
|scp root@192.168.88.20:/tmp/atguigu.txt /root/		//从服务器下载
|sco -P 2222 /root/atguigu.txt root@192.168.88.20/tmp
-P 端口		//若端口不是默认22,则需要使用此格式指定端口,
//注意大P,小p(ssh端口指定方式为-p,scp端口指定方式为-P)

2、sftp:安全的文件传输协议

概念:Secure File Transfer Protocol,安全文件传送协议。sftp与ftp有着几乎一样的语法功能,相较于ftp,安全性更好,传输效率比普通ftp要低很多

sftp:安全的文件传输协议
格式:
|sftp 用户名@服务器IP
.pwd/lpwd	//查看服务器当前路径(remote)//查看本地当前路径(local)	
.cd/lcd		//服务器中的目录(remote)//客户机中的目录(local)
.ls/lls		//
.put			//将客户机文件传到服务器
.get			//将服务器端的指定文件下载到客户机的当前所在目录
.rm			//删除掉服务器中的指定文件
.quit		//退出sftp的交互模式,断开和服务器之间的连接
|sftp -oPort=2222 root@192.168.88.20	//被登录服务器ssh端口修改
ssh端口修改
ssh		-p	端口
scp		-P	端口
sftp	-oPort=端口
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值