SSH反向连接

本文介绍如何通过建立反向SSH连接实现在家控制公司内网Linux服务器的技术方法,包括命令参数设置、密码验证等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时需要回家后控制公司内网Linux服务器,而先建立一条反向连接到外网服务器,然后回家后登录外网服务器控制公司内网服务器。


公司内网服务器:

ssh -f -N -R 10000:localhost:22 root@外部服务器ip


10000是主动连接”外部服务器”的端口,用于等待连接并接收指令


此时,输入外部服务器的root密码,才能连接成功,因为连接的时候使用的是root@外部服务器ip,可以改成其它用户名


外部服务器:

ssh root@localhost -p 10000


此时,输入公司内网服务器的root密码,即可进入ssh


转载于:https://my.oschina.net/u/2525089/blog/532168

### 实现SSH反向连接以登录到远程设备 为了实现从远程服务器通过SSH登录本地PC的功能,即所谓的SSH反向连接,需要按照特定的方式设置SSH客户端和服务端。以下是具体的配置方法: #### 设置无密码认证 为了避免每次建立反向连接时都需要手动输入密码,建议先配置基于密钥的身份验证方式。可以通过`ssh-copy-id`工具将本地公钥复制到远程服务器上,以便后续无需再输入密码即可完成身份验证。 ```bash ssh-copy-id user@remote_host_ip ``` 这条命令会提示输入当前用户的密码用于首次认证,并自动将本机的SSH公钥追加至远程主机指定账户下的授权密钥文件中[^4]。 #### 创建并启用Systemd服务单元文件 为了让反向隧道能够随系统启动而自动激活,可以创建一个新的systemd服务来管理这一过程。编辑一个名为`reverse_ssh.service`的服务定义文件,在其中指明执行的具体指令以及依赖关系等信息。 ```ini [Unit] Description=Reverse SSH Tunnel Service After=network.target [Service] ExecStart=/usr/bin/autossh -M 0 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" \ -R remote_port:localhost:local_port user@remote_host_ip -p ssh_port Restart=on-failure [Install] WantedBy=default.target ``` 在此示例中,`-R`参数用来设定远端开放给外部访问的端口号(`remote_port`)映射成本地机器上的某个端口(`local_port`);`user@remote_host_ip`代表目标远程服务器的信息;`ssh_port`则是对方开启SSH服务所监听的TCP端口,默认情况下为22。 #### 使用Autossh保持稳定连接 考虑到普通的SSH连接可能会因为网络波动等原因意外断开,推荐利用`autossh`程序代替标准SSH命令发起请求。它能够在检测到链接失效后尝试重新建立新的通道,确保长期稳定的通信环境。 最后一步就是保存上述修改过的service文件到适当位置(通常是`/etc/systemd/system/`目录下),接着加载新服务并通过`systemctl start reverse_ssh && systemctl enable reverse_ssh`使其立即生效并且设为开机自启项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值