pycharm远程通过SSH调用linux环境下的python - Go语言中文社区

pycharm远程通过SSH调用linux环境下的python


最近博主在帮老师做项目,因为更习惯使用windows系统,平常没少花时间在配置环境上。在linux环境安装各类环境库的方便程度要远远高于window环境下,但是每次都要在远程连接服务器或者打开虚拟机未免有些不方便。所以,通过pycharm自带的ssh连接功能,可以在windows环境下直接调用linux系统配置好的python环境,省去了各种各样的问题。

一.前提条件

(1)准备好pycharm专业版,社区办没有远程连接服务器的功能(学生的话可以使用edu邮箱申请1年免费使用)

(2)一个装有ubuntu或者centos的服务器、虚拟机(并且安装完常用的库,诸如vim,make等)

二. 配置ssh-server

因为是使用Windows下的软件来访问linux,所以Linux下不需要安装openssh的客户端

首先启动docker镜像,创造一个新的容器,并在该容器中安装ssh-server

(base) root@dd53ea4c2f2b:/# yum install openssh-server

# 安装ssh-server,之后检查ssh-server是否安装成功
(base) root@dd53ea4c2f2b:/# service ssh start
# 有时候是 service sshd start (如果上面不成功则输入下面的)

出现下面的文字说明启动成功

img

接下来,设置ssh-server自动启动

echo 'service ssh start'>>~/.bashrc

随后,为ssh登录设置一个密码,这里密码暂定为123,请牢记你的密码,同时,用户名默认为root,我自己设置的是admin。

(base) root@dd53ea4c2f2b:/# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

使用命令vim /etc/ssh/sshd_config,在文件最後面添加以下

PermitRootLogin yes #允許root用户使用ssh登錄

如果没有安装vim,使用如下命令安装

yum install vim
echo ':set term=builtin_ansi' >> /usr/share/vim/vimrc
# 第二行如果不加的话会出现在vim中方向键使用失灵的情况

重啟ssh服務

/etc/init.d/ssh restart

(注意,每次服务器重新启动,需要重新启动一次ssh,pycharm才能连接到服务器)

查看服务器的ip地址,inet后面的就是自己的外部ip

(base) [root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet (your ip)  netmask 255.255.255.0  broadcast (xxxxxxxx)
        inet6 fe80::46fc:602:59c3:ac4d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0c:b6:2c  txqueuelen 1000  (Ethernet)
        RX packets 5158526  bytes 7612328144 (7.0 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 534088  bytes 169710625 (161.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

三. 将 Pycharm 与服务器相链接

打开pycharm,点击工具栏上面的Tool,找到Deployment选项

image-20210119150716195

进入界面后,点击左上角的+号

image-20210119150948834

新建SSH Configuration

image-20210119151218851

host输入的服务器的远程ip,port是ssh的端口,默认为22,username就是用户的名称,默认为root,passwd就是刚刚设置的密码123。

点击test connection,连接成功

image-20210119151835742

选择刚刚创建好的SSH Configuration后,点击上方的Mapping,选择映射路径

image-20210119152407039

local path指的是宿主机需要映射的文件夹,Deployment 指的是远程服务器需要映射的文件,连接成功后我们可以在两个文件夹之间进行文件的传输。

设置好之后,可以看到在服务器上面映射的文件夹呈现为绿色。

image-20210119152747669

如果想要进行文件传输:

(1)宿主机传输文件至服务器

image-20210119153443516

此时我们从记录可以看到program文件夹传输至服务器内

(2)服务器传输文件至宿主机

image-20210119153814857

此时从服务器上传输了PEKS这个文件夹到宿主机

四. 配置Python编译环境

1.配置环境

将宿主机与服务器通过SFTP进行连接后,我们还需要调用服务器的语言环境

打开setting,点击SSH Interpreter,选择之前已经配置好的SSH confirmation

image-20210119154147826

下面这一步比较复杂,大家可以结合实践多试试,在Interpreter中设置你的Python环境安装路径,不确定的话有两种方式:

(1)whereis python # 展示环境中安装所有python的目录

(2)which python # 展示目前环境变量中使用的python目录

Sync folders中填写本地要和docker容器中哪个文件夹建立联系,因为pycharm远程的原理是将远程的Py文件下载到本地修改(在远程进行修改和调试后,再从服务器端下载回来也一样),然后在运行和调试时发送到远程去执行。注意,这里的远程和本地分别置服务器和宿主机。(仔细看路径,还记得我们将本地的文件夹映射到了/home/admin/program路径么,所以这里其实处理的是本地的程序)

image-20210119154430858

(下方的自动上传我个人认为应该取消,因为可能会自动覆盖文件,每次在云端修改时,手动进行覆盖即可)

我们右键绿色的文件夹,选择Sync with local,他会扫描本地与远程的差异,见下图

image-20210119155618223

因为只需要同步py文件,因此在Filter中输入*.py,之后点回车,在点击绿色的快进号(两个三角形),本地的py文件就下载好了。

问题一 .当我们想要运行远程的py文件时,会出现

image-20210119155824007

无法找到该文件的位置,此时我们需要修改该文件的工作位置

image-20210119160310466

image-20210119160434079

代码所在的目录前面有一连串的标识符指代该服务器,但是不知道为什么pycharm无法识别,所以我们需要将< >内的内容删去。同时修改工作目录, 指的是根目录,所以无法读取想要的pcap文件。修改后如图:

image-20210119160751368

此时再次运行代码就可以执行程序了(设置的目录在/home/admin/program下,读取AI文件夹内的文件)

image-20210119160856512

问题二 .修改远程文件后,执行程序内容不变

因为我们没有点击自动上传的选项,所以每次修改代码都需要自行上传,点击右上方即可

image-20210119161231946
或者选择自行上传

image-20210119161310505

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39032619/article/details/112875813
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