首页 > 其他分享 >59、SSH服务

59、SSH服务

时间:2023-02-02 15:32:45浏览次数:45  
标签:公钥 服务 登录 服务端 SSH 59 id ssh 客户端

ssh服务介绍及通信原理

ssh服务:secure shell;加密通信,代替传统的telnet

具体软件实现:openssh、dropbear

ssh协议版本:V1基于crc-32做mac,不安全;V2双方主机基于安全的mac方式,基于DH算法做密钥交换,基于dsa或rsa实现身份认证

公钥交换原理

59、SSH服务_rsync

1、客户端发起连接请求
2、服务器端返回自己的公钥和会话ID给客户端,客户端获取到服务端的公钥
3、客户端生成自己的密钥对,客户端用自己的公钥异或会话ID生成response,并使用服务端的公钥加密response,得到密文
4、密文传输给服务端,服务端用自己的私钥解密,得到response,response和会话id异或得到了客户端的公钥,最终完成密钥交换
5、最后双方可使用对方的公钥加密数据完成数据通信
openssh服务

OpenSSH是SSH (Secure SHell) 协议的免费开源实现,基于 C/S结构

59、SSH服务_rsync_02

59、SSH服务_sshd服务配置_03

59、SSH服务_rsync_04

服务器:/usr/sbin/sshd

Unit 文件:/usr/lib/systemd/system/sshd.service

客户端:

Linux Client: ssh, scp, sftp,slogin

Windows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclient

客户端ssh命令

当client发起ssh命令请求时,会复制服务器的/etc/ssh/ssh_host*key.pub公钥到client的当前用户的.ssh/know_hosts文件中,下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接

59、SSH服务_rsync_05

59、SSH服务_密钥登陆_06

如果没有know_hosts文件中,发起连接会提示确认是否连接该主机

59、SSH服务_rsync_07

ssh客户端配置文件:/etc/ssh/ssh_config

#StrictHostKeyChecking ask
首次登录不显示检查提示
StrictHostKeyChecking no
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22

59、SSH服务_rsync_08

59、SSH服务_ssh_09

使用sed批量替换配置文件中的选项
root@LGW-Linux-8 .ssh]# sed -i.bak '/StrictHostKeyChecking/s/.*/StrictHostKeyChecking no/' /etc/ssh/ssh_config

59、SSH服务_rsync_10

ssh命令格式

ssh [user@]host [command]
ssh -l user host [command]

常见选项
-p port:远程服务器监听的端口
-b 指定连接的源IP
-v 调试模式
-C 压缩方式
-X 支持x11转发
-t 强制伪tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2 ssh remoteserver3 最终跳转到remoteserver3;中间为跳转机
-o option 如:-o StrictHostKeyChecking=no
-i <file> 指定私钥文件路径,实现基于key验证,默认使用文件: ~/.ssh/id_dsa,
~/.ssh/id_ecdsa, ~/.ssh/id_ed25519,~/.ssh/id_rsa等

59、SSH服务_sshd_11

X11转发

在server端安装yum -y install xorg-x11-xauth

在client 执行ssh -X host,可将server的图形在client端显示

59、SSH服务_sshd_12

59、SSH服务_rsync_13

59、SSH服务_密钥登陆_14

-t实现逐级跳转

59、SSH服务_密钥登陆_15

远程执行命令

59、SSH服务_sshd服务配置_16

远程运行本地脚本

59、SSH服务_sshd服务配置_17

lastb命令查看登录失败记录 日志记录在/var/log/btmp

59、SSH服务_rsync_18

59、SSH服务_密钥登陆_19

ssh登录方式介绍(口令/密钥)

口令登录原理

59、SSH服务_sshd服务配置_20

密钥登录原理

59、SSH服务_sshd_21

1、客户端通过ssh-genkey生成密钥对,通过ssh-copy-id拷贝公钥到服务端
2、当客户端发起登录请求包含用户和ip时,会在authorized_key中查找,如果有响应的ip和用户时,服务端生成随机字符串,使用客户端的公钥加密,然后发送给客户端
3、得到服务端的消息后,客户端使用私钥解密,得到随机字符串,将解密得到的随机字符串发送给服务端
4、服务端对比随机字符串,结果一致,即可免密登录
密钥登录方式实现

使用ssh-keygen生成客户端密钥

ssh-keygen -t rsa [-P 'password'] [-f “~/.ssh/id_rsa"]

59、SSH服务_ssh_22

59、SSH服务_rsync_23

使用ssh-copy-id将公钥拷贝到服务端

ssh-copy-id [-i [identity_file]] [user@]host

59、SSH服务_ssh_24

查看到目标server端的authorized_key中存在的公钥与client中一致

59、SSH服务_rsync_25

59、SSH服务_ssh_26

测试验证免密登录

59、SSH服务_sshd_27

ssh-keygen可对client的私钥密钥进行密钥保护

ssh-keygen -p

59、SSH服务_sshd_28

59、SSH服务_密钥登陆_29

取消密码保护

ssh-keygen -p -f id_rsa -N 

59、SSH服务_rsync_30

59、SSH服务_sshd服务配置_31

如对私钥使用了密码保护,那每次登录server服务端都需要输入密码,可通过验证代理(authentication agent)将密码托管,只需要在当前shell输入一次即可;如下为实现方式: 注:shell退出后验证代理也会退出

#启用代理  ssh-agent bash
#托管密保 ssh-

59、SSH服务_密钥登陆_32

SecureCRT或Xshell实现基于key验证
工具—>用户密钥管理—>生成
转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到需登录主机上相应文件authorized_keys中,注意权限必须为600,在需登录的ssh主机上执行:
ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys

批量执行命令或脚本

59、SSH服务_sshd_33

其他ssh客户端工具

scp命令复制文件

scp [options] [user@]host:/sourcefile /destpath
scp [options] /sourcefile [user@]host:/destpath

常用选项:
-c 压缩数据流
-r 递归复制
-p 保持源文件的属性信息
-q 静默模式
-P port 指明remote host的监听端口

rsync同步文件

rsync工具可以基于ssh和rsync协议实现高效率远程系统之间复制文件,比scp快,基于增量数据同步,只复制有变动文件

rsync -av /etc server1:/tmp #复制目录和目录下文件
rsync -av /etc/ server1:/tmp #只复制目录下文件

常用选项:
-n 模拟复制过程
-v 显示详细过程
-r 递归复制目录树
-p 保留权限
-t 保留修改时间戳
-g 保留组信息
-o 保留所有者信息
-l 将软链接文件本身进行复制(默认)
-L 将软链接文件指向的文件复制
-u 如果接收者的文件比发送者的文件较新,将忽略同步
-z 压缩,节约网络带宽
-a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)
--delete 源数据删除,目标数据也自动同步删除

