autossh

公网端

sed  -i  's/#GatewayPorts no/GatewayPorts yes/g' /etc/ssh/sshd_config
service sshd restart

内网端-利用 AutoSSH 实现端口转发

yum  install autossh -y -q


在内网主机 A 上,利用 AutoSSH 建立一条 SSH 隧道

autossh -M 4010 -NR 80:localhost:4000 username@Remote-Public-Server (-p PORT) ~/.ssh/id_rsa

 参数解释:

“-M 4010”意思是使用内网主机 A 的 4010 端口监视 SSH 连接状态,连接出问题了会自动重连

“ -N”意思是不执行远程命令

“-R”意思是将远程主机(公网主机 B)的某个端口转发到本地指定机器的指定端口

 can解释:

“80:localhost:4000”意思是将内网主机 A 的 4000 号端口转发至公网主机 B 的 80 号端口上

[email protected]”意思是公网主机 B 的用户名和 IP

“-p xxxx”意思是公网主机 B 的 SSH 端口,如果是默认的 22 号端口,则可以不输入.


ssh几个常用参数说明

-f:SSH客户端在后台运行。

-C:压缩数据传输。

-N:仅做端口转发。

正向代理(-L):相当于iptable 的port forwarding.

反向代理(-R):相当于frp 或者ngrok.

socks5 代理(-D):相当于ss.


============================================================

简化使用ssh的config配置方法

$ cat ~/.ssh/config
 Host Public-Server 
    HostName      Remote-Public-Server-IP 
    User          USERNAME 
    Port          22
    IdentityFile  ~/.ssh/id_rsa
    LocalForward  80 localhost:4000
    ServerAliveInterval 30
    ServerAliveCountMax 3

手动启动运行(ssh和autossh用法都一样)

autossh -M 4010 -NR Public-Server
ssh -M 0 -f -T -N Public-Server

加入Systemd服务例子内容

#cat /lib/systemd/system/autossh.service
[Unit]
Description=autossh
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=autossh
EnvironmentFile=/etc/default/autossh
ExecStart=
ExecStart=/usr/bin/autossh $SSH_OPTIONS
Restart=always
RestartSec=60

[Install]
WantedBy=multi-user.target
$ cat /etc/default/autossh
AUTOSSH_POLL=60
AUTOSSH_FIRST_POLL=30
AUTOSSH_GATETIME=0
AUTOSSH_PORT=22000
SSH_OPTIONS="-N -R 2222:localhost:22 example.com -i /home/autossh/.ssh/id_rsa"
systemctl daemon-reload
systemctl enable autossh
systemctl start autossh


直接ssh进行跳板连接转发

ssh -N -T -L Public-server-Port:<local server Host>:local-server-PORT USER@Remote-Public-Server

添加新评论 »