本帖最后由 laomms 于 2018-2-12 13:01 编辑
目的,用朋友的有公网的QNAP做反向SSH隧道为我的无公网IP机器提供内网穿透服务。
先为有公网ip的机子打开ssh的GatewayPorts功能。
用putty的ssh连接到qnap机器,用admin账号登陆,下面是过程:
先备份原有的sshd_config文件:
1. cp /mnt/HDA_ROOT/.config/ssh/sshd_config /etc/ssh 复制代码 修改sshd_config内容: 1. vi /mnt/HDA_ROOT/.config/ssh/sshd_config 复制代码 在vi界面中通过按i键进入编辑,通过esc键盘退出编辑,通过:号返回到命令行,最后通过输入wq保持内容并退出。
主要修改几处: 1. <div>#PermitRootLogin yes 把#注释号去掉 让它执行</div> <div>#GatewayPorts no 去#号,改no为yes</div><div> #AllowTcpForwarding yes 去#号 2. ... 3. AllowUsers admin 顺便可以增加一个账号,比如laomms: AllowUsers admin laomms</div> 复制代码
wq保持并退出。
然后复制回去: 1. cp /mnt/HDA_ROOT/.config/ssh/sshd_config /etc/ssh 复制代码 在控制面板的网络&服务文件中先禁用一下ssh,然后开启一下,接下来还得为机子配置开机自启功能,否则重启机器马上被恢复回去。
我们需要创建自动运行脚本,先在硬盘挂载一个放autorun.sh的临时空间config,qnap4.3以上的版本:
1. mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config 复制代码 现在创建autorun.sh 1. # vi /tmp/config/autorun.sh 复制代码 编辑autorun.sh内容: 1. #!/bin/sh 2. # SSH Config 3. cp /mnt/HDA_ROOT/.config/ssh/sshd_config /etc/ssh/sshd_config 4. /etc/init.d/login.sh restart 复制代码 保存退出后赋予执行权限: 1. # chmod +x /tmp/config/autorun.sh 复制代码 卸载空间 1. # umount /tmp/config 复制代码 现在重启都没有关系了。重启后就会自动运行脚本,看下控制面板的硬件设置中的启动时运行自定义的进程,打开autorun.sh可以看到脚本内容。
以后要想改变sshd_config内容,只要: 1. vi /mnt/HDA_ROOT/.config/ssh/sshd_config 2. cp /mnt/HDA_ROOT/.config/ssh/sshd_config /etc/ssh 复制代码
现在打开无公网机子,用putty操作ssh 1. ssh -CfnNT -R 2222:192.168.1.111:8080 admin@******.myqnapcloud.com -p 22 复制代码 192.168.1.111是本地机子局域网地址
admin是朋友机子SSH的一个账号
******.myqnapcloud.com 朋友的qc地址
22 朋友的ssh端口
2222是朋友机子那边要打开的端口,以后所有2222的请求都会转发到本地机器
回车后要求输入admin对应的密码,输入回车即可。
现在应该可以用******.myqnapcloud.com:2222访问本地机子了。
后续还可以通过sshpass直接把密码放到命令行里,还可以设置本机开机自动运行这个ssh命令。 |