SSH连接指南 && Pycharm远程开发
刚开始工作,在学校有些工具或知识接触不到,现将某些概念和方法梳理一下。
1 SSH相关指南
1.1 什么是SSH?
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
1.2 最基本的指令
SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。
1 $ ssh user@host
如果本地用户名与远程用户名一致,登录时可以省略用户名。
1 $ ssh host
SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。
1 $ ssh -p 2222 user@host
上面这条命令表示,ssh直接连接远程主机的2222端口。
1.3 在公司怎么连接服务器?
先添加用户,才能远程登录。(公钥登录)
- 在终端中生成密钥。指令为:
1 $ ssh-keygen -m PEM -t rsa -b 4096
注意后面的参数,其中4096是密钥长度。之后一路回车,完成后会在当前用户目录下生成.ssh文件夹,其中包含id_rsa(私钥)和id_rsa.pub(公钥)。
- 复制公钥。指令为:
1 $ cat .ssh/id_rsa.pub | pbcopy
- 在ops中添加公钥,得到登录代码。实际上是执行了如下代码:
1 $ ssh-copy-id user@host
最终会返回登录代码,如:
1 $ ssh -p port user@host
需要注意,这个host往往是跳板机的地址,其可能为真实的IP地址,也可能为域名(即该IP地址的别称),可以在网站https://ip.liangwei.cc/上查询域名的真实IP地址。
- 在终端输入登录代码,登录跳板机,再通过IP地址连接服务器,即可进入到指定服务器的终端执行指令。
需要注意,以上生成的是使用公钥登录的方式,免密码,就是用户将自己的公钥储存在远程主机上。还有一种方式是口令登录,即输入密码。
1.4 跳板机与服务器?
跳板机是什么?跳板机是运维堡垒主机的另个称呼。现在一定规模互联网企业,往往都拥有大量服务器,如何安全并高效的管理这些服务器是每个系统运维或安全运维人员必要工作。现在比较常见的方案是搭建跳板机环境作为线上服务器的入口,所有服务器只能通过堡垒机进行登陆访问。即所有的ssh连接都是通过跳板机来完成,以便于对ssh连接进行验证和管理。
因此,需要通过终端连接到远程服务器进行工作,由于安全等因素,登录服务器时需要先登录跳板机,然后在跳板机上再实际连接服务器。
1.5 SSH免密登录
每一次登录服务器,都需要使用跳板机中转未免有些繁琐,若想直接与服务器进行连接,首先要做的工作就是在服务器上配置本机SSH免密登录。
- 粘贴板复制id_rsa.pub内容,即公钥。
- 通过跳板机登录到指定服务器中,切换至hadoop用户(如果使用当前用户,则不用切换),指令如下:
1 $ sudo su - hadoop
- 添加公钥,指令如下(将“公钥”替换为粘贴板内容,记得在双引号里面):
1 $ echo "公钥" >> ~/.ssh/authorized_keys
- cat查看authorized_keys文件,指令如下:
1 $ cat ~/.ssh/authorized_keys
只要最后一段的结尾有“用户名@本级名称”就是添加成功了,现在,即可无密登录服务器了。
注意,因配置在hadoop用户下,故登录用户只能为hadoop时才是免密登录。
另外,安全起见,在不需要的服务器用户上通过vim在文件authorized_keys上删除公钥。
1.6 SecureCRT配置
经过SSH免密登录配置后,其实本机就可以直接与服务器相连了,指令如下:
1 $ ssh -p port user@host
注意,host为远程服务器的真实地址。现在其实可以直接配置Pycharm进行远程开发了,但是还是想讲一讲“端口转发”如何操作(不知道远程服务器真实地址的情况下)。
端口转发使用SecureCRT软件,当然不止这一种方式。
- 新建SSH2连接,Hostname为跳板机地址,Port为权限端口,Username为用户名,在Authentication中将Publickey调至最高级别,并选择公钥id_rsa.pub。
- 在Port Forwarding中添加端口转发,设置本地端口号和服务器地址、端口号。
- 重新连接,此时端口转发已完成,即通过本地端口号可以直接访问远程服务器,只要此连接不关闭,可一直转发。
- 可作如下测试:新建SSH2连接,Hostname为本机地址127.0.0.1,Port为刚刚设置的本地端口号,Username为服务器的用户名,在Authentication中将Publickey调至最高级别,并选择公钥,即可直接登录服务器。
备注,登录跳板机后,需要再输入服务器地址才能进入服务器,所以可以在Logon Active中添加登录指令,自动完成输入服务器地址命令,如下图。
2 Pycharm远程开发
2.1 服务器配置开发环境
- 登录至服务器用户,下载Anaconda安装包,指令如下:
1 $ wget https://repo.continuum.io/archive/Anaconda3-5.3.1-Linux-x86_64.sh
如果是Miniconda,则地址为https://repo.continuum.io/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh,在下面安装过程中也要把对应的文件名更换。
- 安装,指令如下:
1 $ bash Anaconda3-5.3.1-Linux-x86_64.sh
需要注意,这个命令是将Anaconda安装到默认的根目录路径下面,如果要安装到指定目录,则需要使用下面的指令:
1 $ bash Anaconda3-5.3.1-Linux-x86_64.sh -u
然后一直enter,输入yes接受条款,然后输入你的指定路径,在最后还需要选择yes,即添加环境变量。
- 输入conda list,如果出错则是环境变量没有配置,需再次配置,使用 $ vim ~/.bashrc 打开文件,在最后一行添加如下内容:
1 export PATH=/home/(your_user_name)/anaconda3/bin:$PATH
之后保存退出,使用 source ~/.bashrc 更新。
- 输入conda list,则会成功显示当前已安装的包。
2.2 常用conda指令
删除conda:
- 删除整个conda目录,指令如下:
1 $ rm -rf conda文件夹路径
- 清理下.bashrc中的Anaconda路径。
- 到根目录下,打开终端并输入以下指令:
1 $ vim ~/.bashrc
- 在.bashrc文件末尾用#号注释掉之前添加的路径(或直接删除):
1 #export PATH=/home/lq/conda3/bin:$PATH
保存并关闭文件。
- 使其立即生效,在终端执行以下指令:
1 $ source ~/.bashrc
- 关闭终端,然后再重启一个新的终端,这一步很重要,不然在原终端上还是绑定有conda。
- 到根目录下,打开终端并输入以下指令:
更改下载源(Linux):[参考文章]
常用指令:
1 conda --version //查看conda版本 2 conda env list //查看所有环境 3 conda info --envs //查看所有环境 4 activate //直接进入默认的conda环境 5 conda create -n environmentName python=3.6 //创建环境 6 conda remove -n environmentName --all //删除环境 7 activate environmentName //切换环境(Windows) 8 source activate environmentName //切换环境(Linux) 9 deactivate environmentName //退出当前环境(Windows) 10 source deactivate environmentName //退出当前环境(Linux)
以上是将虚拟环境安装在默认路径中,如果是想将虚拟环境安装在指定路径中,那么需要使用如下指令:
1 conda create --prefix="D:\my_python\envs\environmentName" python=3.6 //指定路径下创建环境 2 conda remove --prefix="D:\my_python\envs\environmentName" --all //删除环境 3 activate D:\my_python\envs\environmentName //切换环境(Windows) 4 source activate D:\my_python\envs\environmentName //切换环境(Linux) 5 source deactivate environmentName //退出当前环境(Linux)
注意:在conda4.0版本以上,在切换或者推出环境时不再使用source,而是替换成conda。
其实删除指令有很多,除了以上指令外,下面这条也可以,但不经常使用,只是记录一下:
1 conda env remove -p D:\my_python\envs\environmentName
进到环境后,就跟普通的Python指令是一样的,可以使用pip或者conda进行安装、查看和删除包。
1 python -v //查看Python版本 2 pip -v //查看pip版本 3 pip list //列出所有包 4 pip install name //安装包 5 pip update name //升级包 6 pip uninstall name //卸载包 7 pip freeze > requirements.txt //导出当前环境的包信息 8 pip install -r requirements.txt //安装配置文件的包
1 conda list //列出所有包 2 conda install name //安装包 3 conda update name //升级包 4 conda remove name //卸载包 5 conda env export > environment.yaml //导出当前环境的包信息,注意只能导出conda安装的包 6 conda env create -f environment.yaml //用配置文件创建新的虚拟环境
2.3 Pycharm配置
打开Pycharm,在Settings中添加python解释器。
- 打开Pycharm,左上角打开Settings,在Project Interpreter选择Add。
- 选择SSH连接,输入地址、端口、用户名(确保SecureCRT打开)。
注意,如果不经过端口转发的话,Host地址和Port直接填写远程服务器的真实地址和端口即可。 - 选择解释器所在路径。
- 选择本地工作路径和服务器的工作路径,注意最下面的选项要选择,可以自动同步代码。
还要注意一点,在点击确认后,有可能会有提示框,大致意思是说“是否立即覆盖远程服务器文件夹的文件...”之类的,请视情况而选择,确定的话会将设置的远程服务器同步文件夹内的文件全部清空。
事实上,在新建项目的时候可以选择远程解释器,那样操作比较方便,过程与上类似。