SSH 隧道功能

項目背景:

有一個帶sd接口的電路板P,沒有wifi不能聯網,現在要通過ssh隧道實現兩個功能:

1. 可以讓一臺linux主機通過ssh登陸到P板進行程序調試等操作;

2. 在P板上直接運行需要聯網獲取數據的程序。

 

1. 假設有一臺主機A能聯網,將P板SD接口插在主機A上,這樣可以將P板看成主機A的一個SD卡,組內的人制造了一套工具,可以通過SD口和主機A實現上面所需的上網功能。具體的實現不是特別清楚,大概就是監聽主機A的一個固定端口(假設是2200),有各種消息來的時候去對應地操作SD卡(P板)實現不同的功能。

比如:ssh -p 2200 [email protected] 通過ssh方式登陸到P板(10.238.225.61是主機A的ip, root是P板虛擬的ssh登陸用戶名)

 

由於實現方式的侷限性,上面這樣ssh只能開一個,需要多開幾個ssh或者ssh登陸着的同時想要scp向P板copy東西的話,就需要在本地(我們假設稱之爲主機B)第一次ssh登陸P板時開一個Local forward端口(假設是2222),如:

$ssh -p 2200 -L 2222:127.0.0.1:22 [email protected]

之後再從主機B登陸P板可以這樣:ssh -p 2222 root@localhost

通過scp命令由主機B向P板copy東西,可以這樣:scp -P 2222 stock root@localhost:/zcy

這裏要說明的是,127.0.0.1:22是指P板的22端口,至於怎麼是22,之前講了,P板是通過一個工具利用主機A實現聯網的,端口22就是在工具的配置文件中寫死的。

 

2. 我們假設主機B可以通過一個代理服務器聯外網,可以ssh登陸P板,那麼可以在主機B ssh登陸P板時開一個Remote forward端口,讓P板可以聯外網。

$ssh -p 2200 -R 8080:10.7.211.16:912 [email protected]

這樣P板上就可以通過localhost:8080端口聯外網了。在P板上還要設置一下環境變量,指定proxy:

#export http_proxy=http://127.0.0.1:8080/

這裏要說明的是10.7.211.16:912是主機B聯外網的代理服務器地址和端口。

 

 

參考文章:

http://blog.pluskid.org/?p=369

http://blog.wuxinan.net/archives/78

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章