59、SSH服务_密钥登陆_34

ssh服务器配置

服务端:sshd  配置文件:/etc/ssh/sshd_config  帮助文件 man 5 sshd_config

常用参数
Port 监听端口
ListenAddress ip 监听IP
LoginGraceTime 2m 登录时间
PermitRootLogin yes #默认ubuntu不允许root远程ssh登录,是否禁止root登录
StrictModes yes #检查.ssh/文件的所有者,权限等
MaxAuthTries 6 # 最大认证错误次数,需要除以2,默认6/2=3次
MaxSessions 10 #同一个连接最大会话 xshell中的复制会话,代表10个
PubkeyAuthentication yes #基于key验证
PermitEmptyPasswords no #空密码连接
PasswordAuthentication yes #基于用户名和密码连接
GatewayPorts no ssh是否可作为网关转发
ClientAliveInterval 10 #单位:秒
ClientAliveCountMax 3 #默认3 与上方时间一起作用,代表为3*10秒无操作自动断开
UseDNS yes #提高速度可改为no,解析域名
GSSAPIAuthentication yes #提高速度可改为no
MaxStartups #未认证连接最大值,默认值10
Banner /path/file

#以下可以限制可登录用户的办法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
DenyGroups

59、SSH服务_密钥登陆_35

59、SSH服务_rsync_36

解决ssh登录缓慢的问题

vim /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
systemctl restart sshd

ssh服务最佳实践

1、使用非标准端口
2、禁止使用protocol version1
3、限制可登录用户
4、设置空闲会话超时时长,以释放资源
5、使用防火墙设置ssh策略
6、基于口令认证时,使用强密码
7、使用基于密钥认证
8、禁止root直接登陆
9、限制ssh的访问频率和并发在线数
10、禁止使用空密码

标签:公钥,服务,登录,服务端,SSH,59,id,ssh,客户端
From: https://blog.51cto.com/gavenlee/6033707

相关文章

  • 基于pythondetcp多个客户端连接服务器
    壹:TCP是面向运输层的协议。使用TCP协议之前,必须先建立TCP连接,在传输完成后,必须释放已经建立的TCP连接。每条TCP连接只能有两个端,每一条TCP连接只能是点对点的。TCP提供可......
  • Dubbo 入门系列之基于 Dubbo API 开发微服务应用
    目标从零上手开发基于Dubbo的微服务难度低环境要求系统:Windows、Linux、MacOSJDK8及以上(推荐使用JDK17)GitIntelliJIDEA(可选)Docker(可选)动手实......
  • 通过Jenkins在远程服务器上执行shell脚本
    1、Jenkins安装PublishoverSSH插件         下载安装PublishoverSSH插件 2、配置服务器相关信息    要先在jenkins所在的机器上生成秘......
  • SSH命令
    ssh用户名@ip#远程指定管理指定Linux服务器,连接时会生成公钥 scp[-r]用户名@ip:远程路径 本地路径#下载文件本机是192.168.0.252,从253上下载文件[email protected]......
  • Dnguard旗舰版 在线加壳加密服务
    提供.net程序的在线加密服务用户自己选择加密选项参数,上传要加密软件压缩包,后台加密完成后直接返回下载压缩包。加密工具DNGuard旗舰版(EnterpriseEdition)技术优势......
  • 图解华为云代码检查服务CodeArts Check
    华为云代码检查服务CodeArtsCheck为用户提供代码风格、通用质量与代码安全风险等检查能力,并提供问题闭环处理、检查报告等功能,可一站式完成代码检查作业。六大特性守护软件......
  • 【服务器数据恢复】多块磁盘先后掉线导致raid5崩溃,同友存储不可用的数据恢复案例
    服务器数据恢复环境&故障:某单位同友存储设备,该存储有大于5台的虚拟机,其中有3台linux系统虚拟机存储重要数据。存储设备中组建的raid5由于未知原因崩溃导致存储无法启动。......
  • 苏州服务器托管优秀案例|苏州优质IDC机房租用推荐
       在新兴IT产业,还有另外一个数据中心服务器托管的使用案例:您是否考虑过为大数据分析以及高性能计算实施一套服务器托管?关于大数据主机托管设施供应商,IT必须注意的其......
  • HDU-1159-Common Subsequence
    ​​题目链接​​​题目大意:给出两个字符串,求两个字符串的最长公共字串。思路:慢慢重心开始有贪心转向动态规划了,这题就是简单的动态规划题。以题目的第一组测试数据为例......
  • 图解华为云代码检查服务CodeArts Check
    华为云代码检查服务CodeArtsCheck为用户提供代码风格、通用质量与代码安全风险等检查能力,并提供问题闭环处理、检查报告等功能,可一站式完成代码检查作业。六大特性守护软......