码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SSH远程登录协议


    目录

    什么是ssh服务器

    概念

    优点

    原理

    SSH登录

    方法一

    无需验证

    方法二

    格式: ssh -l   用户名    IP 地址  -p port

    -l :指定登录名称

    -p:选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)

    服务端配置

    1.修改默认端口    :17行修改自己的默认端口

    禁止root用户登录   :38行修改为no,默认注释并写的yes

    禁止普通用户登录

    白名单

    1.编辑配置文件

    添加一条指令允许所有主机访问我的xyc1   , 只允许用户在192.168.17.25上访问我xyc

    黑名单

    1.配置文件

    添加一条命令   禁止所有人连接xyc

    pc2 192.168.17.25    登录xyc失败

    ssh服务的最佳实践

    使用秘钥对及免交互验证登录

    原理:

    用户/密码:

                                                      密码登录

                                                     

                                                     公钥登录

    实验免密交互登录

    1.PC1(192.168.17.55)

    2.将PC1的公钥拷贝到PC2

    3.切换到PC2(192.168.17.25)

    4.切换到PC1(192.168.17.55)验证


    什么是ssh服务器

    概念

    SSH(Secure Shell)是一种安全的加密协议,用于远程连接服务器。SSH服务器允许用户通过安全的方式远程访问服务器,执行命令或传输文件。SSH服务由服务端软件(如OpenSSH)和客户端(如SecureCRT、Putty、xshell等)组成。SSH默认使用22端口提供服务,它有两个不兼容的ssh协议版本,分别是ssh1和ssh2。SSH服务端是一个守护进程,它在后台运行并监听来自客户端的连接请求。

    优点

    ssh:加密  压缩   远程连接加密协议  (3389端口)

    telnet:明文   无压缩  远程协议

    telnet  192.168.17.55    80   命令(查看80端口号是否打开)

    原理

    客户端首次发起连接,服务端  会生成一个随机会话id   

    会将  服务端的  公钥以及会话id   发给对面客户端

    客户端收到 会话id  以及 服务端的公钥

    会用客户端自己的公钥 以及会活id 做运算,产生一个结果

    然后再服务端公钥加密

    再将这个加密结果 传给服务端

    服务端收到加密结果后  会用自己的私钥解密得到 客户端的公钥和会话id运算结果

    因为已知会话id  所以可以得到客户端公钥   

    双方持有对方公钥

    SSH登录

    ssh  选项   用户名   IP地址

    方法一

    1. [root@localhost ~]# ssh root@192.168.17.25
    2. #默认使用22端口 root(对方的用户名)加IP地址,首次登会询问密码

    无需验证

    1. [root@xyc ~]# vim /etc/ssh/ssh_config
    2. 修改配置文件 无需验证 有安全风险

    方法二

    格式: ssh -l   用户名    IP 地址  -p port

    -l :指定登录名称

    -p:选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)

    [root@xyc ~]# ssh -l root 192.168.17.25
    

    -t :连跳

    [root@localhost ~]# ssh -t 192.168.17.25 ssh -t 192.168.17.21
    

    服务端配置

    1.修改默认端口    :17行修改自己的默认端口

    [root@localhost ~]# vim /etc/ssh/sshd_config
    

    禁止root用户登录   :38行修改为no,默认注释并写的yes

    [root@localhost ~]# vim /etc/ssh/sshd_config
    

    禁止普通用户登录

    [root@localhost xyc]# vim /etc/pam.d/su

    白名单

    1.编辑配置文件

    [root@localhost ~]# vim /etc/ssh/sshd_config
    

    添加一条指令允许所有主机访问我的xyc1   , 只允许用户在192.168.17.25上访问我xyc

    AllowUsers xyc@192.168.17.25  xyc1
    

    本机 192.168.17.55

    pc1  192.168.17.30

    访问xyc1  成功

    访问xyc失败

    pc2 192.168.17.25

    访问xyc1  成功

    访问xyc1  成功

    黑名单

    1.配置文件

    [root@localhost ~]# vim /etc/ssh/sshd_config

    添加一条命令   禁止所有人连接xyc

    DenyUsers xyc
    

    pc2 192.168.17.25    登录xyc失败

    ssh服务的最佳实践

    1. 建议使用非默认端口 22

    2. 禁止使用protocol version 1

    3. 限制可登录用户 白名单

    4. 设定空闲会话超时时长

    5. 利用防火墙设置ssh访问策略

    6. 仅监听特定的IP地址 公网 内网

    7. 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs

    8. 使用基于密钥的认证

    9. 禁止使用空密码

    10. 禁止root用户直接登录

    11. 限制ssh的访问频度和并发在线数

    12. 经常分析日志 分离

    使用秘钥对及免交互验证登录

    原理:

               1. 用户/密码

                2.基于秘钥

    用户/密码:

                1.生成公钥和私钥

                 2.将公钥导给对面

                                               

                                                        密码登录

    1. 客户端发起ssh请求,服务器会把自己的公钥发送给用户

    2. 用户会根据服务器发来的公钥对密码进行加密

    3. 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

         

                                                     

                                                     公钥登录

                               

    1. 首先在客户端生成一对密钥(ssh-keygen)

    2. 并将客户端的公钥ssh-copy-id 拷贝到服务端

    3. 当客户端再次发送一个连接请求,包括ip、用户名

    4. 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc

    5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

    6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

    7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

                            

    实验免密交互登录

    1.PC1(192.168.17.55)

    ssh-keygen -t ecdsa  //生成一个密钥
    

    2.将PC1的公钥拷贝到PC2

    1. cd .ssh
    2. ssh-copy-id -i id_ecdsa.pub xyc@192.168.17.25

    3.切换到PC2(192.168.17.25)

    1. [root@localhost ~]# cd /home
    2. [root@localhost home]# cd xyc/
    3. [root@localhost xyc]# ls -a
    4. . .bash_logout .cache .ICEauthority .ssh 视频 下载
    5. .. .bash_profile .config .local 公共 图片 音乐
    6. .bash_history .bashrc .esd_auth .mozilla 模板 文档 桌面
    7. [root@localhost xyc]# cd .ssh/
    8. [root@localhost .ssh]# ls
    9. authorized_keys known_hosts
    10. [root@localhost .ssh]# cat authorized_keys
    11. ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAqY3acl5dQz7poIwDeHzTZ62xsr7N3808Ux0I0dG08nuYfTnJZk6AHqPjrebM7Te3OtA8ZmBOy/w8F6/cmtbgI= root@localhost.localdomain
    12. [root@localhost .ssh]#

    4.切换到PC1(192.168.17.55)验证

    1. [root@localhost .ssh]# ssh-add
    2. Could not open a connection to your authentication agent. //报错未开启连接
    3. [root@localhost .ssh]# ssh-agent bash //开启连接
    4. [root@localhost .ssh]# ssh-add
    5. Identity added: /root/.ssh/id_ecdsa (/root/.ssh/id_ecdsa)
    6. [root@localhost .ssh]# ssh xyc@192.168.17.25
    7. Last login: Wed Nov 15 22:20:26 2023
    8. [xyc@localhost ~]$

  • 相关阅读:
    微信小程序:怎么在一个js中修改另一个js的数据(这里通过缓存进行实现)
    视频封装格式
    专家建议|8大措施加速你的创新职业规划和成长
    Hadoop入门(二):手把手带你从零基础到完整安装配置
    docker.1-应用(Application)部署容器化演进之路
    干货分享!各大跨境电商平台入驻指南及跨境电商实用工具推荐!
    Flink On Yarn实操演示
    python实现调和反距离空间插值法AIDW
    C++ LibCurl实现Web指纹识别
    【音视频开发】为什么无损音频会有44.1Khz这样的奇葩采样率?
  • 原文地址:https://blog.csdn.net/X2683933654/article/details/134405089
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号