SSH远程访问控制

255 阅读3分钟

什么是SSH

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早期的 Telent(远程登录)、RSH(Remote Shell,远程执行命令)、RCP(RemoteFile Copy,远程文件复制)等应用相比,SSH 协议提供了更好的安全性。 OpenSSH 实现 SSH 协议的开源软件项目,适用于各种Linux 操作系统。

SSH特点

安全远程登录

安全文件传输

安全执行远程命令

SSH协议 为客户机提供安全的shell环境,用于远程管理 ◆ 默认端口:TCP 22 ◆ 服务名称:sshd

服务端主程序:/usr/sbin/sshd

服务端配置文件:/etc/ssh/sshd_config

ssh_config:针对客户端

sshd_config:针对服务端

image.png

用户登录

image.png image.png

scp命令——远程安全复制

image.png

image.png image.png

sftp——安全FTP

通过sftp命令可以利用SSH安全连接与远程主机上传、下载文件,采用了与FTP类似的登录过程和交互式环境,便于目录资源的管理。 ◆ 命令基本格式 sftp user@host get:下载 put:上传 1、下载文件:get 例如:我们使用sftp命令远程连接一台ip地址为192.168.52.100的主机,将其/opt 目录下的1.txt,这个文件下载到本地: image.png

image.png image.png

服务端配置

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 image.png 客户端用户在本地创建公钥

ssh-keygen -t 命令
可用的加密算法:RSA或DSA image.png 将公钥文件上传到服务器

将生成下来的公钥文件上传至服务器,并部署到服务器端用户的公钥数据库中。

公钥文件 id_ecdsa.pu

私钥文件 id_ecdsa image.png 输入以下命令:
ssh-copy-id -i id_ecdsa.pub hs@192.168.52.100
将本地公钥文件 id_ecdsa.pub 上传至服务器用户名为hs的目录下 image.png 来到服务器中,查看hs用户目录下是否有公钥文件 image.png 公钥导入服务器成功后,我们来到终端来验证一下 image.png 结果证明,登录时需要验证公钥的密码,我们输入密码后,即可连接成功。
注意:如果我们经常在一个终端登录服务器,且能确保这台终端是常用安全的,可以使用代理功能,只要第一次输入公钥密码,之后登录无法再输入密码。

ssh-agent 实现代理权

ssh-add 添加交互密钥 image.png