一、SSH服务的概述
1.1、概念
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。
SSH客户端: Putty、 Xshell、 CRT、MobaXterm、FinalShell
1.2、SSH数据传输原理
SSH客户端与服务端是通过网络来进行数据文件传输的,数据传输是加密的,可以防止信息泄露,(并不安全)数据传输是压缩的,可以提高传输速度。
1.3、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_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务
- OpenSSH 常用配置文件有两个/etc/ssh/ssh_config 和/etc/sshd_config。
- ssh_config:为客户端配置文件,设置与客户端相关的应用可通过此文件实现
- sshd_config:为服务器端配置文件,设置与服务端相关的应用可通过此文件实现。
二、配置OpenSSH服务端
vim /etc/ssh/sshd_config
1
2
3
4
|
Port 22 ### 监听端口为22 ListenAddress 0.0.0.0 ###监听地址为任意网段,也可用指定OpenSSH服务器的具体IP UseDNS no ###禁用DNS反向解析,以提高服务器的响应速度 |
三、sshd 服务的两种验证方式
3.1、密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力 破解。
3.2、密钥对验证
要求提供相匹配的密钥信息才能通过验证,通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可用免交换登录。相当于钥匙和锁的关系
密钥有两种
对称密钥
非对称密钥
非对称:RSA,创建出一个公钥,一个私钥,验证的话,私钥必须要和公钥能对应匹配,才允许登录、交互、否则拒绝。
PS:公钥和私有,实际上就是两个文件
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。
四、使用SSH客户端程序
4.1、ssh远程登录方式
登录 方法一:
ssh [远程主机用户名] @[远程服务器主机名或IP地址] -p port
当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。
登录方法二:
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :-l 选项,指定登录名称。
-p:-p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
4.2、扩展命令
1. 使用ssh连接远程主机时加上“-o StrictHostKeyChecking=no”的选项。
2. 一个彻底去掉这个提示的方法是,修改/etc/ssh/ssh_config文件(或$HOME/.ssh/config)中的配置,添加如下两行配置:
1
2
|
StrictHostKeyChecking no UserKnownHostsFile /dev/null |
五、构建密钥对验证的SSH
5.1、公钥和私钥的关系
在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
公钥用来给数据加密,用公钥加密的数据只能使用私钥解
构建密钥对验证的SSH原理首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH服务器就用公钥加密”质询”(challenge)并把它发送给SSH客户端。
5.2、scp复制
scp:scp是secure copy的简写(安全性复制),用于在Linux下进行远程拷贝文件的命令,而且scp传输是加密的。
1
2
3
4
5
6
|
1. ###本地文件复制到服务器 scp sheng root@192.168.100.141: /opt 2. ####复制服务器的文件到本地 scp root@192.168.100.141: /opt/test/ ./ 3. ####本地目录复制到服务器 scp -r 1234/ root@192.168.100.141: /opt |
5.3、安全性传输sftp
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。