目录
SSH基础
什么是SSH
SSH特点
SSH协议
SSH原理
用户登录
scp命令——远程安全复制
sftp——安全FTP
服务端配置
构建密钥对验证
密钥对验证实验
SSH基础
什么是SSH
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程
复制等功能。
SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。
与早期的 Telent(远程登录)、RSH(Remote Shell,远程执行命令)、RCP(RemoteFile Copy,远程文件复制)等应用相比,SSH 协议提供了更好的安全性。
OpenSSH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统。
SSH特点
安全远程登录
安全文件传输
安全执行远程命令
SSH协议
为客户机提供安全的shell环境,用于远程管理
◆ 默认端口:TCP 22
◆ 服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
ssh_config:针对客户端
sshd_config:针对服务端
访问形式 | 端口号 |
---|---|
SSH:秘文访问默认端口 | TCP:22,一般广域网 |
TELNET:明文形式的访问 | TCP:23,一般局域网 |
远程桌面 | 3389,图形化界面 |
SSH原理
客户端发起链接请求
服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
客户端生成密钥对
客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
用户登录
ssh [user远程主机用户名]@[host远程服务器主机名或IP地址]
通过 ssh命令可以远程登录sshd服务,为用户提供一个安全的shell环境,以便对服务器进行管理和维护,使用时应制定登录用户、目标主机ip地址作为参数。
登录主机192.168.52.110 ,以对方的root用户进行验证。默认使用22端口
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :-l 选项,指定登录名称。
-p:-p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录
scp命令——远程安全复制
通过scp命令可以利用 SSH安全连接与远程主机相互复制文件。使用scp命令时,除了必须指定复制源、目标之外,还应指定目标主机地址、登录用户,执行后根据提示输入密码即可。
注意:如果是远程复制一个单独的文件的话直接用scp 就可以了,但是复制文件夹或目录的话,需要加 “-r” 选项。
命令基本格式
格式一:scp user@host:file 1 file 2
格式二:scp file 1 user@host:file 2
将本地文件复制到其他服务器
◆ 格式1:scp 本地文件路径 对方登录用户@ip地址:对方文件存放路径
◆ 例如:我们将本地 /opt下的 1.txt这个文件复制到 远程服务器(ip地址是192.168.52.120)中的/opt目录下。
sftp——安全FTP
通过sftp命令可以利用SSH安全连接与远程主机上传、下载文件,采用了与FTP类似的登录过程和交互式环境,便于目录资源的管理。
◆ 命令基本格式
sftp user@host
get:下载
put:上传
1、下载文件:get
例如:我们使用sftp命令远程连接一台ip地址为192.168.52.100的主机,将其/opt 目录下的1.txt,这个文件下载到本地:
上传文件:put
例如:还是上面的环境,我们登陆成功后,将本地的/opt 目录下的文件ha.txt 文件上传到远程连接的主机
服务端配置
sshd 服务支持两种验证方式:
密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解,暴力破解可看之前博客有详细描述系统弱口令检测
密钥对验证
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
构建密钥对验证
在linux客户机中, 通过ssh_Keygen工具为当前用户创建密钥对文件,可用的加密算法为RSA或DSA,(ssh-keygen -t 选项用于指定算法类型)
具体过程分四步
第一步:
创建密钥对:
1.私钥文件:id_rsa
2.公钥文件:id_rsa.pub
第二步:
上传公钥文件:id_rsa.pub
第三步:
导入公钥信息,公钥库文件:~/.ssh/authorized_keys
第四步
使用密钥对验证方式
密钥对验证实验
一台远程服务器(ip地址:192.168.52.100)
一台终端(ip地址:192.168.52.110)
第一步:在客户端创建密钥对
先在服务器开启公钥。文件位置:/etc/ssh/sshd_config
客户端用户在本地创建公钥
ssh-keygen -t 命令
可用的加密算法:RSA或DSA
将公钥文件上传到服务器
将生成下来的公钥文件上传至服务器,并部署到服务器端用户的公钥数据库中。
公钥文件 id_ecdsa.pu
私钥文件 id_ecdsa
输入以下命令:
ssh-copy-id -i id_ecdsa.pub hs@192.168.52.100
将本地公钥文件 id_ecdsa.pub 上传至服务器用户名为hs的目录下。
来到服务器中,查看hs用户目录下是否有公钥文件
验证实验
公钥导入服务器成功后,我们来到终端来验证一下
结果证明,登录时需要验证公钥的密码,我们输入密码后,即可连接成功。
注意:如果我们经常在一个终端登录服务器,且能确保这台终端是常用安全的,可以使用代理功能,只要第一次输入公钥密码,之后登录无法再输入密码。
ssh-agent 实现代理权
ssh-add 添加交互密钥
试验成功