ssh动态端口转发和加密算法性能测试
ssh动态端口转发,socks5代理
# openssh可用,dropbear里面的ssh不能用。 ssh -f -N -D 0.0.0.0:1080 albert@192.168.1.1
在配置文件 ~/.ssh/config
中指定,由于安全原因,无法再用 blowfish-cbc
加密算法了,可以使用 aes128-ctr
Host * Ciphers aes128-ctr Compression yes CompressionLevel 6
如何知道ssh连接不同的host时,使用了哪种加密算法呢?可以用 ssh -v
查看ssh加密算法。如:
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: zlib@openssh.com debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: zlib@openssh.com
修改为 aes128-ctr
后:
debug1: kex: algorithm: curve25519-sha256 debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: kex: server->client cipher: aes128-ctr MAC: umac-64-etm@openssh.com compression: zlib@openssh.com debug1: kex: client->server cipher: aes128-ctr MAC: umac-64-etm@openssh.com compression: zlib@openssh.com
msys2的ssh支持的加密算法:
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,cast128-cbc,3des-cbc debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,cast128-cbc,3des-cbc
加密算法性能测试
使用下面的shell,测试不同的加密算法:
for i in 3des-cbc aes128-cbc aes128-ctr aes128-gcm@openssh.com aes192-cbc aes192-ctr aes256-cbc aes256-ctr aes256-gcm@openssh.com arcfour arcfour128 arcfour256 blowfish-cbc cast128-cbc chacha20-poly1305@openssh.com; do #echo ===$i=== #dd if=/dev/zero bs=1000000 count=1000 2> /dev/null | ssh -c $i localhost "(time -p cat) > /dev/null" 2>&1 | grep real | awk '{print "'$i': "1000 / $2" MB/s" }'; #dd if=/dev/zero bs=1000000 count=1000 2> /dev/null | ssh -c $i admin@192.168.0.1 -p 8122 "(time -p cat) > /dev/null" 2>&1 | grep real | awk '{print "'$i': "1000 / $2" MB/s" }'; #dd if=/dev/zero bs=1000000 count=100 2> /dev/null | ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -c $i albert@192.168.0.22 "(time -p cat) > /dev/null" 2>&1 | grep real | awk '{print "'$i': "1000 / $2" MB/s" }'; dd if=/dev/zero bs=1000000 count=100 2> /dev/null | ssh -i /c/home/albert/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -c $i root@??? "(time -p cat) > /dev/null" 2>&1 | grep real | awk '{print "'$i': "1000 / $2" MB/s" }'; done
dd if=/dev/zero bs=1000000 count=1000 2> /dev/null | ssh -c aes192-ctr admin@192.168.0.1 -p 8122 "(time -p cat) > /dev/null" 2>&1 | grep real | awk '{print "'$i': "1000 / $2" MB/s" }'; dd if=/dev/zero bs=1000000 count=100 2> /dev/null | ssh -c aes192-ctr albert@192.168.0.22 "(time -p cat) > /dev/null" 2>&1 | grep real | awk '{print "'$i': "1000 / $2" MB/s" }';
msys2 -> ubuntu 20.04
aes128-ctr: 86.4304 MB/s aes128-gcm@openssh.com: 83.2639 MB/s aes192-ctr: 80.8407 MB/s aes256-ctr: 84.9618 MB/s aes256-gcm@openssh.com: 85.6898 MB/s chacha20-poly1305@openssh.com: 86.4304 MB/s
msys2 -> centos 第一次
3des-cbc: 164.745 MB/s aes128-cbc: 167.785 MB/s aes128-ctr: 123.305 MB/s aes128-gcm@openssh.com: 183.486 MB/s aes192-cbc: 118.906 MB/s aes192-ctr: 130.208 MB/s aes256-cbc: 108.342 MB/s aes256-ctr: 129.032 MB/s aes256-gcm@openssh.com: 154.56 MB/s chacha20-poly1305@openssh.com: 130.378 MB/s
msys -> centos 第二次
3des-cbc: 148.148 MB/s aes128-cbc: 125.313 MB/s aes128-ctr: 120.919 MB/s aes128-gcm@openssh.com: 207.9 MB/s aes192-cbc: 147.929 MB/s aes192-ctr: 190.114 MB/s aes256-cbc: 163.399 MB/s aes256-ctr: 125.945 MB/s aes256-gcm@openssh.com: 113.25 MB/s chacha20-poly1305@openssh.com: 100.604 MB/s
本机测试,单纯测试各种加密算法的性能。
for i in 3des-cbc aes128-cbc aes128-ctr aes128-gcm@openssh.com aes192-cbc aes192-ctr aes256-cbc aes256-ctr aes256-gcm@openssh.com arcfour arcfour128 arcfour256 blowfish-cbc cast128-cbc chacha20-poly1305@openssh.com; do #echo ===$i=== dd if=/dev/zero bs=1000000 count=1000 2> /dev/null | ssh -c $i localhost "(time -p cat) > /dev/null" 2>&1 | grep real | awk '{print "'$i': "1000 / $2" MB/s" }'; done aes128-ctr: 641.026 MB/s aes128-gcm@openssh.com: 869.565 MB/s aes192-ctr: 606.061 MB/s aes256-ctr: 584.795 MB/s aes256-gcm@openssh.com: 819.672 MB/s chacha20-poly1305@openssh.com: 266.667 MB/s
网络时延高的时候,各种加密算法对速度的影响不大。打开压缩和使用连接复用的效果会更好。不过单纯从加密算法而言,aes128-gcm的性能最好。
#第一次 3des-cbc: 20.0924 MB/s aes128-cbc: 16.5289 MB/s aes128-ctr: 19.9283 MB/s aes128-gcm@openssh.com: 22.9621 MB/s aes192-cbc: 22.9832 MB/s aes192-ctr: 23.1535 MB/s aes256-cbc: 26.001 MB/s aes256-ctr: 20.5381 MB/s aes256-gcm@openssh.com: 20.0844 MB/s chacha20-poly1305@openssh.com: 25.4388 MB/s #第二次 3des-cbc: 21.2404 MB/s aes128-cbc: 18.7793 MB/s aes128-ctr: 18.5219 MB/s aes128-gcm@openssh.com: 18.6359 MB/s aes192-cbc: 17.8158 MB/s aes192-ctr: 17.7904 MB/s aes256-cbc: 22.6552 MB/s aes256-ctr: 20.4876 MB/s aes256-gcm@openssh.com: 22.8571 MB/s chacha20-poly1305@openssh.com: 19.5925 MB/s