远程访问及控制
一、SSH远程管理
1.SSH协议
SSH(Secure Shell)协议是一种安全通道协议,对通信数据据进行了加密处理,用于远程管理。
优点是数据传输是加密的,可防止信息泄露;数据传输是压缩的,可提高传输速度。
OpenSSH是centos7上自带的软件,可以帮助我们实现远程管理。服务名称:sshd ;服务端主程序:/usr/sbin/sshd ;服务端配置文件:/etc/ssh/sshd_config
默认端口号:tcp的22端口
ssh可以远程连接 scp sftp rysnc : 远程传输文件
2. SSH原理
公钥传输:
第一步:服务端发送连接请求,客户端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥),客户端生成密钥对。
第二步:客户端用自己的亦或会话ID,计算出一个值Res,并用服务端的公钥加密。客户端发送加密值到服务端,服务端用私钥解密,得到Res
第三步:服务端用解密后的值Res亦或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥),最后双方各持有三个密钥,分别是自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密。
3. 登录方法
ssh [远程主机用户名]@[远程服务器主机名或ip地址] -p port (-p代表指定端口号)
例如root默认用户则可以不写,port默认22也可不写。
ssh 192.168.30.11然后输入密码即可
4. 服务端配置
服务端配置文件:vim /etc/ssh/sshd_config
服务端配置文件解析:
#Port 22 #默认使用22端口
#AddressFamily any #默认任何地址可访问
#ListenAddress 0.0.0.0 #监听所有地址的ipv4地址
#ListenAddress :: #监听的ipv6地址
# Logging #日志模块内容
#SyslogFacility AUTH
SyslogFacility AUTHPRIV #默认日志位置输出到rsyslog服务的AUTHPRIV中,/var/log/message下
# Authentication: #身份验证模块
#LoginGraceTime 2m #默认验证用户登录失败后等待时间为2秒
#PermitRootLogin yes #默认允许使用root账户登录
#MaxAuthTries 6 #默认最多可以尝试连接失败6次
#MaxSessions 10 #默认最大可连接10个会话
#PubkeyAuthentication yes #基于key验证默认为开启
#AllowUsers user1,user2@ip #白名单允许登录用户user1,用户为user2的且限制ip
5. ssh服务的最佳实践
-
禁止使用protocol version 2
-
限制可登录用户 白名单
-
设定空闲会话超时时长
-
利用防火墙设置ssh访问策略
-
仅监听特定的IP地址 公网 内网
-
基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
-
使用基于密钥的认证
-
禁止使用空密码
-
禁止root用户直接登录
-
限制ssh的访问频度和并发在线数
-
二、免密钥登录
1.免密连接原理
-
用户会根据服务器发来的公钥对密码进行加密
-
2. 基于密钥的登录方式
3. 在客户端生成密钥文件
4. 将密钥发送给服务器
密钥默认位置为:/root/.ssh/
5. 验证免密登录
总结:
ssh服务端主要包括两个服务功能:ssh远程连接和sftp服务(文件传输功能)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App