实用ssh命令|端口转发访问远程集群jupyter服务

2021-05-23  本文已影响0人  seqyuan

作者:ahworld
链接:seurat结果转为scanpy可处理对象
来源:微信公众号seqyuan
著作权归作者所有,任何形式的转载都请联系作者。

使用ssh key的目的是使得两台机器之间建立互信,从其中一台登陆到另一台时不需要密码。就古代兵符


ssh key的生成

生成密钥对(公钥和私钥)方法:在命令行界面执行以下命令,然后一直按回车键(遇到选择,使用默认值)。

ssh-keygen -t rsa

执行完以上命令会生成~/.ssh目录,.ssh目录会生成以下两个文件:

命令行工具

上面ssh key的生成需要用到命令行工具,对于linux系统来说不做赘述,macos系统就是终端工具

如果是windows系统,建议使用MobaXterm

后续所指的执行命令,均指的是此命令行界面执行

节点间免密登陆

此处指的节点可以为远程linux计算集群也可以是本地电脑,我们统称为节点

想要从<u>由A</u>节点通过ssh<u>免密码登录到B</u>节点,需要执行以下操作:

A节点的~/.ssh/id_rsa.pub里的内容添加到B~/.ssh/authorized_keys

多级免密登陆

如果从A节点需要通过B节点跳转才能访问C节点,A节点到C节点的免密跳转设置方法:

  1. 把A的~/.ssh/id_rsa.pub里的内容添加到B的~/.ssh/authorized_keys
  2. 把A的~/.ssh/id_rsa.pub里的内容添加到C的~/.ssh/authorized_keys
  3. 把B的~/.ssh/id_rsa.pub里的内容添加到C的~/.ssh/authorized_keys

涉及到更多中间跳转的情况依上方法类推设置:把前面节点的公钥加入到后面节点的authorized_keys文件。

ssh登陆快捷键设置

可以通过配置~/.ssh/config文件实现ssh快捷键登陆远程节点

如果是上图的情况:

可以这样配置A节点(本地电脑)~/.ssh/config里的内容:

Host vpnB
    Hostname s.seqyuan.com
    Port 520
    User ahworld
    IdentityFile ~/.ssh/id_rsa
    
Host C
    Hostname 192.168.0.200
    User ahworld
    IdentityFile ~/.ssh/id_rsa
    Port 22
    ProxyCommand ssh -W %h:%p vpnB

本地电脑按照如上设置之后

访问远程web服务

我们经常用到远程web服务的情况:

linux集群建立jupyter服务的教程见

本地电脑和远程web服务处于同一内网的情况

ssh端口转发

# 远程linux集群
Host: s.seqyuan.com
HostPort: 520
JupyterPort: 8900 (jupyter服务port)
User: ahworld

如果本地电脑能够通过ssh -p 520 ahworld@s.seqyuan.com命令(或者前面的快捷命令ssh vpnB)登录远程节点,但是不能通过在本地电脑浏览器输入远程浏览器的网址:jupyter端口(s.seqyuan.com:8900)直接访问远jupyter服务,解决方案为在本地电脑命令行执行以下命令:

ssh -N -f -L localhost:8787:localhost:8900 -p 520 ahworld@s.seqyuan.com

然后在本地电脑浏览器输入127.0.0.1:8787就能访问s.seqyuan.com节点建立的端口为8900的jupyter服务了。

ssh 端口转发的主要参数意义:

ssh端口转发-多级跳转

如果是上图的情况,或者中间涉及更多级的跳转,想要在A节点(本地电脑)访问终节点(图中的C节点)建立的jupyter服务,可以在本地电脑命令行执行以下ssh端口转发命令(前提:设置ssh快捷键):

ssh -N vpnB -C -c 3des-cbc -L 8787:192.168.0.200:8901

然后本地浏览器输入127.0.0.1:8787就能访问C节点的jupyter服务

如果涉及多级跳转-N后的vpnB需要改成终节点的上一级跳转节点的快捷键。

上一篇下一篇

猜你喜欢

热点阅读