精华内容
下载资源
问答
  • CryptSync是一个小型实用程序,它在加密一个文件夹中内容时同步两个文件夹。 这意味着两个文件夹之一所有文件(使用文件)均未加密,而另一个文件夹所有文件均已加密。 同步以两种方式起作用:一个文件夹中...
  • vim最实用的操作命令

    2018-07-22 22:27:39
    笔者只记录常用vim命令,相信也很少有人能够将其全部记住,毕竟这只是一个编辑工具。也不值得我们投入大量精力。只求以最小精力,尽可能满足我们需要。 目录 一. vim常用模式 二.vim打开方式 三.vim...

              笔者只记录最常用的vim命令,相信也很少有人能够将其全部记住,毕竟这只是一个编辑工具。也不值得我们投入大量的精力。只求以最小的精力,尽可能满足我们的需要。

    目录

    一. vim常用模式

    二.vim打开方式

    三.vim文档操作

    四.光标移动

    五.vim文本插入

    六.查找替换

    7.多文件编辑

    七.撤销与重做

    八.文件加密

    九.文件编码


    一. vim常用模式

    正常模式:按:即可进入,此模式下可输入命令进行操作

    插入模式:按 i ,可对内容进行编辑,在光标处进行插入,退格以及回车操作

    可视模式:按v以字符精度进行选中,按V以行精度进行选中,ctrl+v以块精度进行选中。

                      可视模式下可进行d删除,y复制,p黏贴

    ​​​​​​​二.vim打开方式

    vim file  正常打开

    vim + file 从文件的末尾开始

    vim num file 从某一行开始

    三.vim文档操作

    :w 保存修改

    :wq 保存并退出

    :q 退出

    :q! 强制退出

    :e file  关闭当前文件,并打开其他文件

    :e! file  放弃对当前文件的修改,编辑新的文件。

    :e#或ctrl+^   回到上一个编辑的文件

    :Sex  水平分割,并浏览文件系统。在文件系统回车直接进入vim模式

    :Vex  垂直分割

    四.光标移动

    (1)基本移动

    0 移动到行首

    shift + 4 移动到行尾

    gg 文件头部

    G 文件尾部

    ctrl+f: 下翻一屏。

    ctrl+b: 上翻一屏

    ctrl+e: 向下滚动一行。

    ctrl+y: 向上滚动一行

    (2)标记

    m{a-z}: 标记光标所在位置,局部标记,只用于当前文件。

    m{A-Z}: 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。

    `{a-z}: 移动到标记位置。

    :marks 显示所有标记

    :delmarks a 

    :delmarks!  删除所有标记

    五.vim文本插入

    指定数量插入字符 eg:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=。 这在插入分割线时非常有用,如30i+<esc>就插入了36个+组成的分割线。

    o: 在下面新建一行插入;

    O: 在上面新建一行插入;

    :r filename在当前位置插入另一个文件的内容。

    :r !date 在光标处插入当前日期与时间。同理,:r !command可以将其它shell命令的输出插入当前文档。

    六.查找替换

    :/something: 在后面的文本中查找something

    :?something: 在前面的文本中查找something。

    n: 向后查找下一个。

    N: 向前查找下一个

    :s/old/new - 用new替换当前行第一个old。

    :s/old/new/g - 用new替换当前行所有的old。

    7.多文件编辑

    分屏编辑

    vi -o filenames 在水平分割的多个窗口中编辑多个文件。

    vi -O filenames 在垂直分割的多个窗口中编辑多个文件。

    ctrl+w 窗口切换

    qall – 关闭所有窗口,退出vim。

    :wall – 保存所有修改过的窗口。

    :only – 只保留当前窗口,关闭其它窗口。

    ctrl+w + –当前窗口增高一行。也可以用n增高n行。

    ctrl+w - –当前窗口减小一行。也可以用n减小n行。

    ctrl+w < –当前窗口减少一列。也可以用n减少n列。

    ctrl+w > –当前窗口增宽一列。也可以用n增宽n列。

    多标签编辑

    vim -p files: 打开多个文件,每个文件占用一个标签页。

    tabn – 切换到下一个标签。Control + PageDown,也可以。

    :tabp – 切换到上一个标签。Control + PageUp,也可以。

    七.撤销与重做

    [n] u: 取消一(n)个改动。

    :undo 3– 撤销3个改变。

    :undolist – 你的撤销历史。

    ctrl + r: 重做最后的改动。

    U: 取消当前行中所有的改动。

    :earlier 3m – 回到3分钟前

    :later 5s – 前进5秒

    八.文件加密

    vim -x file: 开始编辑一个加密的文件。

    :X – 为当前文件设置密码。

    :set key= – 去除文件的密码

    九.文件编码

    :e ++enc=utf8 filename, 让vim用utf-8的编码打开这个文件。

    :w ++enc=gbk,不管当前文件什么编码,把它转存成gbk编码。

    :set fenc或:set fileencoding,查看当前文件的编码。

    在vimrc中添加set fileencoding=ucs-bom,utf-8,cp936,vim会根据要打开的文件选择合适的编码。 注意:编码之间不要留空格。 cp936对应于gbk编码。 ucs-bom对应于windows下的文件格式。

     

     

     

     

    展开全文
  • 数据加密是确保计算机网络重要安全机制,但是,利用公钥体制,尤其是利用RSA算法的实用加密解密软件系统很少。庞大计算机网络就是因特网。它由非常多计算机网络通过许多路由器互联而成。因此因特网也称为...
  • 一、常用的加密/解密算法 1.Base64  严格来说Base64并不是一种加密/解密算法,而是一种编码方式。Base64不生成密钥,通过Base64编码后的密文就可以直接“翻译”为明文,但是可以通过向明文中添加混淆字符来达到...
  • 本文从实用的角度去描述前后端使用AES对称加密。需求分析 前端请求数据传递参数时,需要对其进行加密,而不是使用明文进行传输,防止http请求被人截获而获取到信息,AES对称加密就是一种方式,前端对密码进行加密,...

    概述

    高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法,对称加密算法即加密和解密的过程使用同一个秘钥进行加密。本文从实用的角度去描述前后端使用AES对称加密。

    需求分析

    前端请求数据传递参数时,需要对其进行加密,而不是使用明文进行传输,防止http请求被人截获而获取到信息,AES对称加密就是一种方式,前端对密码进行加密,传输给后端,后端获取之后使用和前端约定好的秘钥进行解密。

    前端AES加解密

    前端加密需要引入crypto-js的js文件,crypto-js是加密标准的JavaScript库,实现了各种加密算法,下载地址:https://www.yuque.com/docs/share/a764ecd9-3f47-4d40-8ec6-b80aca710d38?# 《前后端加密crypto-js.js文件》

    实操,demo如下

    前端AES加解密代码:

    // 密钥var key = '38373134313330303030333134313738'; key = CryptoJS.enc.Hex.parse(key) var iv = CryptoJS.enc.Hex.parse("303132333435233454243444546")  var src = mobile_phone; console.log('原字符串:', src);                    var enc = CryptoJS.AES.encrypt(src ,key,{                        iv:iv,                        mode: CryptoJS.mode.CBC,                        padding: CryptoJS.pad.Pkcs7                    })                    console.log('加密:',enc.toString());                    var enced = enc.ciphertext.toString()                     console.log("加密:", enced);                    var dec = CryptoJS.AES.decrypt(CryptoJS.format.Hex.parse(enced), key,{                        iv:iv,                        mode: CryptoJS.mode.CBC,                        padding: CryptoJS.pad.Pkcs7                    })                    console.log('解密:',CryptoJS.enc.Utf8.stringify(dec));                    

    其中key和iv的值并不是随意填写的,这个是需要后端加解密生成后给到前端使用

    后端AES加解密:

    package unis.cloud.data.tool;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;import java.security.InvalidAlgorithmParameterException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;import javax.crypto.SecretKey;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;public class AesTool { private static String iv = "0123456789ABCDEF";//偏移量字符串必须是16位 当模式是CBC的时候必须设置偏移量    private static String Algorithm = "AES";    private static String AlgorithmProvider = "AES/CBC/PKCS5Padding"; //算法/模式/补码方式    public static byte[] generatorKey() throws NoSuchAlgorithmException {        KeyGenerator keyGenerator = KeyGenerator.getInstance(Algorithm);        keyGenerator.init(256);//默认128,获得无政策权限后可为192或256        SecretKey secretKey = keyGenerator.generateKey();        return secretKey.getEncoded();    }    public static IvParameterSpec getIv() throws UnsupportedEncodingException {        IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes("utf-8"));        System.out.println("偏移量:"+byteToHexString(ivParameterSpec.getIV()));        return ivParameterSpec;    }    public static byte[] encrypt(String src) throws NoSuchAlgorithmException, NoSuchPaddingException,            InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException, InvalidAlgorithmParameterException {    byte key[] = "87000078".getBytes("utf-8");    SecretKey secretKey = new SecretKeySpec(key, Algorithm);        IvParameterSpec ivParameterSpec = getIv();        Cipher cipher = Cipher.getInstance(AlgorithmProvider);        cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);        byte[] cipherBytes = cipher.doFinal(src.getBytes(Charset.forName("utf-8")));        return cipherBytes;    }    public static byte[] decrypt(String src) throws Exception {    byte key[] = "87000078".getBytes("utf-8");    SecretKey secretKey = new SecretKeySpec(key, Algorithm);        IvParameterSpec ivParameterSpec = getIv();        Cipher cipher = Cipher.getInstance(AlgorithmProvider);        cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);        byte[] hexBytes = hexStringToBytes(src);        byte[] plainBytes = cipher.doFinal(hexBytes);        return plainBytes;    }    /**     * 将byte转换为16进制字符串     * @param src     * @return     */    public static String byteToHexString(byte[] src) {        StringBuilder sb = new StringBuilder();        for (int i = 0; i < src.length; i++) {            int v = src[i] & 0xff;            String hv = Integer.toHexString(v);            if (hv.length() < 2) {                sb.append("0");            }            sb.append(hv);        }        return sb.toString();    }    /**     * 将16进制字符串装换为byte数组     * @param hexString     * @return     */    public static byte[] hexStringToBytes(String hexString) {        hexString = hexString.toUpperCase();        int length = hexString.length() / 2;        char[] hexChars = hexString.toCharArray();        byte[] b = new byte[length];        for (int i = 0; i < length; i++) {            int pos = i * 2;            b[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));        }        return b;    }    private static byte charToByte(char c) {        return (byte) "0123456789ABCDEF".indexOf(c);    }    public static void main(String[] args) {        try {            // 密钥必须是16的倍数            byte key[] = "8711110000222278".getBytes("utf-8");            String src = "183222222222";            System.out.println("密钥:"+byteToHexString(key));            System.out.println("原字符串:"+src);            String enc = byteToHexString(encrypt(src));            System.out.println("加密:"+enc);            System.out.println("解密:"+new String(decrypt(enc), "utf-8"));        } catch (InvalidKeyException e) {            e.printStackTrace();        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (NoSuchPaddingException e) {            e.printStackTrace();        } catch (IllegalBlockSizeException e) {            e.printStackTrace();        } catch (BadPaddingException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        } catch (Exception e) {            e.printStackTrace();        }    }}

    后端输出结果:

    密钥:38373134313330303030333134313738原字符串:你好偏移量:30313233343536373839414243444546加密:08e56adf28a16558631aa0914d04bd0c偏移量:30313233343536373839414243444546解密:你好
    3f3c4c79286b11ef59b0eac54c34d145.png

    需要注意,后端输出的密钥和偏移量都要给前端,这样解析出来的参数才是一致的,其中后端打印出的密钥对应前端的key,后端打印出的便宜量对应前端的iv中的值!

    表达可能不太清楚,调试中有问题可私信我!

    展开全文
  • 因为一个支付接口,使用了PHP3des加密方式,相对des更强壮,但是刚开始写时候问题比较多,PHP中3DES加密结果在JAVA和C#中解密不了,最后研究完了,把代码分享出来。 代码有点乱,自己整理,实用为主! echo...

    PHP使用3DES加密代码,于JAVA和C#的3DES互通

    因为一个支付接口,使用了PHP的3des加密方式,相对des更强壮,但是刚开始写的时候问题比较多,PHP中3DES加密的结果在JAVA和C#中解密不了,最后研究完了,把代码分享出来。

    代码有点乱,自己整理,实用为主!

    echo pdex_sign('abc');
    
    function pdex_sign($codestr){
       function pkcs5_pad($text, $blocksize)
        {
            $pad = $blocksize - (strlen($text) % $blocksize);
            return $text . str_repeat(chr($pad), $pad);
        }
        function pkcs5_unpad($text)
        {
            $pad = ord($text{strlen($text)-1});
            if ($pad > strlen($text))
            {
                return false;
            }
            if( strspn($text, chr($pad), strlen($text) - $pad) != $pad)
            {
                return false;
            }
            return substr($text, 0, -1 * $pad);
        }
        $key = "96781E7B8D5A0E8A5CE7A95317394407";    //关键:加密key
        $iv = "wodepianyiliang";                      //关键:偏移量
        $iv = pack("H16", $iv);
        $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
        mcrypt_generic_init($td, base64_encode($key), base64_encode($iv));
        $str = base64_encode(mcrypt_generic($td,pkcs5_pad($codestr,8)));
        return $str;
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
        mcrypt_generic_init($td, $key, $iv);
        $ttt  = pkcs5_unpad(mdecrypt_generic($td, base64_decode($str)));
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td); 
        return $ttt;
    }

    abc这个字符串的3DES加密结果为:587/nwuFw9o=

    通过第三方网站可以进行解密,做验证

    展开全文
  • Qt Sqlite加密数据库驱动源代码

    热门讨论 2014-04-10 17:17:13
    这个我修改了一个宏定义,让其加密方式采用了AES256,而不是原来的AES128。 例程中包括了3个实用的函数,分别用来以某一密码打开或创建一个数据库,判断数据库是否处于解密状态,以及修改数据库密码。 sqlite3...
  • 7、集成网页加密实用工具,不同PHP版本配置区分,日志分割处理等多种实用功能。 8、多功能站点管理,自动定时重启服务器,自动定时重启Apache、mysql等相关服务。 首先打开Apache2.4站点管理,如下图 多功能php...
  • 目前最实用的ASP加密工具。可以将IIS + ASP(Active Server Page)实现的网站进行加密加密后的应用仍然可以在IIS下使用,但是他人已经无法直接阅读ASP脚本内容,彻底保护您的辛苦劳动成果和知识产权。您可以用来制作...
  • SSH以其简便的方式连接连接,并对通讯过程进行加密。基于所使用算法,一般认为窃听通过ssh通讯基本上不可能。SSH使用客户端,在Linux或Unix上一般是直接用ssh命令,在Windows 上在Cygwin或WSL等类Linux环境下...

    febe96703dd21bd00e6c56019360a662.png

    现在远程服务器管理最常用的方式要数SSH(Secure Shell了)。SSH以其最简便的方式连接连接,并对通讯过程进行加密。基于所使用的算法,一般认为窃听通过ssh通讯基本上不可能。SSH使用的客户端,在Linux或Unix上一般是直接用ssh命令,在Windows 上在Cygwin或WSL等类Linux环境下也支持。Windows系统会用很多客户端软件,比如SecureCRT Xshell,我使用的是免费开源的Putty。

    使用ssh有很多技巧,有些非常简单,有些则超出了一个终端应用的范畴。我们知道ssh可以安全地传输文件(scp),也可以通过ssh挂载远程文件系统;可以使用ssh浏览器中安全遨游网络,还可以使用ssh隧道加密传输流量。本文虫虫给大家介绍一下SSH的一些技巧。我们假设读者了解一些SSH基础知识:用scp和sftp用于文件复制,ssh-copy-id用于设置无密码证书登录,当然你不知道也没关系,问下度娘10分钟内就可以搞定。

    SSH别名

    ssh命令行上有很多选项要记住,比如IP、端口、用户名、私钥(如果不是标准位置和名字的证书,或者多个证书时候),但是实际上是可以偷懒的,甚至IP,端口我们都不需要记,只需要在~/.ssh /config文件中,可以创建一个别名,设置后这些选项即可。例如,假设要连接到一台主机,我们给他设置别名为Chongchong:

    Host chongchong  
    HostName ijz.me  
    Port 1234  
    User cc  
    IdentityFile ~/.ssh/chongchong_id  
    ForwardX11 yes  
    Compression yes  
    TCPKeepAlive yes 

    可以根据需要使用任意多个别名。至于添加多个"Host"配置行即可。可以在一个Host语句中添加多个别名。随后的选项可以用于任何一个别名。

    配置后我们只需连接ssh congchong,就会启用所有配置的选项。

    当然,如果使用的是Putty客户端,主要选项都在其配置的Session面板和SSH面板中。可能没有太多选择,但是可以尝试一些。

    0ae7212499242f2053f6a2dffd047619.png

    几个有用的配置项

    1. ControlMaster

    有一组非常有用的SSH配置项,包括设置master控制文件。例如:

    ControlMaster auto  
    ControlPath ~/.ssh/master-%r@%h:%p 

    这可以使连接同一主机的多个会话共享一个TCP套接字。因为设置安全套接字需要花费一些时间,如果在两个主机之间进行多个会话,该设置加快速度。可以使用配置文件中的Host *项对所有主机设置。还可以将其用于全局选项。

    需要注意的是,如果通过多个连接传输大量数据,则ControlMaster配置可能会影响传输,这时候可以使用-S none来临时覆盖掉全局设置关闭它。

    另外,如果在关闭所有其他连接之前尝试退出,则第一个ssh会话看起来可能会挂起。可以对登录到经常连接的主机时运行一个隐藏的ssh会话,可以避免该问题。但是,更好的方法是设置ControlPersist yes。这会使原始会话无限期地进入后台。可以对它设置时间限制,比如设置ControlPersist为180(或其他数字)。表示三分钟内没有连接,会自动关闭连接。

    这种方法的另一个缺点是,会产生很多的master垃圾文件。可以设置登陆时候自动清理,比如rc.local设置:

    /bin/rm /home/*/.ssh/master-* || true >/dev/null 

    如果使用Putty客户端,可以在SSH选项面板中选中"Share SSH connections if possible"多选项来设置。

    7a289b4e464f4545b2cfbb54750a9210.png

    2. BatchMode

    配置文件中还使用很多配置选项。例如,BatchMode告诉ssh该连接是无人值守应用,避免不必要的提示用户输入密码或其他交互性的内容。如果认证项设置不全就会直接报错退出。

    3. SendEnv

    可以在SSH连接时发送环境变量发送给远程主机。例如,希望在工作站和服务器上始终保持LS_COLORS相同,但是会经常更改,并且不希望使用相同的配置文件。可以添加下面配置:

    4. SendEnv LS_COLORS

    Putty可以从其configure页的"Connect/Data"选项卡中设置环境变量。

    5. TCPKeepAlive

    在网络端,如果希望服务器和客户端在空闲时不会断开,则可以设置TCPKeepAlive指定为yes。如果连接处于空闲状态,则不会断开连接。。

    远程命令执行

    这是SSH最有用的技巧。我们时常要登陆主机仅仅是为了执行一些命令,如果为了个别命令或者批量操作需要(当然可以用ansible等),要登陆主机在操作就有点不方便了。实际上,如果只是为了执行命令或者脚本,完全可以不用登陆到远程主机,直接用ssh命令就可以。

    简单命令执行

    SSH远程执行命令的格式为:

    ssh [用户名]@[远程主机名或 IP] [命令或脚本] 

    比如我们要获取远程主机运行信息,可以使用uptime:

    ssh chongchong uptime 

    结果:

    11:23:55 up 28 days, 23:41, 0 users, load average: 2.46, 1.16, 0.49 

    比如我们需要获取远程主机的磁盘情况,可以使用

    ssh chongchong df -h 

    0d677571b6abcbdb93348e07dea82869.png

    执行多条命令

    其他命令也类似,如果命令较长或者涉及多个命令需要把命令部分用引号括住:

    比如要获取主机情况和主机磁盘情况:

    ssh chongchong "uptime && df -h" 

    28c016584dae46991963047c5d2056cc.png

    或者使用:

    ssh chongchong "uptime ; df -h" 

    远程抓包

    设想一个更复杂的例子,我们需要对远程主机用抓包,然后再本地用Wireshark分析:

    ssh root@someserver 'tcpdump -c 1000 -nn -w - not port 1234' | wireshark -k -i - 

    当命令行下需要使用tshark的操作。

    ssh root@someserver 'tcpdump -c 1000 -nn -w - not port 1234' | wireshark -i - 

    结果:

    …  
    3.759005 112.215.162.105 -> 112.252.251.70 TCP 78 [TCP Dup ACK 840#2] outlaws > 65522 [ACK] Seq=49 Ack=90193 Win=126 Len=0 TSval=2402288138 TSecr=2506305501 SLE=91561 SRE=94297  
    3.759022 112.252.251.70 -> 112.215.162.105 TCP 1434 65522 > outlaws [ACK] Seq=95665 Ack=49 Win=309 Len=1368 TSval=2506305583 TSecr=2402288138  
    3.761937 fe80::6d94:f636:7715:26dc -> ff02::1:2 DHCPv6 150 Solicit XID: 0x58568d CID: 000100011dd4af3b00155d6d3404  
    3.762006 Cisco_d3:c7:bf -> Broadcast ARP 60 Who has 103.218.185.171? Tell 103.218.185.1  
    3.762374 121.50.168.101 -> 121.50.168.255 NBNS 92 Name query NB XENNO.INFO<00>  
    3.768515 169.254.2.31 -> 169.254.255.255 NBNS 92 Name query NB FSIGNS.DUBA.NET<00>  
    3.780159 Cisco_d3:c7:bf -> Broadcast ARP 60 Who has 202.74.234.238? Tell 202.74.234.1  
    3.796134 Cisco_d3:c7:bf -> Broadcast ARP 60 Who has 112.252.251.93? Tell 112.252.251.1  
    3.801334 112.215.162.105 -> 112.252.251.70 TCP 78 [TCP Dup ACK 840#3] outlaws > 65522 [ACK] Seq=49 Ack=90193 Win=126 Len=0 TSval=2402288179 TSecr=2506305501 SLE=91561 SRE=95665  
    3.801394 112.252.251.70 -> 112.215.162.105 TCP 1434 [TCP Fast Retransmission] 65522 > outlaws [ACK] Seq=90193 Ack=49 Win=309 Len=1368 TSval=2506305625 TSecr=2402288179  
    3.804767 185.216.140.36 -> 157.119.69.59 TCP 60 51426 > 52622 [SYN] Seq=0 Win=1024 Len=0  
    3.806149 Cisco_d3:c7:bf -> Broadcast ARP 60 Who has 103.248.220.121? Tell 103.248.220.1  
    3.807153 Cisco_d3:c7:bf -> Broadcast ARP 60 Who has 103.248.221.171? Tell 103.248.221.1  
    3.809116 fe80::a563:2c5c:97df:13ca -> ff02::1:2 DHCPv6 148 Solicit XID: 0x5c67c7 CID: 000100011dd4af3b00155d6d3404  
    3.811726 Cisco_d3:c7:bf -> Broadcast ARP 60 Who has 202.74.232.203? Tell 202.74.232.1  
    3.812418 Cisco_d3:c7:bf -> Broadcast ARP 60 Who has 157.119.71.127? Tell 157.119.71.1  
    3.819393 fe80::910c:1871:e52f:9b82 -> ff02::1:2 DHCPv6 152 Solicit XID: 0x8a263a CID: 00010001205a760c00155df47d05  
    3.838355 Cisco_d3:c7:bf -> Broadcast ARP 60 Who has 202.74.234.147? Tell 202.74.234.1  
    3.840331 45.249.181.172 -> 239.255.255.250 SSDP 216 M-SEARCH * HTTP/1.1  
    3.840570 58.215.162.105 -> 142.252.251.70 TCP 66 outlaws > 65522 [ACK] Seq=49 Ack=95665 Win=117 Len=0 TSval=2402288220 TSecr=2506305625  
    3.840608 142.252.251.70 -> 58.215.162.105 TCP 1434 65522 > outlaws [ACK] Seq=97033 Ack=49 Win=309 Len=1368 TSval=2506305664 TSecr=2402288220  
    … 

    执行脚本

    我们先写一个简单脚本获取远程主机一些信息,包括主机名、uptime,内存,磁盘和内核信息:

    #!/bin/bash 
      
     
    echo "---------主机名--------------------------------------------"  
    hostnamectl  
    echo -e "n"  
    echo "---------系统信息------------------------------------------"  
    uptime  
    echo -e "n"  
    echo "---------可用内存------------------------------------------"  
    free -m  
    echo -e "n"  
    echo "---------磁盘信息------------------------------------------"  
    df -h  
    echo -e "n"  
    echo "---------内核版本-------------------------------------------"  
    uname -a  
    echo -e "n"  
    echo "------------------------------------------------------------" 

    c4eef65c2bd16d055d9197531bc550b1.png

    然后使用下面语句执行:

    ssh chongchong 'bash -s' < host-info.sh 

    9b6c0dfb31985c6c21cf30f25b91c592.png

    也可以使用管道形式,但是会有提示信息:

    cat host-info.sh | ssh chongchong 

    e17d25ff6d961935be6fb71a8a961c7d.png

    SSH速度测试

    最好一个技巧,SSH连接需要速度快才爽。那么究竟SSH连接快不快,我们可以配合pv来测速:

    yes | pv | ssh chongchong "cat >/dev/null" 

    742f888be61991426cadc0b0fe4c170a.png

    sshfs挂载远程目录

    如果SSH连接很快,我们就可以基于SSH将远程主机的目录用sshfs挂载到本地来。挂载的目录是一个FUSE文件系统,可以作为常规用户程序而不是内核文件系统。

    mkdir ~/remoteshared  
    sshfs <user>@<host>:/remotepath ~/remoteshared 

    注意普通用户要用sshfs挂载远程目录,需要先把用户添加到fuse用户组,否则会报错:

    fuse: failed to exec fusermount: Permission denied 

    我们使用:

    usermod -a -G fuse cc 

    这样我们就可以使用sshfs了:

    sshfs chongchong:/tmp ./data 

    好了,现在就可以在data对远程主机的/tmp目录做操作了。注意这有个前期就是你的ssh连接需要很快,否则,你对该目录(父目录)操作(比ls)会非常慢。这时可以使用:

    fusermount -u data 

    删除该挂载。

    注意sshfs的挂载也会在df中显示:

    df -h  
    Filesystem Size Used Avail Use% Mounted on  
    /dev/sda3 886G 16G 825G 2% /  
    tmpfs 8.0G 0 8.0G 0% /dev/shm  
    /dev/sda1 485M 87M 374M 19% /boot  
    chongchong:/tmp 7.7G 2.7G 5.0G 35% /home/cc/data 

    总结

    本文中我们SSH使用中很有用但是鲜为人知的一些技巧,希望能对大家有所帮助。当然SSH的技巧不止这些,以后有机会再给大家介绍其他内容。

    展开全文
  • ftp的实用技巧5.1 修改登录ftp根目录【仅对本地用户模式有效】5.2 vsftpd使用SSL证书加密传输 Linux-云计算机构-vsftpd服务3种认证方式及SSL安全认证 1. vsftpd服务3种认证方式 匿名开放模式:不安全,无需...
  • delphi 读取网卡mac3种方式

    千次阅读 2011-01-20 10:31:00
    现在有三种方式,各有利弊第一种 最简单也最实用,通过调用ipconfig -all 来取得网卡。第二种 通过netbios,因为是网络协议,如果网卡没有连接上,取不到mac地址第三种 通过rpc调用,只能得到一块网卡.在有多块网卡...
  • 本资源由大量的实用批处理文件组成,删除.txt尾缀名双击即可直接使用,既是学习模板也可以作为实用程序,如下为文件组成,涉及文件管理,系统,网络,小工具等等: 0-reaname 2000XP停止打印.bat BAT珍藏 dir.bat...
  •  具备两种文件加密方式 WPS 2000 对文件的加密具有普通型和绝密型两种方式,您可以视情况采用其中一种。先进的加密算法可以保证您的文档万无一失。当您使用普通型加密时忘了密码,还可以求得金山公司技术人员的帮助...
  • 方式1:编辑器加密 编辑器除了可以修改PDF文件,其实也有加密功能,首先用极速PDF编辑器打开文档后,选择工具栏“安全保护”“安全保护”即可快速打开安全性设置窗口; 首先在“安全级别”根据需求选择一个级别,...
  • SSH以其简便的方式连接连接,并对通讯过程进行加密。基于所使用算法,一般认为窃听通过ssh通讯基本上不可能。SSH使用客户端,在Linux或Unix上一般是直接用ssh命令,在Windows 上在Cygwin或WSL等类Linux环境下...
  • SQLyog 12.2.3 最新版

    2016-06-15 12:08:36
    SQLyog 是一款简洁而实用的MYSQL数据库管理软件,其功能非常强大。图形化的操作管理可以让你很方便地在任何地方管理你的数据库。连接到SQL主机支持使用HTTP管道/SSH隧道,支持SSL加密方式。内置了数据库同步及比较...
  • 提供常见实用的分析报表,如销售排行、客单分析、库存分析,科学的数据分析为您提供决策的基础;系统还为高级客户提供灵活的自定义报表、直接的SQL查询及****特殊格式的报表文件。 ▲稳定的前台POS收银系统 采用...
  • HTTPS 方式访问网站

    2013-05-29 00:33:00
    开发网页时候,往往需要观察HTTP通信。 我使用工具主要有两个,在Firefox中是Firebug,在IE中是Fiddler。...学习之后,我增长了不少网页加密通信知识。 我觉得这篇文章很实用,值得留作参考,就翻译了出来。...
  • 函数作用:创建桌面快捷方式.........................86 '71.函数作用:自动建立多级目录.........................86 '72.函数作用:统计经筛选后符合条件记录条数...........87 '73.函数作用:复制单元格列高与栏宽...
  • .wmv,.avi,.asf,.wm等),还支持当前流行Flv格式,支持会员上传功能,极有力增强站内互动。 49、系统集成CC视频插件,其它还有很多细节功能,大家使用过程中慢慢就知道了...... 总之:科汛内容网站管理系统...
  • 该方案使感知报告的加密方式基于椭圆曲线上的公钥密码体制,并使可信第三方对感知报告进行混淆,实现了次用户位置隐私的保护。同时,与其他方案相比,该方案有效地降低了通信开销和存储开销。此外,该方案具有容错...
  • Molly钱包($ DAG桌面钱包) ... 加密货币钱包是持有加密货币任何人珍爱技术之一。 然而,许多钱包在视觉上并不吸引人,功能和实用性受到限制,因此被视为事后想法。 我们希望将其带到前沿,
  • 用户实用类 User.cs 登陆,退出时候身份加密或解除方式 验证码类 ValidateImage.cs 图片验证码 验证实用类 ValidateUtils.cs 数据类型,字符串功能,IP,日期,SQL注入等验证方法 XML处理基类 XMLHelper.cs 查看,删除,...
  • 区块链中区块按照时间历史顺序进行排列,同时通过数据加密技术以及共识机制使区块链具有不可篡改性,这使产品溯源成为区块链重要应用场景。选择产品信息追溯技术要考虑技术可行性同时要考虑产品以及生产者...
  • 针对双线性对加密机制标准化工作正在展开,双线性对密码体系标准IEEE P1363.3已在筹备之中,我国也已启动了基于身份密码体制标准化工作.为了保证其在实际使用中安全性,双线性对密码算法物理安全性也开始...
  • 创建数据库前面介绍了springboot-security整合jdbc从数据库中查询用户的方式,适用性有限,下面介绍最常用的整合MyBatis,这种在开发和生产环境中是最常用,也是最实用的。首先需要创建数据库表,我们来创建三张表,...
  • 前面介绍了springboot-security整合jdbc从数据库中查询用户的方式,适用性有限,下面介绍最常用的整合MyBatis,这种在开发和生产环境中是最常用,也是最实用的。首先需要创建数据库表,我们来创建三张表,分别是用户...
  • 密码翻译

    2019-01-23 14:23:00
    题目描述 Description 密码学是一门非常深奥、实用的学问。在我们的日常生活中处处可见加密解密的影子... 我们给出一种简的的加密方法: 对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 196
精华内容 78
关键字:

最实用的加密方式