【过程记录】ssh配置免密登录/anaconda环境迁移/gcc_g++安装切换
原创
©著作权归作者所有:来自51CTO博客作者zstar_的原创作品,请联系作者获取转载授权,否则将追究法律责任
前言
组里有两台服务器,想要将一台服务器上的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:生成密钥对
运行完之后会生成id_rsa(私钥)、id_rsa.pub(公钥),默认会存放在~/.ssh
路径下
该路径下会存在四个文件:
- id_rsa:私钥
- id_rsa.pub:公钥
- authorized_keys:已授权的客户端公钥
- known_hosts:已认证的远程主机ID(客户端验证服务端)
Step2:拷贝公钥
ssh-copy-id -i ~/.ssh/id_rsa.pub hostip
Step3:ssh连接
-p指定端口号,默认22端口
成功连接则配置成功
环境迁移
环境迁移有两种方式,第一种方式在我之前的博文【过程记录】python环境离线迁移写过,就是直接将所有环境的安装包进行下载。
这次采用第二种更为快捷的方式,直接将Anaconda中的环境进行复制,进入到自己的环境目录中,使用scp传输文件:
scp -r 环境文件夹 user@hostip:路径
传送完之后,需要修改一些路径,比如pip
文件的第一行,需要修改路径到新环境的解释器,其它文件同理,用到再修改也可以。
由于有些库需要和cuda版本或gcc版本进行适配,因此这种方法有时候运行时会产生报错,此时利用第一种方式再次单独进行修改即可。
gcc/g++离线安装切换
查看本机上已安装的gcc/g++版本:
ls /usr/bin/gcc*
ls /usr/bin/g++*
离线下载的安装包(9.3.0版本):
https://pan.baidu.com/s/1us7W-dA4zwlfeHVZTjmREw?pwd=1pcr
传到服务器上之后,先安装gcc:
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++:
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
安装之后进行版本切换,有两种方式。
方式一:直接修改软连接
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
方式二:设置不同版本优先级
# 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
添加完之后也可以手动选择:
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
设置完之后查看版本:
远程服务器使用技巧
顺便记录几个使用远程服务器时可以用到的命令技巧。
-
nvidia-smi -l
这个命令可以不断刷新显卡使用情况,避免重复输入查看 -
fuser -v /dev/nvidia*
有时候GPU无后台进程,但是显存仍然被占用,该命令可以扫描出使用GPU的所用进程 -
nohup python train.py > nohup.log 2>&1 &
nohup可以用让程序在后台运行,2>&1
意义是将错误信息重定向写到日志文件中,具体解释可以参考
-
tmux
tmux这工具用来会话与窗口可以"解绑"。具体使用方式可以参考
-
ps -T p 进程号
/ps -f 进程号
用来查询某个进程的详细信息和命令