文章目录
- 远程访问及控制
- 一、SSH远程管理
- 1、SSH(Secure Shell)协议定义
- 2、SSH的优点
- 3、OpenSSHell
- 二、配置OpenSSH服务端
- 1、sshd_config配置文件的常用选项
- 2、sshd服务支持的两种验证方式
- 2.1 密码验证
- 2.2 秘钥对验证
- 三、SSH客户端程序的使用
- 1、基本用法
- 1.1 直接连接
- 1.2 连接指定用户
- 1.3 连接指定端口号
- 1.4 跳板机
- 2、黑白名单
- 3、修改默认端口号
- 4、禁止root用户登录
- 5、ssh服务的最佳实践
- 四、使用密钥对免交互验证登录
- 免密的登录方式
远程访问及控制
一、SSH远程管理
1、SSH(Secure Shell)协议定义
- 是一种安全通道协议,主要用来实现字符界面的远程,远程复制等功能
- SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。
- TELNET协议:不加密,仅适用于测试
2、SSH的优点
-
数据传输时是加密的,可以防止信息泄露
-
数据传输时时压缩的,可以提高传输速度
客户端:finalshell、Xshell、mobaxterm、CRT、Putty
服务端:OpenSSH
3、OpenSSHell
-
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统
-
CentOS 7系统默认以安装openssh县官软件包,并已将 sshd 服务添加为 开机自启动
-
执行“systemctl start sshd”命令即可启动 sshd服务
-
sshd 服务使用的默认端口号为22
-
sshd 服务的默认配置文件为/etc/ssh/sshd_config
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端默认配置文件:/etc/ssh/sshd_config
注:ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件
二、配置OpenSSH服务端
1、sshd_config配置文件的常用选项
vim /etc/ssh/sshd_config #修改配置文件
Port 22 # 监听端口为22
ListenAddress 0.0.0.0 # 监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
LoginGraceTime 2m # 登录验证时间为2分钟
PermitRootLogin no # 禁止root用户登录
MaxAuthTries 6 # 最大重试次数为 6
PermitEmptyPasswords no # 禁止空密码用户登录
UseDNS no # 禁用 DNS 反向解析,以提高服务器的响应速度
AllowUsers zhangsan lisi wangwu@192.168.10.12# 多个用户以空格分隔 # 只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为192.168.10.12的主机远程登录
DenyUsers zhangsan # 禁止某些用户登录,用法于AllowUsers 类似(注意不要同时使用)
2、sshd服务支持的两种验证方式
2.1 密码验证
- 对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
2.2 秘钥对验证
- 要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一一对密钥文件 (公钥、私钥), 然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
当密码验证、密钥对验证都启用时, 服务器将优先使用密钥对验证。 可根据实际情况设置验证方式。
三、SSH客户端程序的使用
1、基本用法
1.1 直接连接
- 命令格式:ssh ip地址
当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入"yes")后才能继续验证。接收的密钥信息将保存到~/.ssh/known_hosts 文件中。 密码验证成功以后,即可登录目标服务器的命令行环境中了。同意之后,下次登录就会自动获取服务端的公钥
1.2 连接指定用户
-
命令格式:
ssh 用户名@ip地址
ssh 用户名 ip地址
1.3 连接指定端口号
- 命令格式:ssh ip地址 -p 端口号
sshd服务的默认端口号是 22,如果是其他端口号,需要 -p 来指定端口
①、在 vim /etc/ssh/sshd_config配置文件下修改端口号,修改完配置之后需要重启服务,使配置文件生效
②、然后去远程连接
1.4 跳板机
- 命令格式: ssh -t ip地址 ssh -t ip地址 ssh -t ip地址 …
2、黑白名单
- 白名单:默认拒绝所有,只有白名单上的用户才可以访问
- 黑名单:默认允许所有,只有黑名单上的用户不允许访问
修改服务端的服务配置文件:vim /etc/ssh/sshd_config
3、修改默认端口号
修改服务端的服务配置文件:vim /etc/ssh/sshd_config
4、禁止root用户登录
- 修改pam认证模块,使普通用户登录后不能切换到root用户
5、ssh服务的最佳实践
-
建议使用非默认端口 22
-
限制可登录用户白名单
-
设定空闲会话超时时长
-
利用防火墙设置ssh访问策略
-
仅监听特定的IP地址 公网 内网
-
基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
-
使用基于密钥的认证
-
禁止使用空密码
-
禁止root用户直接登录
-
限制ssh的访问频度和并发在线数
-
经常分析日志分离
四、使用密钥对免交互验证登录
免密的登录方式
-
首先在客户端生成一对密钥(ssh-keygen)
-
并将客户端的公钥ssh-copy-id 拷贝到服务端
-
当客户端再次发送一个连接请求,包括ip、用户名
-
服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc
-
服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
-
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
-
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
##192.168.10.11地址的设备的操作步骤:
ssh-keygen
#生成密钥对
Generating public/private rsa key pair.
#默认使用rsa算法
Enter file in which to save the key (/root/.ssh/id_rsa):
#密钥存放的文件位置是/root/.ssh/id_rsa
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
#覆盖
Enter passphrase (empty for no passphrase):
#设置密钥文件密码,不少于5位
Enter same passphrase again:
#再次输入密码
Your identification has been saved in /root/.ssh/id_rsa.
#私钥已经成功保存在指定的文件中
Your public key has been saved in /root/.ssh/id_rsa.pub.
#公钥已经成功保存在指定的文件中
The key fingerprint is:
#提供密钥的指纹信息,用于验证密钥的真实性
SHA256:xpW9Zo9EqbSTaLGCLIU7cdu+DtXSSPQMwdVN+hSGQEU root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| .+++=E++ |
| . ..+ o=.o |
| o o . + = = |
| * = = * B . |
| + + * S = * |
| o o = = o |
| . . . . |
| . . |
| .o |
+----[SHA256]-----+
#提供了密钥的随机艺术图像,是一种可视化的方式来显示密钥的指纹信息
cd .ssh/
#切换目录
ls
id_rsa id_rsa.pub known_hosts
#查看ssh下生成的文件
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.10.12
#将密钥文件传给192.168.10.12地址
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.10.12's password:
#此处输入目标地址192.168.10.12用户的登录密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.10.12'"
and check to make sure that only the key(s) you wanted were added.
##192.168.10.12地址的设备的操作步骤:
cd .ssh/
#切换目录
ls
authorized_keys known_hosts
#查看传过来的密钥文件
##验证:
[root@localhost .ssh]#ssh 192.168.10.12
Last login: Mon Jan 15 08:20:10 2024 from 192.168.10.1
[root@liuyanfen12 ~]#
#此时远程登录,不需要验证密码
- 验证