應(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
本文使用 文章同步助手 同步