Skip to main content

远程连接服务器

Tiu MoAbout 5 min

远程连接服务器

连接方式

终端连接

cmd/powershell/terminal

ssh ACCOUNT@REMOTE_IP  # eg: ssh leng@10.16.0.42
# 第一次连接可能需要验证 key,输入‘yes’后回车
# 输入密码时没有显示,输完后直接回车 

VSCode 连接(推荐👍)

地址:https://code.visualstudio.com/open in new window

教育版 PyCharm 连接

Pycharm-学生免费专业版安装 - 知乎 (zhihu.com)open in new window

社区版PyCharm没有远程连接功能,专业版教育版的才有。


配置项目环境

创建项目文件夹

cd YOUR_ROOT_PATH  # 一般为PycharmProjects或者桌面
mkdir YOUR_PROJECT_DIR  

打开 Terminal 新建环境

conda create -n YOUR_NAME python=3.x  # 创建环境
conda activate YOUR_NAME  # 激活环境

conda deactivate  # 退出当前环境
conda env list 或 $ conda info -e  # 查看当前环境列表
conda remove -n YOUR_NAME --all  # 删除虚拟环境

装库

conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge 
pip3 install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

运行文件

(1) 右键run, 然后去configurations里删除ip地址

# 过程略

(2) 终端运行

python xxx.py

(3) screen 运行(离线)tmux 更好用,所以换了

$ tmux new -s SESSION_NAME
$ tmux ls
$ tmux a -t SESSION_NAME

$ tmux kill-session -t SESSION_NAME
# 分离窗口
# 第一步:输入组合键 Ctrl+B,然后松开。
# 第二步:输入字母 d。

# 复制窗口
# 第一步:按 Ctrl+B 组合键,然后松开。
# 第二步:再单独按一下 c 键。

# 切换窗口
# 第一步:按 Ctrl-B 组合键,然后松开。
# 第二步:按数字 0 键。

按完前缀ctrl+B后,再按冒号:进入命令行模式,
输入以下命令:
$ set -g mouse on

ctrl+B + [ the 'Page Up/Down' 翻页
$ sudo apt-get install screen 或 $ sudo yum install screen

$ screen -S name  # 新建窗口并进入

$ screen -ls  # 列出窗口

There is a screen on:
2637.count (12/17/2015/10:00:32 AM) (Detached)

$ screen -r 2637  # 进入2637线程,恢复count会话窗口

会话分离 我们在一个窗口运行某个程序之后,想退出登录关闭terminal干点别的事,让程序在后台运行。这时就需要和窗口会话分离,有2种方式:

  1. 快捷键Ctrl a表示进入命令模式 在当前会话窗口中按Ctrl a +d快捷键可以实现分离,这时窗口会弹出[detached]的提示,并回到主窗口。
  2. screen -d name # 远程detach某个session,前提是已经跳出了name窗口

杀死会话窗口 如果想关掉一个多余的窗口,有3种方法:

kill -9 threadnum 例如在上面的2637,kill -9 2637 即可杀死线程,并杀死窗口

使用Ctrl a +k 杀死当前窗口和窗口中运行的程序

使用Ctrl a 然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序

清除死去的窗口 当窗口被杀死后,再用screen -ls 可以看到该窗口后面的(??? dead)字样,说明窗口死了,但是仍在占用空间。这时需要清除窗口

$ screen -wipe #自动清除死去的窗口

2.5.3使用screen进行任务管理 当程序运行时间较长时,我们在当前Linux窗口直接运行程序,程序或许会因为网络问题异常终止。我们可以使用screen来解决本地突然离线的问题,因为screen相当于创建一个后台窗口在服务器,本地连接中断并不会影响正在运行的程序。我们在命令行敲入screen –ls命令,效果如图 2.21所示。

1.  # 常用的screen命令
2.  screen –S name  # 创建一个窗口  
3.  screen –ls  # 查看当前已经创建的窗口  
4.  screen –d –r name  # 回到名字为name的窗口  
5.  screen –X –S name quit  # 关闭名字为name的窗口

远程连接服务器

VSCode更好用

安装教育版 PyCharm

Pycharm-学生免费专业版安装 - 知乎 (zhihu.com)open in new window

创建项目文件夹

cd YOUR_ROOT_PATH  # 一般为PycharmProjects或者桌面
mkdir YOUR_PROJECT_DIR  

打开 Terminal 新建环境

conda create -n YOUR_NAME python=3.x  # 创建环境
conda activate YOUR_NAME  # 激活环境

conda deactivate  # 退出当前环境
conda env list 或 $ conda info -e  # 查看当前环境列表
conda remove -n YOUR_NAME --all  # 删除虚拟环境

装库

conda install pytorch torchvision torchaudio cudatoolkit=10.1 -c pytorch

新建/打开 项目,选择python解释器

Interpreter Settings 里修改解释器与mapping

1.本地创建项目

File-》New Project...

du -sh *  # 查看每一个占了空间
df  # 显示磁盘相关信息

ls  # 列出当前文件夹内容
cd YOUR_DIR_PATH  # 进入路径
mkdir YOUR_DIR_NAME  # 创建文件夹

Root ssh 远程连接

$ apt-get install -y openssh-server

$ sudo vim /etc/ssh/sshd_config

> PermitRootLogin yes
> PermitEmptyPasswords no

$ service ssh restart

免密链接

# 本地终端
$ ssh-keygen -t rsa -C "mo1031@live.com"  # 一路 Enter
$ vim /Users/tiumo/.ssh/id_rsa.pub  # 打开密钥,手动复制

# 远程终端
$ mkdir .ssh
$ cd .ssh
$ touch authorized_keys
$ vim authorized_keys
在 /home/leng/.ssh/authorized_keys  # 手动粘贴

校外连接

配置ssh监控端口

$ sudo vim /etc/ssh/sshd_config
'add' ListenAddress 0.0.0.0:5122(YOUR_PORT)

# 例如:
ListenAddress 0.0.0.0:5122
ListenAddress 0.0.0.0:22

$ service sshd restart  # (如果selinux不设置为disabled,则无法生效)

$ sudo netstat -anp|grep sshd  # 查看端口号

# 如果系统升级过ssh,即使修改配置文件/etc/ssh/sshd_config也不会生效,
# 升级openssh后,配置文件被修改到/usr/local/etc/sshd_config,
# 所以修改这个/usr/local/etc/sshd_config

本机操作

1.安装VPN软件EasyConnect -> https://vpn.cqupt.edu.cn/
2.安装lemon -> https://lemon.qq.com(App Store版无此功能)
3.开机启动项中开启两个守护进程
    a."com.sangfor.ECAgentProxy.plist"
    b."com.sangfor.EasyMonitor"

$ ssh -p 5122 myName@hostname

命令行启动向日葵

$ sudo /usr/local/sunlogin/bin/sunloginclient  # 一般会报错

# 所以换个方式, 开机加载项中去改吧

改变文件用户权限

$ mv /home/guest/Documents/nemo /home/nemo

$ sudo cp /home/guest/.bashrc /home/nemo/.bashrc

$ sudo chown nemo.nemo -R nemo  # chown runoob:runoobgroup file1.txt 
# -R 表示当前前目录下的所有文件与子目录

$ sudo chmod 600 ××× (只有所有者有读和写的权限)
$ sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)
$ sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)
$ sudo chmod 666 ××× (每个人都有读和写的权限)
$ sudo chmod 777 ××× (每个人都有读和写以及执行的权限)

# 其中×××指文件名(也可以是文件夹名,不过要在chmod后加-ld)