avatar

AngYi

Aim for the stars, and beyond.

  • 首页
  • 分类
  • 标签
  • 归档
  • 相册
  • 关于我
Home SSH远程连接服务器搭建Python环境全套解析
文章

SSH远程连接服务器搭建Python环境全套解析

Posted 2021-12-5 Updated 2023-10- 17
By AngYi
12~16 min read

OQq8RW

ssh

SSH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密。

传统的对称加密使用的是一套秘钥,数据的加密以及解密用的都是这一套秘钥,可想而知所有的客户端以及服务端都需要保存这套秘钥,泄露的风险很高,而一旦秘钥便泄露便保证不了数据安全。

非对称加密解决的就是这个问题,它包含两套秘钥 - 公钥以及 私钥,其中公钥用来加密,私钥用来解密,并且通过公钥计算不出私钥,因此私钥谨慎保存在服务端,而公钥可以随便传递,即使泄露也无风险。

保证SSH安全性的方法,简单来说就是客户端和服务端各自生成一套私钥和公钥,并且互相交换公钥,这样每一条发出的数据都可以用对方的公钥来加密,对方收到后再用自己的私钥来解密。

总结:公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),将其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。

当然这其中还有更加复杂的密码学算法,涉及到数字签名 哈希算法等,这里我们不仔细研究。

总结操作流程来说就是公钥加密,私钥解密。私钥数字签名,公钥验证。

通常我们有两种连接服务器的方式

  1. 利用密码登录

    需要有服务器ip,端口,用户名,密码

    密码登录原理图解

    1. 服务端收到登录请求后,首先互换公钥,详细步骤如上一节所述。
    2. 客户端用服务端的公钥加密账号密码并发送
    3. 服务端用自己的秘钥解密后得到账号密码,然后进行验证
    4. 服务端用客户端的公钥加密验证结果并返回
    5. 服务端用自己的秘钥解密后得到验证结果

通常我们可以用一些ssh客户端,比如用终端/putty/final shell /Xshell等工具登陆服务器命令行:

终端连接服务器

输入ssh命令,用户名@ip,然后输入密码即可登录到服务器终端。到了这一步我们就打通了与服务器的连接,通过命令行我们可以对服务器进行一些配置操作,来响应本地用户的要求。

  1. 密码登录方式在每次登录时都需要输入密码,而利用公,

    公钥登录原理图解

    1. 客户端用户必须手动地将自己的公钥添加到服务器一个名叫authorized_keys的文件里,顾名思义,这个文件保存了所有可以远程登录的机器的公钥。
    2. 客户端发起登录请求,并且发送一个自己公钥的指纹(具有唯一性,但不是公钥)
    3. 服务端根据指纹检测此公钥是否保存在authorized_keys中
    4. 若存在,服务端便生成一段随机字符串,然后利用客户端公钥加密并返回
    5. 客户端收到后用自己的私钥解密,再利用服务端公钥加密后发回
    6. 服务端收到后用自己的私钥解密,如果为同一字符串,则验证通过

    ==使用这一行命令即可将个人公钥添加到服务器,之后登陆就可以免密码输入这一步骤了==

    ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
    

安装Anaconda

后面这些配置项目只针对于利用GPU服务器进行深度学习或者Python相关工作人员:

下载安装包

  1. 利用wget下载官网链接,这种方式可能比较慢,需要确定版本的包名称。
wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh
  1. 直接在本地去官网或者清华镜像下载Anaconda对应安装包,然后利用Filezilla等Ftp传输工具,将安装包传输到服务器。

安装

cd 安装包所在路径
bash Anaconda安装包.sh

然后一路回车,直到安装完成。中间会有好几次输入yes操作,一般选择安装到默认位置,添加环境变量,所以都输入yes,如果忘记操作,没有添加到环境变量,可以用下面的命令添加到环境变量

添加到环境变量

sudo gedit ~/.bashrc
export PATH="/home/用户名/anaconda3/bin:$PATH"
source ~/.bashrc

