做门的网站,查wordpress模板,办公室装修公司哪里好,中建人才网证书查询系统SSH远程连接协议 SSH远程管理
定义 SSH#xff08;Secure Shell #xff09;是一种安全通道协议#xff0c;主要用来实现字符界面的远程的登录、远程复制等功能。 SSH协议对通信双方的数据传输进行了加密处理#xff0c;其中包括用户登录时输入的用户口令。因此SSH协议具…SSH远程连接协议 SSH远程管理
定义 SSHSecure Shell 是一种安全通道协议主要用来实现字符界面的远程的登录、远程复制等功能。 SSH协议对通信双方的数据传输进行了加密处理其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。
优点 安全性数据传输是加密的可以防止信息泄露 身份验证防止未经授权的用户访问远程系统 远程管理可通过SSH协议登录远程服务器并执行命令无需直接物理访问设备 端口转发SSH支持端口转发功能可以安全地传输其它协议和应用程序 传输速度数据传输是经过压缩的可以提高传输速度
ssh服务的最佳设置 建议使用非默认端口 22 禁止使用protocol version 1 限制可登录用户 白名单 设定空闲会话超时时长 利用防火墙设置ssh访问策略 仅监听特定的IP地址 公网 内网 基于口令认证时使用强密码策略比如tr -dc A-Za-z0-9_ /dev/urandom | head -c 12| xargs 使用基于密钥的认证 禁止使用空密码 禁止root用户直接登录 限制ssh的访问频度和并发在线数 经常分析日志 分离 客户端与服务器所使用的软件 客户端软件 Putty、Xshell、CRT、MobaXterm 服务器软件 OpenSSH 是实现 SSH 协议的开源软件项目适用于各种 UNIX、Linux 操作系统。 CentOS 7系统默认已安装openssh相关软件包并已将 sshd 服务添加为开机自启动。
SSH服务开启、端口号和配置文件路径 开启SSH服务
systemctl start sshd SSH服务的默认端口号22 SSH服务的配置文件路径 服务器端 /etc/ssh/sshd_config #针对服务端的配置文件 客户端 /etc/ssh/ssh_config #针对客户端的配置文件
SSH程序名和主程序进程
sshd #程序名
/usr/sbin/sshd #服务端主进程
加密方式 对称加密 概念
采用单钥密码系统的加密方法同一个密钥可以同时用作信息的加密和解密这种加密方法称为对称加密由于其速度快对称性加密通常在消息发送方需要加密大量数据时使用 常用算法
DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等 特点 加密方和解密方使用同一个密钥 加密解密的速度比较快适合数据比较长时的使用 密钥传输的过程不安全且容易被破解密钥管理也比较麻烦 优点 算法公开 计算量小 加密速度快 加密效率高 缺点 在数据传送前发送方和接收方必须商定好秘钥然后使双方都能保存好秘钥 其次如果一方的秘钥被泄露那么加密信息也就不安全了 每对用户每次使用对称加密算法时都需要使用其他人不知道的独一秘钥这会使得收、发双方所拥有的钥匙数量巨大密钥管理成为双方的负担 非对称加密 概念
非对称加密算法需要两个密钥公开密钥publickey:简称公钥和私有密钥privatekey:简称私钥。公钥与私钥是一对如果用公钥对数据进行加密只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥所以这种算法叫作非对称加密算法。 常用算法 RSARSA algorithm目前使用最广泛的算法 DSADigital Signature Algorithm数字签名算法和 RSA 不同的是 DSA仅能用于数字签名不能进行数据加密解密其安全性和RSA相当但其性能要比RSA快 ECCElliptic curve cryptography椭圆曲线加密算法 ECDSAElliptic Curve Digital Signature Algorithm椭圆曲线签名算法是ECC和 DSA的结合相比于RSA算法ECC 可以使用更小的秘钥更高的效率提供更高的安全保障 原理 客户端向服务端发起连接请求 服务端收到请求后将会话id和服务端的公钥交给客户端 客户端接收后将会话id和客户端的公钥进行异或运算得到回复信息Res(Res会话id^客户端公钥 客户端再将Res用服务端的公钥加密得到密文UURes服务端的公钥id,并将密文U交给服务端 服务端用服务端私钥将密文U解密得到回复信息Res 服务端将Res和会话id进行异或运算得到客户端的公钥
OpenSSH服务端配置文件格式
sshd_config配置文件的常用选项
[rootlocalhost ~]# vim /etc/ssh/sshd_config
#Port 22 #端口号为22
#AddressFamily any
#ListenAddress 0.0.0.0 #监听地址为任意网段也可以指定OpenSSH服务器的具体IP
#LoginGraceTime 2m #登录验证时间为2分钟
#PermitRootLogin yes #允许root用户登录
#StrictModes yes #检查.ssh/文件的所有者权限等
#MaxAuthTries 6 #最大重试次数为6
#MaxSessions 10 #同一个连接最大会话为10个
#PubkeyAuthentication yes #基于key验证
UseDNS yes #提高速度可改为no 内网改为no 禁用反向解析
黑名单和白名单限制配置
Allowusers…… #仅允许某某用户登陆白名单
Denyusers …… #禁止某些用户登录用法于AllowUsers 类似黑名单注意不要同时使用 使用SSH程序
登录方式
准备工作
#服务端准备工作
[rootRoot2 ~]# systemctl disable firewalld
[rootRoot2 ~]# setenforce 0
#客户端准备工作
[rootRoot1 ~]# systemctl disable firewalld
[rootRoot1 ~]# setenforce 0
# 一定要关闭防火墙和降低限制否则ssh服务无法重启 默认端口登录远程主机
ssh 远程主机用户名远程主机名或IP地址 -p 端口号
-p #指定登录端口号当服务端的端口号为非默认22时需要使用-P来指定自定义的端口号
[rootlocalhost ~]# ssh 192.168.20.90 #输入远程主机IP地址
The authenticity of host 192.168.20.90 (192.168.20.90) cant be established.
ECDSA key fingerprint is SHA256:xI7IIfZIDyIu4JSxmY/NIgNPdMoDdRCjOuzlJ3L9rk.
ECDSA key fingerprint is MD5:c3:14:88:de:b3:14:01:f3:ad:90:4a:80:0f:02:fc:d9.
Are you sure you want to continue connecting (yes/no)? yes #确认是否连接
Warning: Permanently added 192.168.20.90 (ECDSA) to the list of known hosts.
root192.168.20.90s password: #输入远程主机登录密码
Last login: Mon Apr 29 09:21:28 2024 from 192.168.20.90
非默认端口登录远程主机
生产环境中作为安全加固设置必须配置
服务端
[rootRoot2 ~]# vim /etc/ssh/sshd_config
Port 224 #ssh协议端口号更改为224
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
客户端
[rootRoot1 ~]# vim /etc/ssh/sshd_config
Port 224 #ssh协议端口号更改为224与服务端匹配
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
[rootRoot1 ~]# ssh 192.168.20.90 -p 224 #指定224端口号远程连接root2服务端
The authenticity of host [192.168.20.90]:224 ([192.168.20.90]:224) cant be established.
ECDSA key fingerprint is SHA256:xI7IIfZIDyIu4JSxmY/NIgNPdMoDdRCjOuzlJ3L9rk.
ECDSA key fingerprint is MD5:c3:14:88:de:b3:14:01:f3:ad:90:4a:80:0f:02:fc:d9.
Are you sure you want to continue connecting (yes/no)? yes #手动确认是否连接服务端
Warning: Permanently added [192.168.20.90]:224 (ECDSA) to the list of known hosts.
root192.168.20.90s password: #输入服务端登录密码
Last login: Mon Apr 29 15:56:48 2024 from 192.168.20.90
[rootRoot2 ~]# #远程登录root2服务端成功
免密码远程登录主机 目的使主机与主机之间远程登录时不再需要输入登录密码增加操作的便利度
这里只是免密码登录而不是密钥登录依旧保证密钥传输的安全性 未设置免密码登录时的状态
[rootRoot1 ~]# ssh 192.168.20.90 -p 224
root192.168.20.90s password: #这里依旧需要输入服务端的登录密码
扩展 -t 可以选择密钥的算法 [rootRoot1 .ssh]# ssh-keygen --help
unknown option -- -
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1][-N new_passphrase] [-C comment] [-f output_keyfile]
#举例
ssh-keygen -t dsa/ecdsa/rsa/rsa1
#如果不选择-t就默认选择rsa算法 操作步骤 root1为客户端 root2为服务端 在客户端生成密钥文件
[rootRoot1 ~]# ssh-keygen #免密码交互设置命令
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #第一次交互指定密钥保存路径可自定义这里直接回车选择默认路径
Enter passphrase (empty for no passphrase): #第二次交互提示密钥文件密码为空未设置询问是否设置密钥文件的密码如果不 需要设置直接回车进入下一步
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:GUULHPimIOZxS5apdT6hjqmE2yTm6QDOxOZ5ax5FQzc rootRoot1
The keys randomart image is:
---[RSA 2048]----
| . Eooo |
| . o oo . |
| .. . |
|. X oo |
|.* O B S |
|O |
|B.* . |
|. |
|o |
----[SHA256]-----
[rootRoot1 ~]# cd /root/.ssh
[rootRoot1 .ssh]# ls
id_rsa #私钥文件
id_rsa.pub #公钥文件
将客户端的公钥远程复制到服务端 复制命令
ssh-copy-id -i 公钥文件 [用户名]IP地址
#将密钥文件传过去
#下次就可以免密登录
#以root用户登录时 可省略
#-i为传输公钥文件的选项 传输过程
[rootRoot1 .ssh]# ssh-copy-id -i id_rsa.pub 192.168.20.90 -p 224
#将主机root1的公钥文件远程传输给root2服务端这里也可以-p因为端口被自定义为224了如果是默认22就不需要-p
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: id_rsa.pub
The authenticity of host [192.168.20.90]:224 ([192.168.20.90]:224) cant be established.
ECDSA key fingerprint is SHA256:xI7IIfZIDyIu4JSxmY/NIgNPdMoDdRCjOuzlJ3L9rk.
ECDSA key fingerprint is MD5:c3:14:88:de:b3:14:01:f3:ad:90:4a:80:0f:02:fc:d9.
Are you sure you want to continue connecting (yes/no)? yes #提示是否建立连接
/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
root192.168.20.90s password: #输入服务端登录密码
Number of key(s) added: 1 #提示信息表示传输成功
Now try logging into the machine, with: ssh -p 224 192.168.20.90
and check to make sure that only the key(s) you wanted were added.
验证
#公钥传输后的结果
[rootRoot1 .ssh]# ssh 192.168.20.90 -p 224
Last login: Mon Apr 29 16:05:36 2024 from 192.168.20.91
#公钥传输前的结果
[rootRoot1 ~]# ssh 192.168.20.92 -p 224
root192.168.20.92s password:
#作为对比传输公钥后不再需要输入登录密码已经进入root2主机了说明配置成功了 SSH远程控制服务端
命令
ssh 目标设备的IP地址 命令
#远程控制目标主机使用命令 并将命令执行结果返回本机
#主机root2的IP地址为192.168.20.92
[rootRoot1 .ssh]# ssh 192.168.20.92 -p 224 ls #查看主机B家目录下有哪些目录或文件
anaconda-ks.cfg
core.1891
initial-setup-ks.cfg
公共
模板
视频
图片
文档
下载
音乐
桌面
[rootRoot1 .ssh]# #这里并没有切换到root2说明已经通过客户端root1远程控制服务端root2