ssh隧道解决PyCharm跨过跳板机连接服务器问题
一、修改本地和跳板机的ssh配置
vim ~/.ssh/config
在config中添加以下内容:
Host *
ControlPersist yes
ControlMaster auto
ControlPath ~/.ssh/%n:%p
二、在本地设置ssh隧道
ssh -N -f -L 6000:<内网服务器ip>:22 -p <跳板机端口> username@<跳板机ip> -o TCPKeepAlive=yes
上述命令各个参数的含义如下:
- N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
- f 告诉SSH客户端在后台运行
- L 做本地映射端口
- 关于SSH建立管道隧道
之后,在本地登录6000端口就相当与登录内网服务器了。
ssh -p 6000 服务器用户名@localhost
开机重启后此端口会失效,因此我们为了方便可以编写一个shell脚本.sshport_config。
#!/bin/bash
ssh -N -f -L 6000:<内网服务器ip>:22 -p <跳板机端口> username@<跳板机ip> -o TCPKeepAlive=yes
每次只需要执行:
source .sshport_config
输入密码后执行:
ssh -p 6000 服务器用户名@localhost
即可登录内网服务器。
三、PyCharm远程连接服务器
添加ssh解释器即可,将其作为python解释器,
- 需要设置服务器上python解释器路径
- 需要将项目文件映射到远程的某个文件夹上,其实就是执行了scp命令
- 最后设置项目运行调试配置
设置python解释器:
项目运行调试配置:
三、VSCode远程连接服务器
使用remote-ssh工具,连接远程服务器即可,在VSCode中使用远程终端比较方便,因为默认是开启的远程终端。
在PyCharm中开启远程终端的方式是:
开启会话后选择要连接的远程服务器即可。
总结:
- VSCode比较麻烦的地方是需要自己将本地程序先上传到服务器(使用scp命令),然后在终端运行代码。
- PyCharm则相对简单一些。