天天看點

利用AutoSSH實作遠端管理内網伺服器

文章目錄

  • ​​一、組網說明​​
  • ​​二、基本配置​​
  • ​​1. Server2的配置步驟​​
  • ​​2. Server1的配置步驟​​
  • ​​3. 配置驗證​​
  • ​​4. 在Server2上配置autossh的開機自啟動​​
  • ​​三、PC連接配接目标機Server2實作遠端管理​​
  • ​​1. PC端連接配接​​
  • ​​2. PC連接配接Server2後的驗證​​
  • ​​3. 借助目前建立的PC與Server2的連接配接配置本地端口轉發​​
  • ​​3.1 SecureCRT​​
  • ​​3.2 Xshell​​
  • ​​3.3 FinalShell​​
  • ​​3.4 MobaXterm​​

一、組網說明

利用AutoSSH實作遠端管理内網伺服器

Server1為公網上的一台伺服器(擁有公網位址,公網可達)。Server2為内網的一台伺服器(隻有私網位址,沒有公網位址)。PC可以連接配接到公網,但也隻有私網位址。

現在的需求是使用PC可以通路到Server2。

測試位址規劃:

裝置 IP位址 備注
PC 192.168.74.1 模拟PC用戶端
Server1 192.168.74.132 模拟公網上的代理伺服器
Server2 192.168.74.154 模拟内網的目标伺服器

二、基本配置

插曲

AnolisOS8.x相容Centos8.x使用nmcli及NetworkManager.service管理網絡。老式的network.service(yum insetall -y network-scripts)隻适用于CentOS7.x。

1. Server2的配置步驟

# 安裝autossh
# CentOS
yum install -y autossh
# Ubuntu
apt install -y autossh
# 編譯安裝
官網:https://www.harding.motd.ca/autossh/
yum install -y autoconf make automake gcc gcc-c++
gunzip -c autossh-1.4g.tgz | tar xvf -
cd autossh-1.4g
./configure
make
make install

$ which autossh
/usr/local/bin/autossh

# 配置Server2 ssh到 Server1的免密登陸
ssh-keygen -t rsa
不給passphrase
ssh-copy-id [email protected]

# 使用autossh實作Server1到Server2的遠端端口轉發
autossh -p 22 -M 2212 -NfR '*:2202:127.0.0.1:22'      

上邊autossh指令的含義是:

Server2使用root這個使用者名去連接配接Server1(192.168.74.132)ssh的22号端口(-p 22),使得Server1(Remote)的2202端口被ssh tunneling到本地(Server2,127.0.0.1)的22号端口上來(單引号中定義)。其中星号“*”表示Server1偵聽它所有位址的2202号端口。2212是Server2偵聽ssh連接配接心跳包的的端口(-M參數指定)。如果偵測不到心跳封包則Server2自動重新ssh連接配接Server1。

2. Server1的配置步驟

[root@Server1 ~]# vim /etc/ssh/sshd_config
GatewayPorts yes

[root@Server1 ~]# systemctl restart sshd      

3. 配置驗證

bee@Server2:~/.ssh$ netstat -ntpa | grep -w 22
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 192.168.74.154:49904    192.168.74.132:22       ESTABLISHED 15887/ssh

[root@Server1 ~]# netstat -ntpa | grep -w 2202
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:2202          0.0.0.0:*               LISTEN      13381/sshd: root
注意如果看到本地是127.0.0.1:2202說明代理伺服器Server1的ssh服務GatewayPorts沒有打開。
此時,Server1上隻能ssh -p 2202 [email protected]登上Server2(其中bee為Server2上的普通使用者)。ssh -p 2202 [email protected]結果是Connection refused。

正常情況
[root@Server1 ~]# netstat -ntpa | grep -w 2202      

4. 在Server2上配置autossh的開機自啟動

vim /usr/lib/systemd/system/autosshd.service

[Unit]
Description=AutoSSH Daemon
After=network-online.target

[Service]
User=root
ExecStart=/usr/bin/su -c '/usr/bin/autossh -p 22 -M 2212 -NfR 2202:127.0.0.1:22 [email protected]' - bee

[Install]
WantedBy=multi-user.target      

然後啟動服務

systemctl daemon-reload
systemctl start autosshd.service
systemctl status autosshd.service
systemctl enable      

傳統方式可以在/etc/rc.d/rc.local中配置指令。

三、PC連接配接目标機Server2實作遠端管理

這個遠端管理又稱内網穿透。

1. PC端連接配接

# bee是Server2上的使用者
ssh      

PC端還可以使用其他ssh用戶端工具,比如:putty,SecureCRT,Xshell,FinalShell,MobaXterm等連接配接。注意Server1需要配置防火牆規則放開TCP端口2202。

PC一旦ssh連接配接上Server2就可以通過sftp/scp傳輸檔案了。

2. PC連接配接Server2後的驗證

PC端連接配接成功後在目标伺服器Server2上可以看到
bee@Server2:~$ netstat -ntpa | grep      

3. 借助目前建立的PC與Server2的連接配接配置本地端口轉發

借助于目前已經建立的PC與Server2的ssh tunnel連接配接,我們還可以配置用戶端的本地端口轉發,實作PC端連接配接Server2的相關TCP業務,比如http,mysql等。

場景模拟:

PC通過本地端口轉發(通路本地127.0.0.1:7001 或者 localhost:7001)去通路Server2上的http服務(Dubbo Admin,端口7001)。

利用AutoSSH實作遠端管理内網伺服器

下邊以上述場景為例介紹幾個常見虛拟終端工具的本地端口轉發的配置方法。

注意:要先選中通過autossh建立的PC連接配接Server2的會話再配置。

3.1 SecureCRT
利用AutoSSH實作遠端管理内網伺服器
利用AutoSSH實作遠端管理内網伺服器
3.2 Xshell
利用AutoSSH實作遠端管理内網伺服器
利用AutoSSH實作遠端管理内網伺服器
3.3 FinalShell
利用AutoSSH實作遠端管理内網伺服器
利用AutoSSH實作遠端管理内網伺服器
3.4 MobaXterm

先找到在哪裡配置本地端口轉發

利用AutoSSH實作遠端管理内網伺服器

或者

利用AutoSSH實作遠端管理内網伺服器

開始配置

利用AutoSSH實作遠端管理内網伺服器

上圖中的賬号資訊“[bee]”如何設定?

利用AutoSSH實作遠端管理内網伺服器
利用AutoSSH實作遠端管理内網伺服器
利用AutoSSH實作遠端管理内網伺服器
利用AutoSSH實作遠端管理内網伺服器

繼續閱讀