||
做计算的人,每天都需要借助SSH客户端和服务器打交道。常见的SSH客户端有PuTTY、SmarTTY、SecureCRT、XShell和MobaXterm等。几套软件用下来,个人觉得MobaXterm最好用。MobaXterm其实是安装了OpenSSH和X server的Cygwin,因此可以和虚拟机中的Linux共享一套配置信息。配置信息都是明文文件,不涉及注册表,可以直接复制到另一台计算机上使用。这些优点极大地降低了配置和迁移成本。在这里分享一下自己打磨MobaXterm的一些心得,欢迎大家指正。
MobaXterm免费版下载地址为https://mobaxterm.mobatek.net/download-home-edition.html,有绿色版(portable)和安装版(installer)两种。为便于在不同计算机间迁移安装目录和配置文件,建议下载绿色版。
下载完成后解压到安装目录(目录名中最好不要有空格和中文字符)。本例中解压到D:\Network\MobaXterm_Portable_v10.9,解压后可以看到这两个文件
然后把配置文件中的home目录和MobaXterm.ini复制到安装目录。打开MobaXterm.ini,找到这两行
确保红色线框内部分和安装目录一致。至此安装和初步配置已完成。若升级MobaXterm,需重新检查这两行设置。
如果想登录到某台服务器提交计算任务,又不想每次都输密码,这时可改用密钥认证。以配置到hpc的密钥认证为例,首先生成一对密钥(公钥+私钥):
① 切换到~/.ssh目录
② 运行ssh-keygen命令,其中-f参数指定生成的密钥文件名前缀,建议用“用户名-主机名”方式命名,中间可以一路回车
③ 用ls命令可以看到生成了yhli-hpc和yhli-hpc.pub两个文件;yhli-hpc.pub是公钥,需要安装到待登录的服务器,丢失之后还可以从私钥重新生成;yhli-hpc是私钥,一旦丢失,后果很严重,所以要妥善保管并及时备份
然后用ssh-copy-id命令把公钥安装到要登录的服务器上(打码部分为主机名或IP地址,-i参数后指定公钥名,加不加.pub均可)
最后修改~/.ssh/config,告诉ssh程序这台服务器的标识 (Host)、主机名或IP地址(HostName)、登录时所用账户(User)和密钥文件(IdentityFile)
如果要运行XCrySDen和p4vasp等有图形界面的程序,还要添加下面这两行
至此配置结束。再登录这台服务器,可以看到已经无需输入密码
从本地往服务器上传文件,可以用scp命令
桌面上的各项在Desktop目录下,其它盘上的文件则表示为/cygdrive/盘符/目录/文件名。
从服务器下载文件同理
如果服务器是超算中心的登录节点,为避免网络不稳定导致传输失败,可改用rsync命令,命令格式为“rsync –azP 用户名@主机名:文件名 本地目录” 和“rsync –azP 本地文件 用户名@主机名:文件名”。rsync支持断点续传、跳过已下载文件和md5验证,但传输速度比scp慢。
如果有一个自己搭建的集群,其中有一台登录节点hpc,还有很多计算节点nxx。每个用户必须先登录到hpc后,再登录到计算节点提交计算任务。第二节的设置解决了免密码登录hpc的问题,但由hpc登录计算节点仍需输入密码。
对此最简单的解决方案就是在hpc上重复第二节的设置,生成密钥后再把公钥安装到计算节点上,然后配置~/.ssh/config。但这种方案有致命的缺陷,就是一旦登录hpc的密钥或者密码泄露,剩下的节点就门户大开了。
更安全的解决方案是在本地再生成一对密钥,将公钥通过hpc安装到计算节点上,将私钥托管给ssh-agent,再配置~/.ssh/config,让hpc转发来自计算节点的密钥认证请求。
以配置到n76的密钥认证为例,首先新生成一对密钥yhli-n76和yhli-n76.pub,具体操作不再赘述,然后把yhli-n76.pub通过hpc安装到n76上
接着退出hpc,修改配置文件~/.bash_profile,将私钥托管给ssh-agent
再修改~/.ssh/config,告诉hpc转发认证请求
最后重新打开一个MobaXterm标签(~/.bash_profile中改动重新登录后才能生效),再次登录n76,可以发现已经不用输入密码
经过第三节的配置,由hpc登录各计算节点已无需输入密码。但有时需要从某个计算节点直接登录或者把文件发送到另一个计算节点,而不借助hpc中转。这种需求也可用ssh-agent满足。
假设两台计算节点分别为n76和n77,分别配置好了免密码登录,并且私钥均托管给了ssh-agent。登陆hpc,修改~/.ssh/config文件,告诉n76和n77转发认证请求
这样便可在n76和n77间无密码互传文件了。
经过第四节的设置,计算节点间已经可以免密码直传文件,但本地服务器和计算节点间传文件仍需借助hpc中转。用本地端口转发可简化操作
该命令将计算节点n76(集群内网ip 192.168.0.76)的22端口,以hpc为中转节点,映射为本地服务器的9022端口。通过9022端口登录本地服务器,实际上登录的是n76。用scp命令传输文件同理。
~/.bashrc里做了一些alias,并设置了自动补全
只需输入“s主机名”(如shpc)便可直接登录hpc。输入ssh或scp、rsync命令后,按Tab键可以自动补全主机名。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 08:47
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社