使用ssh++華為云服務器實現內網穿透
用 ssh 訪問一臺主機,如果和主機在一個局域網中或者主機擁有公網 IP,就可以使用 ssh 命令直接連接主機的 IP 地址,但是大部分公司和家庭內部都是局域網,并不能給局域網內的每一臺主機都分配一個公網 IP,這時候就需要進行內網穿透,才能從外部連接到局域網內的主機。
什么是內網穿透
簡單來說內網穿透就是實現不同局域網內的主機間的通信,通俗點講,當你在宿舍寫代碼,想訪問機房里的服務,但是機房沒有外網IP,所有的web服務都是通過內網發布的(192.168.xx.xx等),那你在宿舍就無法訪問到這些服務,可你又不想去機房,那么應該怎么辦呢?內網穿透就可以幫你解決這個困境。通過內網穿透,你用宿舍的網絡就可以訪問到機房的web服務。
或者是你用宿舍的網絡,可以SSH訪問機房的服務器(服務器沒有公網IP)。又或者時你你的閑置手機掛了個Termux,想從其他地方遠程訪問。
具體步驟
1.在服務器上安裝ssh-server
1
2
apt-get?install openssh-server
#linux云服務器默認已經安裝,這里就跳過
2. 在客戶端上連接到服務器,并進行映射
1
2
3
4
ssh -R
# ssh -R 8888:127.0.0.1:8022 chenbao@115.28.***.187
#將本地的local_ip:local_port 映射到 server 的server_port
#ssh將會在服務器上監聽server_por 并將消息轉發到 local_ip:local_port
這里我用我手機termux手機示范
3.檢查連接狀態
1
2
3
netstat -l |?grep :8888
#netstat -l | grep :server_port
#可以看到服務器端已經監聽了8888端口,但是監聽的是localhost的8888 ,只能實現服務器本地訪問
我映射的是termux上的8022端口(ssh服務)
在服務器上用ssh連接到termux的ssh服務進行測試 , 能成功連接,說明映射成功
4.實現服務器公網訪問
1
2
3
#連接到服務器上 略
#建立任意ip(0.0.0.0)到 localhost(127.0.0.1) 的正向代理
ssh -L 0.0.0.0:8889:127.0.0.0.1:8888 chenbao@localhost
1
#再次查看連接情況?0.0.0.0:8889已經監聽,這時即可使用服務器公網ip進行訪問?(你可能需要在華為云服務器控制臺開放需要映射到公網的端口)
1
2
3
4
5
6
7
8
#將默認配置的有效項 復制到 ~/sshd_config 中
grep "^[^#]" /etc/ssh/sshd_config > ~/sshd_config
#修改~/sshd_config 更改端口,添加選項 GatewayPorts yes (允許直接映射到全局(0.0.0.0))
vim? ~/sshd_config
添加
Port 8882
GatewayPorts?yes
#建議注釋Subsystem行
1
2
3
/usr/sbin/sshd -f?/etc/ssh/sshd_config
#如果提示權限不夠 就 sudo /usr/sbin/sshd -f /etc/ssh/sshd_config
#如果沒有找不到error: Could not load host key: /etc/ssh/ssh_host_ed25519_key 就先 ssh-keygen -A
5.其他
帶參數 -N(不執行遠程命令. 用于轉發端口) -f(在執行命令前退至后臺)
1.在服務器上新建一個普通用戶 onlynat
2.手寫一個shell(誤)
1
2
3
4
5
6
7
8
9
#include
using std::string;
using std::cin;
int main()
{
string tmp;
while(cin>>tmp);
return 0;
}
編譯上述代碼,并將這個程序設置為onlynat的she'l'l
編輯~/sshd_config 添加行 AllowUsers onlynat
重啟sshd_cinfig 這時 onlynat 就只能使用手寫的shell,而無法執行任何命令了
ssh
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。