前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【过程记录】ssh配置免密登录/anaconda环境迁移/gcc_g++安装切换

【过程记录】ssh配置免密登录/anaconda环境迁移/gcc_g++安装切换

作者头像
zstar
发布2022-10-04 19:09:40
4040
发布2022-10-04 19:09:40
举报
文章被收录于专栏:往期博文往期博文

前言

组里有两台服务器,想要将一台服务器上的anaconda环境迁移到另一台无法联网的服务器上,本篇就来记录快速迁移过程。

ssh配置免密登录

每次使用scp传文件需要输入密码,太过麻烦,可以通过配置ssh免密的方式来避免反复输入密码。

ssh免密的原理分为以下6个步骤[1]: ①使用 ssh-key-gen 命令生成A服务器的密钥对(一对密钥,公钥A和私钥A); ②将A服务器的公钥A拷贝给另外一台服务器B保存起来,这个过程也叫做授权; ③授权完成后,A服务器再访问B服务器,会携带着用私钥A加密过的数据; ④B服务器接收到请求数据后,使用公钥A解密; ⑤B服务器将解密成功的信息通过公钥A加密后返回给A服务器; ⑥A服务器接收到数据后,用私钥A解密,解密成功,即“对暗号”成功,登录成功。

具体操作: Step1:生成密钥对

代码语言:javascript
复制
ssh-keygen -t rsa

运行完之后会生成id_rsa(私钥)、id_rsa.pub(公钥),默认会存放在~/.ssh路径下 该路径下会存在四个文件:

  • id_rsa:私钥
  • id_rsa.pub:公钥
  • authorized_keys:已授权的客户端公钥
  • known_hosts:已认证的远程主机ID(客户端验证服务端)

Step2:拷贝公钥

代码语言:javascript
复制
ssh-copy-id -i ~/.ssh/id_rsa.pub hostip

Step3:ssh连接

代码语言:javascript
复制
ssh -p 端口 user@hostip

-p指定端口号,默认22端口

成功连接则配置成功

环境迁移

环境迁移有两种方式,第一种方式在我之前的博文【过程记录】python环境离线迁移写过,就是直接将所有环境的安装包进行下载。

这次采用第二种更为快捷的方式,直接将Anaconda中的环境进行复制,进入到自己的环境目录中,使用scp传输文件:

代码语言:javascript
复制
scp -r 环境文件夹 user@hostip:路径

传送完之后,需要修改一些路径,比如pip文件的第一行,需要修改路径到新环境的解释器,其它文件同理,用到再修改也可以。

在这里插入图片描述
在这里插入图片描述

由于有些库需要和cuda版本或gcc版本进行适配,因此这种方法有时候运行时会产生报错,此时利用第一种方式再次单独进行修改即可。

gcc/g++离线安装切换

查看本机上已安装的gcc/g++版本:

代码语言:javascript
复制
ls /usr/bin/gcc*
ls /usr/bin/g++*

离线下载的安装包(9.3.0版本): https://pan.baidu.com/s/1us7W-dA4zwlfeHVZTjmREw?pwd=1pcr

传到服务器上之后,先安装gcc:

