SSH相关介绍
管理服务器操作系统方式:
1.图形化、字符页面-拿着显示屏、键盘鼠标插入到服务器上的插口上
2.通过网络远程管理服务器,不需要1对1面对服务器
Windows与Linux远程连接的区别
windows 使用rdp远程桌面进行管理
Linux使用ssh 进行远程
SSH
ssh是一个服务,也是一个协议,也是一个远程连接的工具
ssh服务由openssh软件提供
openssh-client——客户端
openssh-server——服务端
openssh是一个客户端/服务端的架构,也就是client和server
C/S --->客户端/服务端
B/S--->浏览器/服务端
openssh软件包已经在Linux自带,包括CentOS RHEL openeuler
ssh是通过openssh-client客户端去连接openssh-server服务端
ssh命令 --> openssh-client客户端提供
远程连接
ssh 用户名@远程主机的IP地址 / 主机名 (登录远程主机)
RHEL9默认拒绝root远程登录,故:
1.修改/etc/ssh/sshd_conf配置文件:
2.加上 PermitRootLogin yes
3.关闭防火墙systemctl stop firewalld
4.关闭SELinux,setenforce 0
5.执行 systemctl restart sshd
退出登录:exit
ssh 用户名@远程主机的IP地址 / 主机名 命令 (在远程主机上执行命令)
ssh -X 用户名@远程主机的IP地址 / 主机名 (支持转发图形协议)
怎么用windows通过ssh登录Linux系统方式
windows10开始,系统已经安装openssh-client 提供了ssh命令
通过cmd或者powershell登录
通过第三方的ssh工具进行登录(xshell putty mobaxterm crt finalshell 等)
ssh认证原理
基于密码的认证
基于密钥的认证
两者都是通过密钥对的形式进行认证
对称加密
加密和解密都是同一把密钥
非对称加密
加密用公钥,解密用私钥
特殊情况
比如数字签名,加密用私钥,解密用公钥
密码认证的流程
1.客户端发送连接请求,服务端发送服务端的公钥给客户端(第一次连接,客户端会提示是否接受指纹信息)
2.客户端输入yes保存服务端的公钥到当前用户的家目录下的.ssh/known_hosts文件中
3.客户端输入对端用户的密码,使用服务端公钥进行加密发送给服务端
4.服务端接受加密的密文,然后使用服务端私钥进行解密,然后进行密码验证
注:.ssh/known_hosts文件中,每一行都是一把公钥
密钥认证的流程(免密登录)
前提:客户端已经将公钥发送给了服务端
1.客户端发送ssh请求连接,将本地公钥已经发送给了服务端;服务端会验证本地是否有客户端的公钥
2.服务端验证本地有客户端的公钥,则使用客户端公钥对字符串加密,将加密后的字符串发送给客户端
3.客户端接受加密后的字符串后,使用本地私钥解密,然后使用服务端公钥对其加密发送给服务端
4.服务端接受加密字符串后,使用本地服务端私钥进行解密,并且进行字符串的比对。如果一致,则允许登录
公钥发送给指定用户,才能免密登录到指定用户(如发送给user1,无法实现免密登录root)
免密操作步骤
1.客户端生成一对公私钥
a)ssh-keygen -t 生成的密钥类型
2.客户端将本地的公钥发送给服务端
a)ssh-copy-id -i 指定公钥 对端用户名@对端IP地址
服务端下的authorized_keys文件中每一行都是一把公钥
进行免密操作后,ssh可以免密登录系统,scp也可以免密传输文件
ssh私钥建议
1.尽量存放到用户家目录下的.ssh目录下,目录的权限尽量为700
2.谁用私钥进行登录,私钥的拥有人最好是谁。只要私钥有读的权限那么所有人都可以使用(私钥的权限不要设置过大)
ssh私钥加密的代理
适合使用在私钥进行加密的情况,每次免密登录都需要输入私钥的密码,有了代理后,无需输入私钥密码即可登录;
ssh-agent bash
开启ssh代理,开启一个子shell,在子shell中生效