对于没有公网IP或没有开放公网端口的服务器而言,总是会碰到各种麻烦。出于开发需要就必须要登录内网服务器,那么可以通过ssh端口转发实现内网穿透。以下就记录一下实现pycharm和vnc的内网穿透。
配置免密登录
-
修改本地
.ssh
配置打开
~/.ssh/config
,加入以下内容1 2 3 4
Host * ControlPersist yes ControlMaster auto ControlPath ~/.ssh/%n:%p
-
修改跳板机
ssh
配置登录跳板机,执行上述步骤相同的操作
-
在跳板机登录内网机器
-
在本地机器执行以下命令
1 2 3 4 5 6 7
ssh -N -f -L 6000:<内网服务器ip>:22 -p <跳板机端口> username@<跳板机ip> -o TCPKeepAlive=yes # -N 表示仅进行端口转发 # -f 表示在后台运行ssh # -L 表示在本地映射端口 # 6000 表示本地端口 # 22 表示内网服务器ssh端口,默认为22,应替换为你的服务器的ssh端口 # 注意,此处默认跳板机服务器ssh端口为22,如果不是应添加端口号
上述操作执行完成并且没有明显的错误提示之后,可在本地终端执行如下命令:
|
|
如果没有出现错误则能够成功登录。
配置Pycharm远程服务器
执行完成上述步骤之后打开pycharm,在菜单栏找到Tools -> Deployment -> Configuration
,如下图所示:
打开之后会出现一个页面,点击+
号添加sftp
,出现如下图界面,服务器名称随便填写:
点击OK
,跳出服务器配置页面,如下图所示,将内网服务器信息填写完成
注意,图中的Host应为
127.0.0.1
,Port
应为6000
,即配置ssh时填写的本地端口号,用户名和密码为内网服务器对应的用户名和密码。
填写完成之后即可连接远程服务器。
通过Tools -> Deployment -> Browse Remote Host
可以选择打开已经添加的远程服务器,然后打开需要编辑的脚本即可进行远程开发。
VNC设置
执行完成免密登录
的操作之后,登录内网服务器。如果是第一次使用VNC服务,
-
首先在终端先执行
vncpasswd
命令如下图,填写一次密码,然后验证密码,第三部选择
n
-
然后执行
vncserver
,终端会给出类似如下信息: -
上述操作完成后,在本地下载vncviewer工具,如果使用的是chrome浏览器,可以添加
VNC Viewer
插件 -
下载VNC工具或添加插件之后,在本地执行以下命令
1 2 3
ssh -N -f -L 6001:<内网服务器IP>:5904 -p 22 username@<跳板机IP> -o TCPKeepAlive=yes # 6001 表示转发远程VNC端口到本地的端口 # 5904 表示远程的VNC端口,此端口名称和执行 vncserver 之后给的数字有关,如果是2,那么就是5902,如果是3,则是5903。此端口可以通过查看执行 vncserver 后给的log文件,比如上面给的 ~/.vnc/mgt:4.log
-
此处以chrome的VNC插件为例,打开VNC Viewer插件,出现如下界面,填入本地IP地址和端口点击
Connect
-
执行完成上述操作后,会跳转到以下认证界面,填入执行
vncpasswd
时的密码即可 -
最后大功告成,VNC登录内网服务器成功!