这里曾经遇到过一个小烦恼,如果服务器默认命令行不是bash,而是sh之类的,可能你添加了环境变量也会无法运行conda,会提示not found,这是只需要exec bash将命令行转为bash即可。

单配置jupyter

  1. 生成Jupyter的配置文件,使用命令自动生成配置文件
jupyter notebook --generate-config
  1. 生成jupyter密钥,找个Ipython命令行,然后输入以下代码:
from notebook.auth import passwd
passwd()
#就会提示输入两次密码:  # 输入你自己的自定义密码两次
`sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'`

复制输出的sha1密钥,打开配置文件的路径中的配置文件.jupyter/jupyter_notebook_config.py,修改下面的设置

    c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
    c.NotebookApp.ip = '*'
    c.NotebookApp.open_browser = False
    c.NotebookApp.port = 9999

随后就可以在服务器命令行输入jupyter notebook,然后在本地浏览器输入ip:8888,就会出现login界面,输入自定义密码即可打开jupyter。

配置VsCode

天地大同,万物合一编辑器Vscode逐渐成为了我的最爱,用Vscode直接连接服务器进行代码工作也是非常方便。

在扩展栏搜索ssh,添加微软官方Remote SSH扩展插件,添加成功之后在左边栏出现的图标

VsCode ssh插件

点击边栏图标,点击加号,输入ssh命令行语句然后选择ssh配置文件即可连接,Vscode现在支持原生jupyter,一切都是这么流畅。

注意类似VsCode python等插件,服务器与本地也是分开的,所以需要重新安装一下。

Python 虚拟环境

服务器的环境往往不是一个人在使用,或者你个人目录下有多个项目,需要建立不同的Python环境,或者项目最后需要一起打包依赖,那么在这些场景下,我都建议你使用Python的虚拟环境,因为她们彼此独立,。

利用conda创建虚拟环境:

conda create -n environment_name python=X.X

然后就可以利用VsCode的解释器选择窗口选择虚拟环境,新建终端,会发现命令行会自动激活所选环境,一切如丝绸般顺滑!

VsCode激活虚拟环境

系统
ssh
License:  CC BY 4.0
Share

Further Reading

Sep 18, 2024

终端复用工具tmux简介及常用快捷键

终端复用工具tmux简介及常用快捷键 tmux的Layouts基本概念: 1、服务(Server) 2、会话(Session):建立一个tmux工作区会话; 3、窗口(Window):容纳多个窗格; 4、窗格(Pane):可以在窗口中分成多个窗格。 tmux的常用快捷键 注意:在使用下面的快捷键的时

Sep 18, 2024

neovim 快速配置与极速入门

前言 最近打算入坑 neovim ,发现这玩意儿的配置过程还是很简单的,简单记录一下,免得后面忘记一些关键路径了。 我将 neovim 的本体安装,packer包管理器安装,一个基础配置写成了简单的脚本,阁下只需要直接执行这个脚本就能全自动完成配置了。 如果你对 neovim 的具体配置细节感兴趣,

Jan 16, 2024

极空间安装homeassistant 和 hacs

简介 搜了很多教程,都会出现 hacs 无法安装的问题,在淌完水之后,还是决定要写个教程。 有几个小坑,归根到底还是网络不通畅的问题,玩 ha 还是建议全局🪜 大致步骤:1. docker 拉取 homeassistant 镜像,启动容器(可能需要修改端口) 2. 初始化 homeassistan

OLDER

CMIP6 海气耦合模型数据下载

NEWER

周末写了一个疫情可视化的项目

Recently Updated

  • DeepSeek 创始人梁文峰采访:创新、人才与中国 AI 发展
  • 福州-厦门之行
  • 我有自己的摄影网站啦
  • 借助Ollama一键本地部署CodeGeex,让AI帮你打工
  • Dash 进阶技巧

Trending Tags

ssh linux matlab 感悟 读书 blog git python flask ML

Contents

©2025 AngYi. Some rights reserved.

Using the Halo theme Chirpy