Ubuntu實(shí)現(xiàn)SSH外網(wǎng)連接內(nèi)網(wǎng)(反向隧道)

應(yīng)用場景:

如果你有Linux云主機(jī)(騰訊、華為等),且公司有一臺只有內(nèi)網(wǎng)IP (或動態(tài)IP) 的Linux工作機(jī);你計(jì)劃在家里工作時,通過家里的電腦連接公司的工作機(jī) (且不想使用類似Teamviewer這樣的遠(yuǎn)程控制軟件) 的話,本文適合你。

1. 準(zhǔn)備?

(1) 一臺內(nèi)網(wǎng)機(jī)器 A?

IP: 172.17.60.247

SSH端口: 22

用戶名: root

密碼: *

內(nèi)網(wǎng)配置端口:22 (即配置SSH端口的反向隧道)?

(2) 帶有公網(wǎng)IP的機(jī)器 B?

IP: 121.36.163.25

SSH端口: 22

用戶名: root

密碼: *

公網(wǎng)端口: 22222(重要, 即用B的22222端口連到A的SSH 22端口)?

2. 配置SSH密鑰?

(0)

注意分清A是內(nèi)網(wǎng), B是公網(wǎng)?

在A主機(jī)上生成SSH秘鑰, 再和B用SSH建立認(rèn)證?

(1) A的配置(內(nèi)網(wǎng)主機(jī))

ssh-keygen

配置說明:

直接連按3次enter就可以了, 什么都不用輸入.

密鑰會自動保存在默認(rèn)的地方, 方便下一步操作.

(你會獲得一長串SHA256:......)

然后利用如下命令將A的SSH秘鑰即SHA256:......里面的字符串, 添加到B的authorized_keys里面 (需要輸入B主機(jī)root賬號的密碼):

  • ssh-copy-id root@121.36.163.25

    配置說明:

    注意換成你自己的IP,執(zhí)行后會提示輸入主機(jī)B的密碼(要注意這里),

    執(zhí)行完畢之后,我們登錄到B,就發(fā)現(xiàn) ~/.ssh/authorized_keys 里面就多了A的SSH公鑰了,成功建立SSH認(rèn)證.

    這個步驟主要是完成了從機(jī)子A到B的ssh的免密登錄,具體可以看~/.ssh/下面的一些密鑰更改情況

    用root登陸121.36.163.25主機(jī),

  • ls ~/.ssh/

    會有文件

    authorized_keys

    (2) B的配置(公網(wǎng)主機(jī))

  • vim /etc/ssh/sshd_config

    添加

    GatewayPorts yes

    這句話的意思是監(jiān)聽端口可以綁定到任意其他IP, 不然只有本機(jī)127.0.0.1可以訪問

    重啟一下ssdh服務(wù)

  • sudo service sshd restart

    3. A的配置(內(nèi)網(wǎng)主機(jī))(內(nèi)網(wǎng)主機(jī)安裝配置反向隧道軟件)

    (1)

    弄好了上面的, 再回到A, 安裝一個autossh,

    注意, 這個東西ubuntu安裝比較方便

    以ubuntu為例, 執(zhí)行下面命令完成安裝

  • sudo apt-get install autossh

    (2) 開啟autossh

  • autossh -M 22002 -NfR 0.0.0.0:22222:localhost:22 root@121.36.163.25

    參數(shù)說明:

    注意最后一個IP 是公網(wǎng)IP

    這里,

    -M 后面任意填寫一個可用端口即可,

    -N 代表只建立連接,不打開shell,

    -f 代表建立成功后在后臺運(yùn)行,

    -R 代表指定端口映射.

    這里是將A主機(jī)的22端口映射到B主機(jī)的22222端口, 這樣就完成了配置.?

    這時我們再訪問B主機(jī)的22222端口, 就會自動轉(zhuǎn)發(fā)到A主機(jī)的22端口了, 即可以公網(wǎng)訪問了.

    特別提醒:

    如果是一些供應(yīng)商的云主機(jī),記得要去安全策略組那里開放22002, 22222端口,不然怎么樣都是訪問不了的.

    4. 連接測試

  • ssh root@121.36.163.25 -p 22222

    輸入內(nèi)網(wǎng)主機(jī)a的密碼, 這時候你就會驚奇地發(fā)現(xiàn)已經(jīng)打開了內(nèi)網(wǎng)主機(jī).

    另外, 為了方便, 可以考慮將autossh設(shè)置為開機(jī)啟動.

    5. 將autossh設(shè)置為開機(jī)啟動(Ubuntu)

    (1) 第一步

  • ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service

    (2) 第二步

  • sudo echo "[Install]WantedBy=multi-user.targetAlias=rc-local.service" >> /etc/systemd/system/rc-local.service

    (3) 第三步

  • sudo vim /etc/rc.local

  • #!/bin/bashautossh -M 22002 -NfR 0.0.0.0:22222:localhost:22 root@121.36.163.25

    (4) 第四步

  • chmod +x /etc/rc.local

    原文鏈接:https://mp.weixin.qq.com/s/oJZXXTTcd2FzksrsRewq5w

    本文使用 文章同步助手 同步

  • 最后編輯于
    ?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
    【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
    平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

    相關(guān)閱讀更多精彩內(nèi)容

    友情鏈接更多精彩內(nèi)容