通過ssh通道加密通訊資料

2021-07-10 17:32:07 字數 3822 閱讀 7740

ssh資料加密是非常棒的,先來個如何進行加密的示意圖。

圖.1開啟ssh服務(ubuntu):

#/etc/init.d/ssh start
檢視ssh 服務狀態:

圖.2執行:

#ssh -l 6000:127.0.0.1:8888 -n 127.0.0.1    // 注意,這裡第乙個ip是回環位址,第二個應該是遠端的位址,這裡用於測試。6000是sshport,8888是serport

圖.3可以看到,ssh客戶端開啟了乙個監聽,監聽的埠號是6000,那麼接下來我們的client只需要去連線6000埠了。

那為什麼有個37344 22的連線呢?那是因為ssh客戶端建立出乙個程序或者執行緒和sshd連線,給第三方應用通訊,父程序依然在等待新的第三方程式的請求。

下面是server 和 client 的測試**:

/*

server.c

*/#include #include #include #include #include #include int main(int argc, char *argv)

/*

client.c

*/#include #include #include #include #include #include int main(int argc, char *argv)

在開啟server 和 client之前,我們先用tcpdump監聽埠,這裡我們應該選擇37344埠監聽!同時選擇的是回環裝置。

注意,不是8888 或者 6000埠,為什麼?因為在連線37344 22之間的資料才是加密的(看圖1理解)。

圖.4開啟server 和 client.

#./server

#./client

圖.5可以看到客戶端返回了正確資料,再來看看tcpdump的輸出。

18:34:15.538916 ip 127.0.0.1.37344 > 127.0.0.1.22: flags [p.], seq 3506275179:3506275271, ack 3174401501, win 386, options [nop,nop,ts val 3634369 ecr 3502811], length 92

0x0000: 4510 0090 160a 4000 4006 264c 7f00 0001 e.....@.@.&l....

0x0010: 7f00 0001 91e0 0016 d0fd 836b bd35 85dd ...........k.5..

0x0020: 8018 0182 fe84 0000 0101 080a 0037 74c1 .............7t.

0x0030: 0035 72db 97e4 2ffd 23df c0c5 eeb7 bbb4 .5r.../.#.......

0x0040: 08de fa22 eb43 2d58 6074 1e51 cb07 b193 ...".c-x`t.q....

0x0050: 0d93 5f38 c3b3 9846 a859 0c14 1b3d 9884 .._8...f.y...=..

0x0060: b1f5 ce8a 89c1 2567 d17e 58ae 3f54 d043 ......%g.~x.?t.c

0x0070: bccf e4b4 1f13 6717 c45f d0ac 7075 3d0e ......g.._..pu=.

0x0080: d387 c803 3ca1 f939 eabc f10c c01d 672c ....<..9......g>

18:34:15.538954 ip 127.0.0.1.22 > 127.0.0.1.37344: flags [.], ack 92, win 1365, options [nop,nop,ts val 3634369 ecr 3634369], length 0

0x0000: 4500 0034 1325 4000 4006 299d 7f00 0001 e..4.%@.@.).....

0x0010: 7f00 0001 0016 91e0 bd35 85dd d0fd 83c7 .........5......

0x0020: 8010 0555 fe28 0000 0101 080a 0037 74c1 ...u.(.......7t.

0x0030: 0037 74c1 .7t.

18:34:15.539218 ip 127.0.0.1.22 > 127.0.0.1.37344: flags [p.], seq 1:45, ack 92, win 1365, options [nop,nop,ts val 3634369 ecr 3634369], length 44

0x0000: 4500 0060 1326 4000 4006 2970 7f00 0001 e..`.&@.@.)p....

0x0010: 7f00 0001 0016 91e0 bd35 85dd d0fd 83c7 .........5......

0x0020: 8018 0555 fe54 0000 0101 080a 0037 74c1 ...u.t.......7t.

0x0030: 0037 74c1 ba76 018f 3cfd 88c1 79e0 3756 .7t..v..<...y.7v>

0x0040: 473b 6839 a577 62e1 7a67 6e4b 03cb 3a94 g;h9.wb.zgnk..:.

0x0050: 6c5c e89f 7bbc 734a bc7e b343 1e9d d063 l\..{.sj.~.c...c

18:34:15.539230 ip 127.0.0.1.37344 > 127.0.0.1.22: flags [.], ack 45, win 386, options [nop,nop,ts val 3634369 ecr 3634369], length 0

0x0000: 4510 0034 160b 4000 4006 26a7 7f00 0001 e..4..@.@.&.....

0x0010: 7f00 0001 91e0 0016 d0fd 83c7 bd35 8609 .............5..

0x0020: 8010 0182 fe28 0000 0101 080a 0037 74c1 .....(.......7t.

0x0030: 0037 74c1 .7t.

其中,前三個捕獲是tcp的三次握手過程。

最後一次是傳輸的資料,如果不採用ssh 加密,那麼可以看到紅色部分是明文you connect success.(上面的部分)

或者用tcpdump監聽8888和6000均是明文。

ssh加密到此結束。

ssh隧道來加密連線的通訊

如果mysql 客戶端和伺服器端的連線需要跨越並通過不可信任的網路,那麼需要使用 ssh隧道來加密該連線的通訊 ssh 隧道 openssh 能夠建立隧道以便用加密的會話來封裝其他協議。下面的命令告訴 ssh 1 為 telnet 建立乙個隧道 ssh 2 n f l 5023 localhost ...

資料通訊之通道與編碼

資料通訊中產生 傳送資訊的一端稱為信源,接收資訊的一端稱為信宿,而信源和信宿之間的通訊線路稱為通道。通道最重要的乙個特性就是通道容量,就是通道上資料所能夠達到的傳輸速率。是指傳送器和傳輸 的特性限制下的頻寬,通常用赫茲或每秒週期表示。模擬通道的頻寬w 最高頻率f2 最低頻率f1。通道的電路製成後,頻...

shell通過通道批量插入大量資料到redis

前言 當我們需要短時間內快速插入大量資料到redis中,就需要乙個行之有效的方式。實踐發現redis的 redis mass insertion redis 是個比較高效的方法。借助於pipline插入 首先通過簡單的指令碼生成例如如下的 set key0 value0 set key1 value...