• 基于SSH一些相关的命令


    ssh的介绍

    ssh : secure shell,protocol,22/tcp,安全的远程登录

    openssh : ssh 协议的开源实现

    dropbear : 另一个开源实现

    ssh协议版本

        v1 : 基于CRC-32做MAC,不安全;

        v2 : 双方主机协议选择安全的MAC方式

        基于DH算法做密钥交换,基于RSA或DSA实现身份认证

    两种认证方式:

        基于password

        基于key

    openssh:

        C/S

            C: ssh,scp,sftp

                Windows客户端:xshell,putty,securecrt

            S: sshd

       

    ssh客户端     

    ssh 配置文件在 /etc/ssh/ssh_config

        StrictHostKeyChecking no 首次登录不显示检查提示 

    格式:

    1. ssh [user@]host [command]
    2. ssh [-l user] host [command]
    3.     -p port :远程服务器监听的端口
    4.     -b :指定连接的源IP
    5.     -v :调试模式
    6.     -C :压缩方式
    7.     -X :支持x11转发
    8.     -Y :支持信任x11转发
    9.         ForwardX11Trusted yes
    10.     -t :强制伪tty分配
    ssh -t remoteserver1 ssh remoteserver2

    允许实现对远程系统经过验证的加密并安全访问

    当用户远程连接ssh服务器时,会复制ssh服务器 /etc/ssh/ssh_host*key.pub(centos7默认是ssh_host_ecdsa_key.pub)文件的公钥到客户机的 ~/.ssh/know_hosts中,下次连接时会比较两处有什么不同

    基于密钥的认证: 

    (1) 在客户端生成密钥对 ssh-keygen -t rsa [-P ''] [-f “/root/.ssh/id_rsa"] 

    ssh-keygen –t rsa –P ‘’  -f “/root/.ssh/id_rsa” 

     

    (2) 把公钥文件传输至远程服务器对应用户的家目录 

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

    (3) 测试 

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

    ssh-keygen  -i -f Identity.pub >> .ssh/authorized_keys

    (5)重设私钥口令:#ssh-keygen –p 

    (6)验证代理(authentication agent)保密解密后的密钥 

    • 这样口令就只需要输入一次

    • 在GNOME中,代理被自动提供

    • 否则运行ssh-agent bash 

    (7)钥匙通过命令添加给代理 ssh-add

    SSH端口转发

    本地转发:

    ssh –L  9527:telnetsrv:23 -N  sshsrv 

        当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务, 再解密被转发到telnetsrv:23 

        选项:

            -f : 后台启用

            -N : 不开远程shell

            -g : 启用网关功能

    该操作是在test1上操作的

    操作完需要关闭

    远程转发

    ssh –R 9527:telnetsrv:23 –N  sshsrv

    让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh 服务转发请求到本机ssh客户端,再由本机解密后转发到 telnetsrv:23 

    先在test2上操作

    在Test1上面操作

    动态端口转发

    当用firefox访问internet时,本机的1080端口做为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver 替之访问internet 

    在本机firefox设置代理socket proxy:127.0.0.1:1080 

    ssh -D 1080 root@sshserver

    X协议转发

    所有图形化应用程序都是X客户程序

    • 能够通过tcp/ip连接远程X服务器

    • 数据没有加密机,但是它通过ssh连接隧道安全进行 

    ssh -X user@remotehost gedit remotehost

        主机上的gedit工具,将会显示在本机的X 服务器上 

        传输的数据将通过ssh连接加密

    ssh服务器

    服务器端:

    sshd, 配置文件: /etc/ssh/sshd_config 

    常用参数: 

            Port ListenAddress ip 

            PermitRootLogin yes 

            ClientAliveInterval 0 

            UseDNS yes

         限制可登录用户的办法: 

            AllowUsers user1 user2 user3 

            DenyUsers 

            AllowGroups 

            DenyGroups

    ssh服务的最佳实践

    1. 不要使用默认端口

    2. 禁止使用protocol version 1

    3. 限制可登录用户 

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

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

    6. 仅监听特定的IP地址

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

    8. 使用基于密钥的认证

    9. 禁止使用空密码

    10. 禁止root用户直接登录

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

    12. 做好日志,经常分析

    编译安装dropbear

    ssh协议的另一个实现:dropbear 

    1. yum install gcc gcc-dev* zlib-dev* -y
    2. ./configure
    3. make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" 
    4. make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
    5. mkdir /etc/dropbear
    6. dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
    7. dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key
    8. dropbear -p 2222 -F

  • 相关阅读:
    如何获取用户请求的真实ip,并返回访问者的ip地理位置?node,vue
    纺织工厂数字孪生3D可视化管理平台,推动纺织产业数字化转型
    俄罗斯方块小游戏
    实现无公网IP的公网环境下Windows远程桌面Ubuntu 18.04连接,高效远程办公!
    vue组件和插槽
    大模型部署手记(3)通义千问+Windows GPU
    P3879 [TJOI2010] 阅读理解题解
    Spring Security是什么? - 简单例子(三)
    【日拱一卒行而不辍20220916】自制操作系统
    YMatrix 5.0 与天翼云完成产品兼容性认证
  • 原文地址:https://blog.csdn.net/ly1358152944/article/details/126344084