本教程要达到的目的
在外网用ssh连接到内网的linux主机。
使用的技术
nps
设备要求
- 具有公网 IP 的主机
- 内网设备可以连接网络
- 服务端版本要和客户端版本匹配,在安装好服务端版本之后,可以输入
nps version
,这时会输出该版本服务端最高支持客户端的版本。
配置步骤
下载 npc
从这个网址下载 npc 的客户端和服务器。https://github.com/cnlh/nps/releases
由于我的外网主机和内网主机都是 ubuntu 64 位,所以我选择了这两个发行版。
下载好之后把 server 复制到公网服务器上,client 复制到内网服务器上,解压。
服务器安装使用 npc
安装
服务器端解压之后为两个文件夹和一个可执行文件 npc。
在 ./conf/nps.conf 中修改配置,需要修改了一般有 http 监听的端口,https 监听的端口,用户名密码,web监听端口。
web_username=XX
web_password=XXX
web_port = 9090
http_proxy_port=88
https_proxy_port=4443
修改完成之后在 npc 这个可执行文件的目录下执行:
./npc install
nps test
nps start
nps status
之后如果要修改 npc 的配置文件就要在 /etc/npc 路径下修改了。
在服务器上配置
- 在服务器上注册一个客户端
还记得我们配置过 web 端口吗,npc服务跑起来之后,其余的事情就都在web界面上解决。
访问网址:XX.XX.XX.XX:9090
点击新增客户端,需要填的只有圈起来的几个,最重要的是客户端验证密钥
。自己设置一个,客户端就是凭着这个密钥连上服务器的。
-
为客户端开启tcp转发
点击 TCP 隧道,新建一个tcp隧道
需要设置的项目已经圈起来了。服务器端口自己随便设置一个,不过要记住,之后要用,我这里设置的是2211;目标ip为内网主机的ip地址,可以在内网主机上用 ifconfig 查看,端口默认为22;客户端id是上一步我们注册好客户端之后,自动生成的,我们抄过来就好。
客户端使用 npc
解压好之后,客户端只有两个文件:
在这个目录下运行:
./npc -server=XX.XX.XX.XX:8024 -vkey=***
XX 是你服务器的地址,vkey是注册客户端时设置的。
执行完这个命令之后,会出现成功提示。
第三台电脑ssh连接内网主机
第三台电脑需要有一个 ssh 工具,我这里使用的是putty。
填上服务器的IP和你在 为客户端开启tcp转发
步骤中设置的端口号,连接。
连接上之后需要输入内网主机的用户名和密码。因为我没有开启 root ssh 登录的权限,所以只可以用非root登录,之后 su -
切换 root 就行。
配置客户端 npc 开机自启动(可选)
杂七杂八
- npc 的客户端为 windows 系统也可以使用
- 配置允许 ssh 允许 root 远程登录
sudo nano /etc/ssh/sshd_config
把 PermitRootLogin 后面的参数改为 yes
执行
sudo service ssh restart