精华内容
下载资源
问答
  • ssh 数据解析
    千次阅读
    2021-02-02 15:10:09

     SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。

    ssh服务端由2部分组成: openssh(提供ssh服务)    openssl(提供加密的程序)

    ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接

    SSH的工作机制 

          服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。       

    SSH的加密技术

    加密技术:传输过程,数据加密。            
    1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码
    2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。                   
      SSH2支持RSA和DSA密钥   
            DSA:digital signature Algorithm  数字签名
            RSA:既可以数字签名又可以加密      

    SSH知识小结           

       1.SSH是安全的加密协议,用于远程连接Linux服务器               
       2.SSH的默认端口是22,安全协议版本是SSH2               
       3.SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器               
       4.SSH客户端包含ssh连接命令和远程拷贝scp命令等 

    如何防止SSH登录入侵            

        1.密钥登录,更改端口               
        2.牤牛阵法               
        3.监听本地内网IP(ListenAddress 192.168.25.*)

    SSH功能大全   

    1.登录                   
    
           ssh -p22 omd@192.168.25.137               
    
       2.直接执行命令  -->最好全路径                   
    
           ssh root@192.168.25.137 ls -ltr /backup/data                       
    
               ==>ssh root@192.168.25.137 /bin/ls -ltr /backup/data               
    
       3.查看已知主机                    
    
            cat /root/.ssh/known_hosts
    
       4.ssh远程执行sudo命令
    
           ssh -t omd@192.168.25.137 sudo rsync hosts /etc/
    
    
    
       5.scp               
    
                 1.功能   -->远程文件的安全(加密)拷贝                   
    
                     scp -P22 -r -p /home/omd/h.txt omd@192.168.25.137:/home/omd/               
    
                 2.scp知识小结                   
    
                     scp是加密远程拷贝,cp为本地拷贝                   
    
                     可以推送过去,也可以拉过来                   
    
                     每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync
    
    
    
       6.ssh自带的sftp功能               
    
                 1.Window和Linux的传输工具                   
    
                      wincp   filezip                   
    
                   sftp  -->基于ssh的安全加密传输                   
    
                   samba   
    
                 2.sftp客户端连接                   
    
                    sftp -oPort=22 root@192.168.25.137                   
    
                    put /etc/hosts /tmp                   
    
                    get /etc/hosts /home/omd   
    
                3.sftp小结:                   
    
                    1.linux下使用命令: sftp -oPort=22 root@x.x.x.x                   
    
                    2.put加客户端本地路径上传                  
    
                    3.get下载服务器端内容到本地                   
    
                    4.远程连接默认连接用户的家目录

    ssh常见命令参数

     

    usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
    
               [-D [bind_address:]port] [-e escape_char] [-F configfile]
    
               [-i identity_file] [-L [bind_address:]port:host:hostport]
    
               [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
    
               [-R [bind_address:]port:host:hostport] [-S ctl_path]
    
               [-W host:port] [-w local_tun[:remote_tun]]
    
               [user@]hostname [command]


    关于后台ssh服务的相关


    image

    ssh免密设置

    1、进入用户的家目录

    # 查询openssl软件
    
        rpm -qa openssh openssl
    
    # 查询sshd进程
    
        ps -ef | grep ssh
    
            --> /usr/sbin/sshd
    
    # 查看ssh端口
    
        netstat -lntup | grep ssh  
    
        ss | grep ssh                (效果同上,同下,好用)
    
        netstat -a | grep ssh(记住这个)
    
        netstat -lnt | grep 22    ==>  查看22端口有没有开/ssh服务有没有开启
    
        技巧: netstat -lnt | grep ssh | wc -l -->只要大于2个就是ssh服务就是好的
    
    # 查看ssh的秘钥目录
    
        ll /root/.ssh/known_hosts  # 当前用户家目录的.ssh目录下
    
    # ssh的配置文件
    
        cat /etc/ssh/sshd_config   
    
    # ssh服务的关闭
    
        service sshd stop
    
    # ssh服务的开启:
    
        service sshd start
    
    # ssh服务的重启
    
        service sshd reload    [停止进程后重启] ==> 推荐
    
        service sshd restart   [干掉进程后重启] ==> 不推荐
    
    # ssh远程登录
    
        ssh 192.168.1.100      # 默认利用当前宿主用户的用户名登录
    
        ssh omd@192.168.1.100  # 利用远程机的用户登录
    
        ssh omd@192.168.1.100  -o stricthostkeychecking=no # 首次登陆免输yes登录
    
        ssh omd@192.168.1.100 "ls /home/omd"  # 当前服务器A远程登录服务器B后执行某个命令
    
        ssh omd@192.168.1.100 -t "sh /home/omd/ftl.sh"  # 当前服务器A远程登录服务器B后执行某个脚本

    2、根据DSA算法生成私钥和公钥【默认建立在当前用户的家目录】

    [root@localhost ~]# cd /root/.ssh/             【root用户就在root目录下的.ssh目录】
    
    [root@localhost ~]# cd /home/omd/.ssh/   【普通用户就是在家目录下的.ssh目录】

    image

     

    [root@localhost .ssh]# ssh-keygen -t dsa     # 一路回车即可
    
                    id_dsa         -->私钥(钥匙)
    
                    id_dsa.pub     -->公钥(锁)


    3.拷贝公钥给目标服务器

    [root@localhost .ssh]# ssh-copy-id -i id_dsa.pub omd@192.168.25.110              【 使用ssh登录的默认端口22】
    
    [root@localhost .ssh]# ssh-copy-id -i id_dsa.pub –p 666 omd@192.168.25.120   【使用ssh登录设置的端口666】


    4. 查看目标服务器生成的文件

    [omd@localhost .ssh]$ ll /home/omd/.ssh/authorized_keys

     

    5. 免密码登录目标服务器

    ssh omd@192.168.25.110

    6. 总结一下钥匙和锁的关系

    1.多个钥匙开一把锁
    
          把id_dsa.pub 复制给各个服务器
    
    
    
    2.一个钥匙开duobasuo
    
          把id_dsa 传给各个服务器
    
          把id_dsa 传给自己 

    ssh排查问题

    1.判断物理链路是否通  ping 192.168.25.130     线路 | 防火墙 | 是否同一个网的
    
                ping   本身是icmp协议
    
    2.判断服务是否正常
    
    

     

    telnet 192.168.25.130 22

     

    3.Linux防火墙

    service iptables status ==>  /etc/init.d/iptables status 

    4.打开ssh的调测进行观察

    ssh -vvv omd@192.168.1.100

    SSH批量分发与管理方案小结


    1.利用root做ssh key验证

    优点:简单,易用
        缺点:安全性能差,无法禁止root远程连接


    2.利用普通用户omd                -->推荐


        思路:把要分发的文件拷贝到服务器用户的家目录,然后利用sudo提权拷贝分发的文件和对应目录
        优点:安全
        缺点:复杂,配置麻烦
        1.sudo提权
            echo 'omd     All=(All)      NOPASSWD:/usr/bin/rsync' >> /etc/sudoers
            visudo -c
            grep omd /etc/sudoers
        2.ssh分发到服务器的家目录
            ssh -p22 -r /etc/hosts omd@192.168.25.137:~
        3.ssh使用sudo复制到目标服务器的/etc
            ssh -t omd@192.168.25.137 sudo rsync hosts /etc/

    3.拓展方案2,不用sudo,而是设置suid对固定命令提权

     优点:相当安全
           缺点:复杂,安全性较差,任何人都可以处理带有suid权限的命令
           1.which rsync
           2.chmod 4755 /usr/bin/rsync       

    ssh章节小结             

        1.ssh远程的加密连接协议,相关软件openssh,openssl               
        2.默认端口22               
        3.ssh版本协议               
        4.服务器ssh连接,ftp连接,sshd守护进程,开机启动               
        5.ssh客户端重要命令:ssh(用户登录&&远程命令),scp,sftp,               
        6.安全验证方式:口令,密钥  学习原理               
        7.ssh服务优化:改端口,改监听,no root,no empty,no DNS,
        8.ssh密钥对,公钥在服务器端,私钥在客户端

    修改ssh服务的启动文件sshd的几个点

    1-1修改 /etc/ssh/sshd_config<br>        GSSAPIAuthentication yes    解决一台服务器管理多个ssh服务
    
        UseDNS no  加快响应速度因为在内网环境下
    
        PermitRootLogin no  不运行root用户直接登录
    
        Port 11544 更改访问端口号
    
        ListenAddress  192.168.25.130  只监听内网的IP
    
        Match User anoncvs     当前环境允许登录的用户
    
        PermitRootLogin no      是否允许root用户登录,一般不允许开
    
    1-2重启服务
    
        service sshd restart       写入命令进内存
    
        service sshd reload(优先)  reload是一个平滑的访问,不影响用户使用
    
    1-3查看连接端口
    
        netstat -an | grep EST


    SSH跳过HostKeyChecking,不用输入yes

    SSH跳过输入ssh跳过RSA key fingerprint输入yes/no

    在配置大量的节点之间需要ssh连通的时候,如果自动复制很多节点,都需要输入yes,两两节点之间都要互通一次,这样会造成很大的麻烦

    解决1;修改配置文件/etc/ssh/ssh_config

    找  到  # StrictHostKeyChecking ask  
    
    修改为:StrictHostKeyChecking no  


    解决2: 添加参数 –o  【o=option】

    ssh root@192.168.25.133 -o "StrictHostKeyChecking no"
    scp -o "StrictHostKeyChecking no" newfile.txt <a href="mailto:root@192.168.25.133:/root">root@192.168.25.133:/root</a>

    ssh带密码登录之sshpass的安装

    解压文件以及更多linux编程技术都可以进群973961276获取哦!

    上传文件到服务器

    CentOS下安装:

    [root@localhost ~]# tar xf sshpass-1.06.tar.gz
    
    [root@localhost ~]# cd sshpass-1.06
    
    [root@localhost sshpass-1.06]# ./configure
    
    [root@localhost sshpass-1.06]# make && make install


    检查是否安装成功:

    [root@localhost sshpass-1.06]# which sshpass
    
    /usr/local/bin/sshpass

    远程登录主机:

    sshpass -p FTL600@HH ssh omd@192.168.25.110 -o "StrictHostKeyChecking no"

    注意:如果是第一次登录,需要输入手动yes,此时sshpass并不会给提示,所以登录异常

    Ubuntu下安装方法一[推荐]:简单

    omd@omd-virtual-machine:~/sshpass-1.06$ sudo apt install sshpass

    安装成功:

    	
    omd@omd-virtual-machine:~/sshpass-1.06$ which sshpass

    Ubuntu下安装方法二:

    omd@omd-virtual-machine:~$ tar xf sshpass-1.06.tar.gz
    
    omd@omd-virtual-machine:~$ cd sshpass-1.06/
    
    omd @omd-virtual-machine:~/sshpass-1.06$ ./configure
    
    omd@omd-virtual-machine:~/sshpass-1.06$ sudo make && make install
    
    其同CentOS下安装


    附ssh的配置文件

    [root@localhost .ssh]# cat /etc/ssh/sshd_config
    
    #       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
    
    
    
    # This is the sshd server system-wide configuration file.  See
    
    # sshd_config(5) for more information.
    
    
    
    # This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
    
    
    
    # The strategy used for options in the default sshd_config shipped with
    
    # OpenSSH is to specify options with their default value where
    
    # possible, but leave them commented.  Uncommented options change a
    
    # default value.
    
    
    
    #Port 22
    
    #AddressFamily any
    
    #ListenAddress 0.0.0.0
    
    #ListenAddress ::
    
    
    
    # Disable legacy (protocol version 1) support in the server for new
    
    # installations. In future the default will change to require explicit
    
    # activation of protocol 1
    
    Protocol 2
    
    
    
    # HostKey for protocol version 1
    
    #HostKey /etc/ssh/ssh_host_key
    
    # HostKeys for protocol version 2
    
    #HostKey /etc/ssh/ssh_host_rsa_key
    
    #HostKey /etc/ssh/ssh_host_dsa_key
    
    
    
    # Lifetime and size of ephemeral version 1 server key
    
    #KeyRegenerationInterval 1h
    
    #ServerKeyBits 1024
    
    
    
    # Logging
    
    # obsoletes QuietMode and FascistLogging
    
    #SyslogFacility AUTH
    
    SyslogFacility AUTHPRIV
    
    #LogLevel INFO
    
    
    
    # Authentication:
    
    
    
    #LoginGraceTime 2m
    
    #PermitRootLogin yes
    
    #StrictModes yes
    
    #MaxAuthTries 6
    
    #MaxSessions 10
    
    
    
    #RSAAuthentication yes
    
    #PubkeyAuthentication yes
    
    #AuthorizedKeysFile     .ssh/authorized_keys
    
    #AuthorizedKeysCommand none
    
    #AuthorizedKeysCommandRunAs nobody
    
    
    
    # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
    
    #RhostsRSAAuthentication no
    
    # similar for protocol version 2
    
    #HostbasedAuthentication no
    
    # Change to yes if you don't trust ~/.ssh/known_hosts for
    
    # RhostsRSAAuthentication and HostbasedAuthentication
    
    #IgnoreUserKnownHosts no
    
    # Don't read the user's ~/.rhosts and ~/.shosts files
    
    #IgnoreRhosts yes
    
    
    
    # To disable tunneled clear text passwords, change to no here!
    
    #PasswordAuthentication yes
    
    #PermitEmptyPasswords no
    
    PasswordAuthentication yes
    
    
    
    # Change to no to disable s/key passwords
    
    #ChallengeResponseAuthentication yes
    
    ChallengeResponseAuthentication no
    
    
    
    # Kerberos options
    
    #KerberosAuthentication no
    
    #KerberosOrLocalPasswd yes
    
    #KerberosTicketCleanup yes
    
    #KerberosGetAFSToken no
    
    #KerberosUseKuserok yes
    
    
    
    # GSSAPI options
    
    #GSSAPIAuthentication no
    
    GSSAPIAuthentication yes
    
    #GSSAPICleanupCredentials yes
    
    GSSAPICleanupCredentials yes
    
    #GSSAPIStrictAcceptorCheck yes
    
    #GSSAPIKeyExchange no
    
    
    
    # Set this to 'yes' to enable PAM authentication, account processing,
    
    # and session processing. If this is enabled, PAM authentication will
    
    # be allowed through the ChallengeResponseAuthentication and
    
    # PasswordAuthentication.  Depending on your PAM configuration,
    
    # PAM authentication via ChallengeResponseAuthentication may bypass
    
    # the setting of "PermitRootLogin without-password".
    
    # If you just want the PAM account and session checks to run without
    
    # PAM authentication, then enable this but set PasswordAuthentication
    
    # and ChallengeResponseAuthentication to 'no'.
    
    #UsePAM no
    
    UsePAM yes
    
    
    
    # Accept locale-related environment variables
    
    AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    
    AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    
    AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    
    AcceptEnv XMODIFIERS
    
    
    
    #AllowAgentForwarding yes
    
    #AllowTcpForwarding yes
    
    #GatewayPorts no
    
    #X11Forwarding no
    
    X11Forwarding yes
    
    #X11DisplayOffset 10
    
    #X11UseLocalhost yes
    
    #PrintMotd yes
    
    #PrintLastLog yes
    
    #TCPKeepAlive yes
    
    #UseLogin no
    
    #UsePrivilegeSeparation yes
    
    #PermitUserEnvironment no
    
    #Compression delayed
    
    #ClientAliveInterval 0
    
    #ClientAliveCountMax 3
    
    #ShowPatchLevel no
    
    #UseDNS yes
    
    #PidFile /var/run/sshd.pid
    
    #MaxStartups 10
    
    #PermitTunnel no
    
    #ChrootDirectory none
    
    
    
    # no default banner path
    
    #Banner none
    
    
    
    # override default of no subsystems
    
    Subsystem       sftp    /usr/libexec/openssh/sftp-server
    
    
    
    # Example of overriding settings on a per-user basis
    
    #Match User anoncvs
    
    #       X11Forwarding no
    
    #       AllowTcpForwarding no
    
    #       ForceCommand cvs server

     

     

    更多相关内容
  • SSH协议解析及wireshark抓包分析

    千次阅读 2021-07-11 08:42:15
    ssh中文名称叫安全外壳协议,是一种加密的网络传输协议。SSH 在 TCP 和 UDP 中都被分配了端口 22。 但是,由于需要可靠的通信、正确的数据包排序等,该协议主要在 TCP 上运行。 为什么需要SSHSSH 和 telnet 之间...

    ssh中文名称叫安全外壳协议,是一种加密的网络传输协议。SSH 在 TCP 和 UDP 中都被分配了端口 22。 但是,由于需要可靠的通信、正确的数据包排序等,该协议主要在 TCP 上运行。

    为什么需要SSH?

    SSH 和 telnet 之间的主要区别在于 SSH 提供完全加密和经过身份验证的会话。而telnet缺少安全的认证方式,而且传输过程采用TCP进行明文传输,存在很大的安全隐患。单纯提供telnet服务容易招致DoS、主机IP地址欺骗、路由欺骗等。所以在远程登陆上SSH替代telnet,提供更安全可靠的服务。

    如何实现数据的安全呢?

    我们肯定会想,对于数据,我使用加密就行啦,没错。对于加密机制,主要有两种:

    对称密钥加密
    非对称密钥加密

    广义地说,根据使用的密钥,如果加密与解密使用相同的密钥,则称为对称密钥加密,如果加密与解密使用不同的密钥我们称为非对称密钥加密。

    对于对称密钥加密和非对称密钥加密。实际应用过程中会面临一个问题:我们如何确保安全的保存密钥呢?或者说Client端如何保证接受到的公钥就是目标Server端的?下面我们接着讲。

    Client端如何保证接受到的公钥就是目标Server端的?
    图片来源网上,如果一个攻击者中途拦截Client的登录请求,向其发送自己的公钥。而中间人用自己的假公钥替换掉server的真公钥,这就窃取了Client的登录信息了。这就是中间人攻击。

    认证:私钥加密公钥解密;

    主要用于身份验证,判断某个身份的真实性。使用私钥加密之后,用对应的公钥解密从而验证身份真实性。

    A要验证B是否是真实用户

    1、B将自己公钥给A
    2、B将文件用自己私钥加密传送给A
    3、A根据B的公钥解密,如果成功则为真实身份用户

    识别数据发送者和接收者身份客户端验证SSH服务端的身份:防止攻击者仿冒SSH服务端身份,避免中间人攻击和重定向请求的攻击。

    OpenSSH 通过在 know-hosts 中存储主机名和 host key 对服务端身份进行认证。

    在这里插入图片描述

    authorized_keys:保存已授权的客户端公钥
    id_rsa:保存私钥
    id_rsa.pub:保存公钥
    known_hosts:保存已认证的远程主机ID

    聊一聊SSH的基本框架

    SSH协议框架中最主要的部分是三个协议:

    • 传输层协议:提供服务器认证,数据机密性,信息完整性等的支持;
    • 用户认证协议: 则为服务器提供客户端的身份鉴别;有两种方式,方式一:口令(密码);方式二:证书(公钥)。建立在传输层协议(SSH-TRANS)基础之上。
    • 连接协议:连接协议将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用。它建立在用户认证协议之上。

    下面我们先通过wireshire抓包分析SSH协议。

    wireshire抓包分析SSH协议

    分析SSH协议上述三个流程,先上个图来瞅一瞅。

    在这里插入图片描述

    TCP三次握手

    所有基于TCP的通信都需要从两台主机的握手开始,这样=个握手过程主要希望达到的这样一些目的。

    • 保证传输主机可以确定目的主机在线并且进行通信。
    • 让传输主机确定目标主机在监听传输主机试图连接的端口。
    • 允许传输主机向目标主机发送它的起始序列号,使得两台主机可以将这一个会话保存得井然有序。

    在这里插入图片描述
    在这里插入图片描述

    主动向通信的设备向目标发送一个TCP数据包,这个数据包的TCP头设置了SYN标志。主机B向这个数据包回复一个类似的SYN和ACK标志以及包含的它的初始序列号的数据包。

    最后,主机A向主机B发送最后一个设置ACK标志的数据包,这样就具备所需要正常通信所需的信息。

    这个过程属于传输阶段。

    SSH版本协商

    在这里插入图片描述
    在这里插入图片描述

    服务器将自己的SSH协议版本发送到客户端。客户端将自己的SSH协议版本发送到服务器,这些协议是以 ASCII 字符串表示。

    如果一个只使用 SSH-1 的客户端连接到一个只使用 SSH-2 的服务器上,那么客户端就会断开连接并打印一条错误消息。

    密钥交换

    在这里插入图片描述在这里插入图片描述

    密钥协商过程从客户端和服务器相互发出Key Exchange Init请求开始,主要是告诉对方自己支持的相关加密算法列表、MAC算法列表等。

    在这里插入图片描述

    客户端发送D-H公钥,服务端与客户端使用D-H算法生成会话密钥key。服务端回复,服务端与客户端使用D-H算法生成会话密码key

    在这里插入图片描述

    DH回复包:

    • 一个服务端的公钥,即证书,客户端会将该公钥与本地公钥对比,看是否是被信任的服务器,如过是第一次访问则会询问用户是否信任这样的公钥。
    • 服务端回复的D-H公钥
    • 签名

    这个时候,服务端端还会回复一个new Key包 用于表明服务端可以使用会话密码key加密消息了。

    在这里插入图片描述客户端要回复服务端的new key包

    在这里插入图片描述
    以表明双方构建了一个加密通道,可以使用会话密码key加密来传输信息了。

    在这里插入图片描述
    这个时候服务器就有了会话密码。接下来就是加密后的数据了,我们无法从中看出任何有用信息。

    ssh协议的复杂度也是远超于此的,这里就讲到这里。我们写个代码识别一下SSH协议。

    static int ssh_dissect_protocol(u_char *ssh_data,int offset,unsigned int *version,
    bool *need_desegmentation,int PayloadLen)
    {
        int    protolen = 0;
    
    	int line1 = PayloadLen-1;
    	int line2 = PayloadLen-2;
    
    	if (ssh_data[line2] == 0x0d && ssh_data[line1] == 0x0a)
    		protolen = PayloadLen - 2;
    	else
    		protolen = PayloadLen - 1;
    
        if (strstr((const char *)ssh_data, "SSH-")  == NULL){
    		
    		printf( "Encrypted packet (len=%d)\n", PayloadLen);
    		offset += PayloadLen;
            return offset;
        }
    
    	if (strstr((const char *)ssh_data, "SSH-2.") == 0) 
    	{
    		*version = SSH_VERSION_2;
    	} 
    	else if (strstr((const char *)ssh_data,"SSH-1.99-") == 0) 
    	{
    		*version = SSH_VERSION_2;
    	} 
    	else if (strstr((const char *)ssh_data, "SSH-1.") == 0) 
    	{
    		*version = SSH_VERSION_1;
    	}
    
    	g_version = *version;
    
    	char *Proto = (char*)malloc(protolen);
    	if (Proto == NULL)
    	{
    		printf("Failed to apply for memory\n");
    		return -1;
    	}
    	
    	memcpy(Proto, ssh_data + offset,protolen);
    	Proto[protolen] = '\0';
        printf("Protocol (%s)\n",Proto);
    
    
        offset += protolen;
        return offset;
    }
    
    
    void dissect_ssh(u_char *ssh_data,int PayloadLen)
    {
    	int offset = 0;
    	int i  = 0;
    	unsigned int  version = 0;
    	bool   need_desegmentation = false;
    
    	
    	if (PayloadLen <= 0)
    		return;
    
    	if (strstr((const char *)ssh_data, "SSH-") != NULL)
    	{
    		offset = ssh_dissect_protocol(ssh_data,
                        offset,&version, &need_desegmentation,PayloadLen);
    
    	}
    	else
    	{
    		printf("g_version: %d\n",g_version);
    		
    		
    		 switch(g_version) 
    		 {
    
                case SSH_VERSION_UNKNOWN:
                    printf("Encrypted packet (len=%d)\n", PayloadLen);
                    break;
    
                case SSH_VERSION_1:
                    
                    break;
    
                case SSH_VERSION_2:
                    
                    break;
                }
    		
    	}
    }
    

    编译运行:
    在这里插入图片描述

    总结

    我在使用SSH登录服务器的时候,即使被中途截获,密码也不会泄露。SSH实现的目的是实现安全远程登录以及其它安全网络服务。对SSH感兴趣的朋友结合SSH协议RFC文档研究。

    欢迎关注微信公众号【程序猿编码】,需要SSH源码报文的添加本人微信号(17865354792)

    参考密码学与网络安全

    展开全文
  • SSH服务详解

    2022-04-18 15:30:58
    SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议。 SSH服务的安全性: 数据传输是加密的,可以防止信息泄漏 数据传输是压缩的,可以提高...

    一.SSH概述

    SSH (Secure Shell) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议。
    SSH服务的安全性
    数据传输是加密的,可以防止信息泄漏
    数据传输是压缩的,可以提高传输速度
    SSH服务采用C/S架构,我们常见的SSH客户端有:Putty、 Xshell、 CRT、 MobaXterm、 FinalShell
    SSH服务端为:OpenSSH
    OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux 操作系统。Centos7系统默认已安装openssh相关软件包,并将sshd服务添加为开机自启动。
    Openssh服务包
    OpenSSH软件包,提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务Telnet 或Ftp。

    OpenSSH服务需要4个软件包:
    openssh-5.3p1- 114.e16_ _7.x86_ 64            //包含openSSH服务器及客户端需要的核心文件。
    openssh-clients-5.3p1-114.el6_ 7.x86_ 64      //OpenSSH客户 端软件包。
    openssh-server-5.3p1-114.e16_ 7.x86_ 64       //OpenSSH服 务器软件包。
    openssh-askpass-5.3p1-114.e16_ _7.x86_ 64     //支持对话框窗口的显示,是一个基于x系统的

    sshd服务默认使用的是TCP的22端口
    sshd服务的默认配置文件在: /etc/ssh/下
    ssh_ config:客户端的配置文件
    sshd_ config :服务器配置文件

    二.SSHD服务

    ssh服务端主要包括两个服务功能ssh远程链接和sftp服务
    作用: SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件。
    相比较之前用Telnet 方式来传输文件要安全很多,因为Telnet 使用明文传输,SSH 是加密传输。

    2.1远程登录

    -l:指定登录名称。
    -P:指定登录端口(当服务端的端口非默认时,需要使用-p指定端口进行登录)

    登录方法一:
    ssh  远程服务器用户名@远程服务器主机名或IP地址 -p 端口    //默认端口为22,可以不加-p
    登录方法二:
    ssh -l +远程主机用户名 +远程服务器主机名或IP地址 -p 端口

    因方法二繁琐,我们正常使用方法一进行远程登录
    在这里插入图片描述

    2.2文件传输

    sftp是安全文件传送协议,可以为传输文件提供一种安全的网络的加密方法。
    sftp与ftp有着几乎一样的语法和功能。SFTP 为SSH的其中一部分,其实在SSH软件包中,已经包含了一个叫作SFTP全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作。所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP

    sftp root@192.168.48.6    //登陆到服务器
    get    //下载
    get -r //下载目录
    put    //默认会上传到/root
    help   //查看sftp可使用的命令和用途
    pwd    //显示当前服务器所在位置
    lpwd   //显示当前主机位置

    在这里插入图片描述

    三.SSH服务配置

    sshd服务器配置文件为:/etc/ssh/sshd_config

    3.1SSH服务安全调优

    Port 22               //监听端口,默认22,为了安全可以更改为高位端口
    ListenAddress 0.0.0.0 //监听地址,如果主机不需要从公网ssh访问,可以把监听地址改为内网地址
    UseDNS yes            //DNS反向解析
    SyslogFacility AUTHPRIV //用户登录的信息记录的类型为AUTHPRIV,sshd服务日志存放在: /var/1og/secure
    AllowUsers  xiayan     //只允许xiayan用户通过ssh登入,注:root用户不在名单中,也无法登入
    DenyUsers   csdn       //拒绝csdn用户通过ssh登入;注:DenyUsers与AllowUsers不能同时使用
    LoginGraceTime 2m   //登录时间限制2分钟,超时拒绝登录
    PermitRootLogin yes //是否允许root用户登入
    PasswordAuthentication yes //密码验证登录
    PermitEmptyPasswords no    //是否允许空密码用户登入
    PrintLastLog yes    //显示上次登入信息
    MaxAuthTries 6      //每个连接最大允许认证次数,若认证次数超过此数值一半,连接强制断开

    3.2SSH服务验证

    sshd服务支持两种验证方式
    1.密码验证:
    对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便。
    但从客户端角度来看,正在连接的服务器有可能被假冒;
    从服务器角度来看,当遭遇密码穷举(暴力破解)攻击时防御能力比较弱。
    同时:18位密码复杂性(大写、小写、字符、数字) 端口(1023以上叫做高位端口1922)
    2.密钥对验证:
    要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒,且可以免交互登录,在Shell 中被广泛使用
    当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可启用。

    四.密钥对构建

    在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
    公钥用来给数据加密,用公钥加密的数据只能使用私钥解。

    vim/etc/ssh/sshd_config
    PubkeyAuthentication yes    //启用密钥对验证
    Authori zedKeysFile  .ssh/authorized_ keys  //指定公钥库文件,默认存在“~/,ssh/”

    4.1密钥对原理

    首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SsH服务器上连接
    的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH服务器就用公钥加密"质询" ( challenge)并把它发送给SSH客户端。
    当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。

    通俗点讲,就是客户端生成一对密钥,私钥自己保存,公钥发给服务器,当进行连接时,系统验证公钥私钥是否匹配,匹配则验证通过,否则拒绝登入。

    4.2远程拷贝–scp

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,而且scp传输是加密的

    1.本地文件复制到服务器
    scp sheng root@192.168.48.6:/opt
    2.复制服务器的文件到本地
    scp root@192. 168.48.6: /opt/test/ ./
    3.本地目录复制到服务器
    scp -r 1234/ root@192.168.48.6:/opt

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.3密钥对配置

    1.在客户端创建密钥对
    通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等( ssh- keygen命令的“-t”选项用于指定算法类型)。
    在这里插入图片描述
    密钥对默认存储位置位:“~/.ssh/”下
    id_rsa是私钥文件,权限默认为600;
    id_ rsa.pub是 公钥文件,用来提供给ssH服务器
    在这里插入图片描述

    2.将公钥文件上传至服务器
    方法一:ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.48.6
    此方法可直接在“~/.ssh/”目录下生成authorized_ keys文件
    在这里插入图片描述
    方法二:使用scp命令

    scp ~/.ssh/id_rsa.pub root@192.168.48.6:~/.ssh/authorized_keys #将公钥复制到服务器中名改名为authorized_keys,必须改为此名

    在这里插入图片描述
    在这里插入图片描述

    五.访问控制–TCP Wrappers

    在Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如Samba、 BIND、HTTPD、 OpenSsh 等TCP Wrappers 将TCP服务程序“包裹"起来,代为监听TCP服务程序的端口,增加了一“个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序

    [root@xiayan ~]# rpm -q tcp_wrappers
    tcp_wrappers-7.6-77.el7.x86_64        #系统默认安装

    tcp_wrappers 保护机制的两种实现方式:
    1.直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
    2.由其他网络服务程序调用libwrap.so.* 链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。
    使用ldd命令可以查看程序的链接库

    语法格式: <服务程序列表>: <客户端地址列表>
    (1)服务程序列表
    ALL:代表所有的服务。
    单个服务程序:如“vsftpd" .
    多个服务程序组成的列表:如“vsftpd,sshd"。 .
    (2)客户端地址列表
    ALL:代表任何客户端地址。
    LOCAL:代表本机地址。多个地址以逗号分隔
    允许使用通配符*"和"?”,前者代表任意长度字符,后者仅代表一个字符
    网段地址,如"192.168.48." 或者192.168.48.0/255.255.255.0
    区域地址,如”xiayan.com"匹配xiayan.com域中的所有主机。

    访问控制的基本原则:
    首先检查/etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问;否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;如果检查上述两个文件都找不到相匹配的策略,则允许访问。
    “允许所有,拒绝个别”
    只需在/etc/hosts.deny文件中添加相应的拒绝策略
    “允许个别,拒绝所有
    除了在/etc/hosts .allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置"ALL:ALL"的拒绝策略。

    比如:只允许192.168.48网段的主机访问sshd服务,需要同时改两个文件
    vim /etc/hosts.allow
    在这里插入图片描述
    vim /etc/host.deny
    在这里插入图片描述

    六.总结

    1.sshd服务数据传输是加密的,可以防止信息泄漏,数据传输是压缩的,可以提高传输速度
    2.ssh服务有远程链接和sftp服务
    3.ssh服务中的sftp传输数据比ftp更加安全可靠
    4.密钥对为客户机生成并发送给服务器
    5.tcp_wrappers可以有效的控制某些地址的用户访问是否可以访问一些服务
    6.scp可以在两天linux主机间远程传输文件
    7.密钥对比密码验证更加安全可靠

    展开全文
  • 主要介绍了linux ssh 使用深度解析(key登录详解),需要的朋友可以参考下
  • 主要介绍了Java编程ssh整合常见错误解析,如果有什么不足之处,欢迎留言补充。
  • 这篇文章主要介绍了mysql数据迁徙方法工具解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 数据迁徙是每个后端都会遇到的工作之一,本文介绍了一些常见的...
  • Web 基础之 SSH 框架访问网页返回 json 数据简单实现的整理 目录 Web 基础之 SSH 框架访问网页返回 json 数据简单实现的整理 一、简单介绍 二、相关环境 三、注意事项 四、具体实现步骤 五、关键代码 六、...

    Web 基础之 SSH 框架访问网页返回 json 数据简单实现的整理

    目录

    Web 基础之 SSH 框架访问网页返回 json 数据简单实现的整理

    一、简单介绍

    二、相关环境

    三、注意事项

    四、具体实现步骤

    五、关键代码

    六、工程下载


    一、简单介绍

    Web 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。

    本节介绍,Web 开发 中 使用 SSH 框架,简单实现访问网页返回  json 数据的方法,如果有不足之处,欢迎指出,或者你有更好的方法,欢迎留言。

    二、相关环境

    1、Windows 10

    2、Eclipse Version: Oxygen.3a Release (4.7.3a)  Build id: 20180405-1200

    3、MySQL  8.0 + MySQL Workbench 8.0 CE

    4、Tomcat 8.5

    5、Java version 1.8.0_181
     

    三、注意事项

    1、引入 json 相关 jar的时候,可能 SSH 中已经存在某些包,可以不导入

    可以到这里下载 json jar:Java开发json数据的jar涉及的相关包Java_json_lib_2.4.zip-Java文档类资源-CSDN下载

    2、SSH 中使用 json 包的时候,注意 SSH  中要有 struts2-json-plugin-x.x.x.jar 包

    3、实现访问网页返回 json 数据时,关键是 Map<String,Object> map; 注意添加其 getter 和 setter 属性

    四、具体实现步骤

    该案例基于搭建好的 SSH 框架,SSH 框架可以参考:

    Web 框架之 SSH 框架的简单搭建的简单整理(基于Eclipse)_仙魁XAN-CSDN博客

    1、在搭好的 SSH 框架中,添加 json 相关包

    这里添加 struts2-json-plugin-2.5.16.jar ,commons-beanutils-1.8.0.jar,commons-collections-3.2.1.jar,ezmorph-1.0.6.jar,json-lib-2.4-jdk15.jar

     

    2、添加一个 TestJsonAction,实现获取数据库所有用户信息,然后封装成 json 数据

    3、对应实现 UserService 和 UserDao 中的获取所有用户信息的方法

    4、配置 struts 中 TestJsonAction 数据

    5、配置 spring applicationContext.xml,添加 testJsonAction 的 bean

    6、运行 工程

    7、浏览器输入对应的网址,网页就返回 json 数据了

    五、关键代码

    有些是,对应脚本添加的代码

    1、TestJsonAction

    package com.xan.web;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.xan.domain.User;
    import com.xan.service.UserService;
    
    // 测试 json 数据,获取 所有用户数据并且封装成 json 数据
    public class TestJsonAction extends ActionSupport {
    	
    	// 封装成 json 数据关键
    	private Map<String, Object> map;
    	private UserService userService;
    
    	public Map<String, Object> getMap() {
    		return map;
    	}
    
    	public void setMap(Map<String, Object> map) {
    
    		this.map = map;
    
    	}
    
    	public UserService getUserService() {
    		return userService;
    	}
    
    	public void setUserService(UserService userService) {
    		this.userService = userService;
    	}
    
    	public String jsonMessage() {
    
    		map = new HashMap<String, Object>();
    
    		// 获取 所有 User 并且封装成 json 数据
    		List<User> list = userService.findAllUser();
    
    		map.put("success", true);
    		map.put("message", list);
    
    		return "jsonData";
    
    	}
    
    }
    

    2、UserService 添加的代码

    
    	public List<User> findAllUser() {
    		// TODO Auto-generated method stub
    		return userDao.findAllUser();
    	}

    3、UserDao 添加的代码

    public List<User> findAllUser() {
    		Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
    		// sql SQLQuery 方法
    		/*String sql = "select * from user";	
    		SQLQuery sqlQuery = session.createSQLQuery(sql).addEntity(User.class);
    		List<User> users = sqlQuery.list();
    		*/
    		// hql Query
    		String hql = "from com.xan.domain.User";
    		Query createQuery = session.createQuery(hql);
    		List<User> users = createQuery.list();
    		return users;
    	}

    4、struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    	"http://struts.apache.org/dtds/struts-2.5.dtd">	
    <struts>
    	<constant name="struts.devMode" value="true" />
    	<constant name="struts.enable.DynamicMethodInvocation" value="true" />	
    	<!-- 让spring帮我们创建action -->
    	<constant name="struts.objectFactory" value="spring"></constant>
    	
    	<package name="MySSH" namespace="/" extends="struts-default,json-default">
    		<global-allowed-methods>regex:.*</global-allowed-methods>
    		<action name="UserAction_*" class="com.xan.web.UserAction" method="{1}">
    			<result name="login">/login.jsp</result>
    			<result name="toIndex">/index.html</result>
    		</action>
    		
    		<action name="testGetJson" class="com.xan.web.TestJsonAction" method="jsonMessage">
    			<result name="jsonData" type="json">
    				<param name="root">map</param>
    			</result>
    		</action>
    		
    	</package>	
    </struts>

    5、applicationContext.xml 中添加的代码

    <bean name="testJsonAction" class="com.xan.web.TestJsonAction" scope="prototype">
    		<property name="userService" ref="userService"></property>
    	</bean>

    六、工程下载

    工程下载地址:代码工程Web基础之SSH框架访问网页返回json数据简单实现的整理-Web开发文档类资源-CSDN下载

    展开全文
  • SSH详解

    2021-11-05 10:49:55
    0x006332A8 0d 7a e0 4e 当前采用aes256-gcm算法对数据进程对称加密 加密前后长度均为0x24字节 0x0062D838 00 00 00 20 43 a9 82 6c 50 1a fa 13 95 b9 a0 0c ... C??lP.?.???. 0x0062D848 a3 e6 a3 73 87 12 ef ...
  • SSH框架详细解析

    2012-09-21 10:39:35
    详细描述 了 ssh 框架的搭建,里面有 struts1 ,struts2的内容,敬请参考
  • 我需要提取ssh协议握手过程中的数据,找了很多办法,比如是不是可以通过nmap直接提取数据,但是nmap只能提取到服务器使用的算法以及服务器的公钥,所以还需要找其他可行的办法 wireshark 知道wireshark的都清楚它的...
  • SSH框架解析

    千次阅读 热门讨论 2016-02-03 20:15:28
    Hibernate可以说是一个提供数据库服务的中间件,进行数据持久化。可以从一张图看看这个框架:  可以看出Hibernate的核心接口主要有5个:SessionFactory单个数据库映射关系编译后的内存镜像实现Hibernate...
  • 公钥登录 ...ssh-copy-id会将公钥写到远程主机的 ~/ .ssh/authorized_key 文件中 ssh-copy-id ldz@192.168.0.1 从此登录此电脑 就不需要输入密码了 远程主机将用户的公钥,保存在登录后的用户主目录
  • Client: ssh: Could not resolve hostname Client: Temporary failure in name resolution have: ssh: Could not resolve hostname have: Temporary failure in name resolution You: ssh: Could not ...
  • 我们后台管理系统SSH框架解析

    千次阅读 2016-02-17 13:56:42
    SSH框架: spring spring的配置文件位置在web.xml中,有个contextConfigLocation的参数,配置spring相关文件的位置。 按功能一般spring会配置分成下面几个资源文件 action配置struts的Action ...
  • Nginx配置与SSH服务

    2022-04-21 10:55:46
    Nginx配置与SSH服务。
  • msgid,主题依赖于最新的库进行解析(csv,xml,xlsxs,line等) 默认情况下充当过滤器(1个有效载荷= 1个动作)或数据生成器(块流) 所有函数均内置于名为biglib的库中,所有Big Nodes都依赖biglib用法Big SSH是...
  • ssh协议详解

    千次阅读 2020-12-10 11:27:40
    ssh默认使用22号端口,采用密文的形式在网络中传输数据,它将客户端与服务端之间的消息通过加密保护起来,这样就无法被窃取或者篡改了。相较于明文传输的telnet,具有更高的安全性。 ssh采用口令和密钥两种用户验证...
  • 在本文中小编给大家整理的是关于ssh框架原理及流程的相关知识点内容,有此需要的朋友们可以学习下。
  • ssh中使用ajax传递json数据 最近在写老师布置的ssh作业,我想使用vue来编辑页面,但是遇到了一个问题,想用ajax实现取到json数据,在浏览了众多的文章之后,加上自己的实践,最终解决了这个问题,因为大部分文章的...
  • 远程库相关命令$ ssh-keygen -t rsa -C "... 生成一对密钥-b:指定密钥长度; -e:读取openssh的私钥或者公钥文件; -C:添加注释; -f:指定用来保存密钥的... -l:显示公钥文件的指纹数据; -N:提供一个新密...
  • 指定 SSH-2 允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下: “aes128-cbc”, “aes192-cbc”, “aes256-cbc”, “aes128-ctr”, “aes192-ctr”, “aes256-ctr”, “3des-cbc”, “arcfour128...
  • SSH远程登陆配置sshd_config文件详解

    千次阅读 2022-05-24 14:04:45
    ssh是linux远程登录的安全协议,是 C/S 模式的架构,配置文件分为服务器端配置文件 [/etc/ssh/sshd_config] 与客户端配置文件默认配置文件[/etc/ssh/ssh_config] 用户配置文件[~/.ssh/config] sshd_config 是服务端...
  • 项目中需要使用ssh的方式采集数千台设备上的数据,但是在开发环境中却没有那么多台设备供连接使用。头就想出了用Java搞一个模拟的SSH服务器的方式,搞一千多个线程来响应查询,返回数据的方式也很简单,就是直接用一...
  • 使用ssh技术导入excel并且解析

    千次阅读 2016-10-11 17:44:40
    * 增加题目 根据 savepath 把文件拿到,在解析文件(第一行是 0 表头 不要, 从1开始, 每一列 必须和 数据库的表 一一对应) 解析出来 数据 在一一 放入到 数据库表中 使用的 hibernate 映射 * 通过POI解析excel...
  • 由struct2,spring4和hibernate5框架编写的java web代码; 数据库为mysql;...基于SSH框架的java在线考试系统,该系统主有管理员,教师,学生三类用户,实现的考试题型有:选择,填空,读程序写结果三类题型。
  • SSH和SSM对比总结

    2021-01-27 15:30:17
    MVC,即模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不...
  • SSH demo 简单解析之“增删改”   宏观了解SSH:       实体表: Bean.hbm.xml是给info.java和User.java进行配置,且能自动生成表.用这个就是hibernate对实体表进行封装,对jdb做了轻量级的封装,使得程序的...
  • SSH密钥分发者 目标 提供简单的服务以半自动确保一组系统(user @ host组合)上公共密钥的存在(或不存在)。 建筑学 前端 基于 基本上,CRUD接口()...在管理界面中添加密钥上传选项,该选项可自动解析公共SSH密钥
  • SSH数据源配置

    千次阅读 2011-11-02 13:33:40
    配置一个数据源   Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。  DBCP数据源   DBCP类包位于 /lib/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,703
精华内容 23,081
关键字:

ssh 数据解析