場景
目前有公網服務器A,內網服務器B,現在想通過反向代理的方式來訪問內網服務器B,
A:123.123.123.123 埠為3577
1、配置思路
1.由于SSH在一段時間沒有資料包之后會斷開,所以最好直接使用autossh來配置反向代理,
2.現在將B服務器的22埠系結到公網服務器A的某一埠PA上,那么當我們請求公網的PA時,公網服務器就會把請求轉發到內網服務器上埠22上
2、反向代理
(注意:以下操作都在內網服務器進行,且我是在root角色下進行)
1.安裝autossh,我的服務器上裝的是Ubuntu18.04,可用以下命令進行安裝
apt-get install autossh
2.然后添加我們的內網機器的ssh-key到公網以實作自動登陸:ssh-copy-id <公網機器A的登陸用戶名>@<公網機器的ip地址>
ssh-copy-id root@123.123.123.123
如果本機并沒有ssh的key,需要先執行ssh-keygen 再進行
3.測驗免密登錄
ssh root@123.123.123.123
4.利用autossh搭建反向隧道:
autossh -M 50533 -fCNR 3577:127.0.0.1:22 <公網機器A的ssh登錄用戶名>@<公網機器A的IP>
autossh -M 50533 -fCNR 3577:127.0.0.1:22 root@123.123.123.123
說明:
? -M 添加一個埠用于心跳包的發送,該埠只要是服務器上一個可用的未被占用的埠(50533)就行
-f 后臺執行ssh指令
? -C 允許壓縮資料
? -N 不執行遠程指令
? -R 將遠程主機(服務器A)的某個埠轉發到本地機器(內網服務器B)的指定埠
? -L 將本地機器(客戶機)的某個埠轉發到遠端指定機器的指定埠
? -p 指定遠程主機的埠
3、開機自啟
(注意:這里是全新剛裝好的系統)
1.ubuntu18.04不再使用initd管理系統,改用systemd后已經不支持rc.local 這個開機自動啟動的腳本了,所以為了能繼續用這個腳本,我們需要去撰寫一個ubuntu18 下的啟動腳本,通過這個腳本來啟動我的rc.local腳本,
2.systemd默認讀取/etc/systemd/system下的組態檔,該目錄下的檔案會鏈接/lib/systemd/system/下的檔案,一般系統安裝完/lib/systemd/system/下會有rc-local.service檔案,即我們需要的組態檔,鏈接過來
ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
執行命令查看rc-local.service的內容
cd /etc/systemd/system/
cat rc-local.service
如果最后沒有[install]區塊,則自己添加如下內容
[Install]
WantedBy=muti-user.target
Alias=rc.local.service
創建/etc/rc.local檔案 touch /etc/rc.local
賦予權限 chmod 755 /etc/rc.local
說明:
chmod是Linux下設定檔案權限的命令,后面的數字表示不同用戶或用戶組的權限,
一般是三個數字:
第一個數字表示檔案所有者的權限
第二個數字表示與檔案所有者同屬一個用戶組的其他用戶的權限
第三個數字表示其它用戶組的權限,
權限分為三種:讀(r=4),寫(w=2),執行(x=1),
綜合起來:
可讀可執行(rx=5=4+1)
可讀可寫(rw=6=4+2)
可讀可寫可執行(rwx=7=4+2+1),
編輯rc.local檔案并添加以下內容
#!/bin/bash
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# auto start autossh
autossh -M 50533 -fCNR 3577:127.0.0.1:22 root@123.123.123.123
echo "添加自啟動腳本成功!" > /usr/local/test.log
exit 0
啟用服務
sudo systemctl enable rc-local
啟動服務
sudo systemctl start rc-local.service
說明:正常開啟服務不會報錯的(沒有紅色的Fail…出現,說明能正常啟動)
查看服務狀態
sudo systemctl status rc-local.service
重啟并檢查test.log檔案
sudo systemctl restart rc-local.service
cat /usr/local/test.log
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249443.html
標籤:其他