代码语言:javascript
复制
dpkg -i libc6_2.31-0ubuntu9_amd64.deb 
dpkg -i manpages-dev_5.05-1_all.deb 
dpkg -i binutils-common_2.34-6ubuntu1_amd64.deb 
dpkg -i linux-libc-dev_5.4.0-26.30_amd64.deb 
dpkg -i libctf-nobfd0_2.34-6ubuntu1_amd64.deb 
dpkg -i gcc-10-base_10-20200411-0ubuntu1_amd64.deb 
dpkg -i libgomp1_10-20200411-0ubuntu1_amd64.deb 
dpkg -i libquadmath0_10-20200411-0ubuntu1_amd64.deb 
dpkg -i libmpc3_1.1.0-1_amd64.deb 
dpkg -i libatomic1_10-20200411-0ubuntu1_amd64.deb 
dpkg -i libubsan1_10-20200411-0ubuntu1_amd64.deb 
dpkg -i libcrypt-dev_4.4.10-10ubuntu4_amd64.deb 
dpkg -i libisl22_0.22.1-1_amd64.deb 
dpkg -i libbinutils_2.34-6ubuntu1_amd64.deb 
dpkg -i libc-dev-bin_2.31-0ubuntu9_amd64.deb 
dpkg -i libcc1-0_10-20200411-0ubuntu1_amd64.deb 
dpkg -i liblsan0_10-20200411-0ubuntu1_amd64.deb 
dpkg -i libitm1_10-20200411-0ubuntu1_amd64.deb 
dpkg -i gcc-9-base_9.3.0-10ubuntu2_amd64.deb 
dpkg -i libtsan0_10-20200411-0ubuntu1_amd64.deb 
dpkg -i libctf0_2.34-6ubuntu1_amd64.deb 
dpkg -i libasan5_9.3.0-10ubuntu2_amd64.deb 
dpkg -i cpp-9_9.3.0-10ubuntu2_amd64.deb 
dpkg -i libc6-dev_2.31-0ubuntu9_amd64.deb 
dpkg -i binutils-x86-64-linux-gnu_2.34-6ubuntu1_amd64.deb 
dpkg -i binutils_2.34-6ubuntu1_amd64.deb 
dpkg -i libgcc-9-dev_9.3.0-10ubuntu2_amd64.deb 
dpkg -i cpp_9.3.0-1ubuntu2_amd64.deb 
dpkg -i gcc-9_9.3.0-10ubuntu2_amd64.deb 
dpkg -i gcc_9.3.0-1ubuntu2_amd64.deb 

然后安装g++:

代码语言:javascript
复制
dpkg -i g++-9_9.3.0-17ubuntu1_20.04_amd64.deb
dpkg -i libstdc++-9-dev_9.3.0-17ubuntu1_20.04_amd64.deb

安装之后进行版本切换,有两种方式。

方式一:直接修改软连接

代码语言:javascript
复制
sudo rm -rf /usr/bin/gcc
sudo rm -rf /usr/bin/g++
sudo ln -s /usr/bin/g++-9 /usr/bin/g++ 
sudo ln -s /usr/bin/gcc-9 /usr/bin/gcc

方式二:设置不同版本优先级

代码语言:javascript
复制
# gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70

# g++
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40 
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 70

添加完之后也可以手动选择:

代码语言:javascript
复制
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

设置完之后查看版本:

代码语言:javascript
复制
gcc -v
g++ -v

远程服务器使用技巧

顺便记录几个使用远程服务器时可以用到的命令技巧。

  • nvidia-smi -l 这个命令可以不断刷新显卡使用情况,避免重复输入查看
  • fuser -v /dev/nvidia* 有时候GPU无后台进程,但是显存仍然被占用,该命令可以扫描出使用GPU的所用进程
  • nohup python train.py > nohup.log 2>&1 & nohup可以用让程序在后台运行,2>&1意义是将错误信息重定向写到日志文件中,具体解释可以参考 https://blog.csdn.net/zhaominpro/article/details/82630528?
  • tmux tmux这工具用来会话与窗口可以"解绑"。具体使用方式可以参考 https://blog.csdn.net/LonerPYZ/article/details/114070278#t3
  • ps -T p 进程号/ps -f 进程号 用来查询某个进程的详细信息和命令
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • ssh配置免密登录
  • 环境迁移
  • gcc/g++离线安装切换
  • 远程服务器使用技巧
相关产品与服务
云数据迁移
云数据迁移(Cloud Data Migration,CDM)是腾讯云提供的 TB~PB 级别的数据迁移上云服务。本服务为您提供安全可靠的离线迁移专用设备,满足本地数据中心进行大规模数据迁移上云的需求,解决本地数据中心通过网络传输时间长、成本高、安全性低的问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档