金能智 文洮 安文婷 杨博超
摘 要:高性能计算集群是当前较为先进的计算体系,高性能计算的快速发展已为其他科学技术的发展提供了越来越广的支撑,其安全性显得非常重要。SSH(Secure Shell)作为一种通用的、基于软件的安全访问远程服务器的网络协议,已广泛应用于Linux高性能计算集群,本文以甘肃省计算中心高性能计算集群为实验对象,以OpenSSH为例,介绍了SSH的工作原理,OpenSSH的安装和配置,以及远程登录管理服务器,对于利用SSH远程管理服务器具有一定的指导意义。
关键词:Linux;高性能计算;集群;SSH
中图分类号:TP309.7 文献标识码:A 文章编号:2096-4706(2019)13-0177-03
Research on SSH Secure Remote Login of Linux High Performance
Computing Cluster
JIN Nengzhi,WEN Tao,AN Wenting,YANG Bochao
(Gansu Computing Center,Lanzhou 730030,China)
Abstract:High performance computing clusters are currently more advanced computing systems. The rapid development of high-performance computing has provided more and more support for the development of other science and technology,and its security is very important. SSH (Secure Shell) is a general-purpose,software-based network protocol for securely accessing remote servers. It has been widely used in Linux high performance computing clusters. This article takes the high performance computing cluster of Gansu Computing Center as the experimental object. Taking OpenSSH as an example,it introduces the working principle of SSH,the installation and configuration of OpenSSH,and the remote login management server,which have certain guiding significance for remotely managing servers by SSH.
Key words:Linux;high performance computing;clusters;SSH
0 引 言
高性能计算是改造世界的第三大科学研究方法[1],是科技创新的重要手段,在应对重大挑战性问题,促进传统产业转型升级,提高人民生活水平,促进重大科学发现等方面发挥着不可替代的作用,是研究和解决各领域挑战性问题的重要手段,已上升为国家战略,是国家综合国力和科技创新力的重要标志,也是世界各国追逐的技术制高点[2]。高性能计算在药物筛选、天气预报、分子动力学、数值模拟等方面发挥着举足轻重的作用[3,4],其安全的重要性不言而喻。高性能计算集群放置在专业机房,管理集群时,一般通过telnet、FTP等远程方式管理,然而在这些管理过程中,数据未经过加密,传输过程中存在安全漏洞,选择更为安全的远程登陆协议尤为重要。目前,很多高性能计算集群都采用Linux操作系统,而SSH作为一种通用的、基于软件的安全访问远程服务器的网络协议,在传输过程中的数据是加密的,安全性更高,已经获得了广泛的应用,目前已经成为Linux/Unix系统的标准配置,利用SSH协议可以有效的防止远程管理高性能计算集群时的数据泄露风险[5-7]。本文以甘肃省计算中心高性能计算集群为例,从SSH的工作原理、远程登录的实现等方面探究基于Linux的高性能计算集群SSH安全远程登录的防护。
1 SSH简介
SSH为Secure Shell的缩写,由国际互联网工程任务组(The Internet Engineering Task Force,简称IETF)制定,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议[6,7]。SSH几乎适用于所有Linux平台[7],广泛用于各种服务器。
2 SSH的工作原理
探讨SSH远程登录安全之前,需要了解数据加密。数据加密主要有两种方式:
(1)对称加密,也称为秘钥加密;
(2)非对称加密,也称公钥加密[8]。
对称加密,指数据的加密和解密都用同一套秘钥,虽然加密强度高,很难破解,但所有客户端和服务端都需要保存这套秘钥,而一旦秘钥泄露便保证不了数据安全[8]。
非对称加密包含两套秘钥——公钥以及私钥,解决了这个问题。其中,公钥用来加密,私钥用来解密,并且通过公钥计算不出私钥,私钥仅保存在服务器,而公钥可以随便传递,即使泄露也无风险[8]。
SSH协议是基于非对称加密方法的,服务器和客户端都会生成自己的公钥和私钥。SSH对数据进行加密,防止黑客攻击,并加快传输速度[5-7]。
SSH提供两种安全验证[6,7]:
(1)口令验证。直接使用账号和密码就可以登录远程的服务器,但是不安全,有可能被黑客攻击,安全级别比较低。
(2)秘钥验证。首先需要创建一对密匙,分别是公钥和私钥,然后把公匙放在服务器上。当远程连接SSH服务器时,客户端就会向服务器发出用密匙进行安全验证的请求。服务器收到请求之后进行比对。如果两个密匙匹配,服务器就用公匙加密质询并发送给客户端。客户端收到质询之后再用私匙解密后发送给服务器。
3 SSH远程登录的安装和配置
在Linux平台下借助于SSH实现远程管理高性能计算集群,需要在客户端和服务器端做出相应的配置。OpenSSH是SSH协议的免费开源实现。OpenSSH目前的版本为OpenSSH 8.0[5]。
3.1 服务器端的安装和配置
3.1.1 安装
以我中心的高性能计算集群为例,安装CentOS 6.9操作系统。CentOS系统一般默认安装了OpenSSH。若未安装,可以手动下载rpm包安装,也可以利用yum安装,操作如下:
(1)安装SSH yum install openssh-server;
(2)启动SSHservice sshd start;
(3)设置开机运行chkconfigsshd on。
3.1.2 配置
(1)SSH的配置。OpenSSH的主配置文件为/etc/ssh目录下的sshd_config和ssh_config,shd_config是服务器的配置文件,ssh_config客户端的配置文件。
配置服务器端:编辑sshd_config文件,以下列出了部分常用配置。
#Port 22 #此选项设置ssh监听的端口号,默认为22,也可以修改为其他端口
#Protocol 2,1 #此选项设置使用ssh协议的顺序
#ListenAddress 0.0.0.0 #此选项ssh设置服务器绑定的ip地址,默认为所有可用的ip地址
#PermitRootLogin yes #此选项设置是否允许root登录,默认允许,改为no,就是root远程不能登陆,加强安全性
#PermitEmptyPasswords no #此选项设置是否允许空密码的客户登录,默认为禁止
PasswordAuthentication yes #此选项设置是否使用口令认证方式。如果公钥认证方式,将其设置为no
(2)开启和重启sshd服务。若sshd服务未开启,则需通过service sshd start命令启动SSH服务。
3.1.3 修改网络参数
(1)集群所有服务器IP设置同一网段、子网掩码和DNS等信息。
中心某服务器node1设置为:
DEVICE=eth0
BOOTPROTO=static
TYPE=Ethernet
IPADDR=10.10.10.201
NETMASK=255.255.255.0
(2)修改host文件。
编辑hosts文件:
10.10.10.201 node1
10.10.10.202 node2
10.10.10.203 node3
10.10.10.204 node4
10.10.10.205 node5
10.10.10.206 node6
10.10.10.207 node7
10.10.10.208 node8
10.10.10.221 node101
(3)在集群每台节点上产生新的rsa公钥和私钥文件,并统一拷贝到一个authorized_keys文件中。
登录node101,在.ssh目录下输入命令:
ssh-keygen-t rsa,三次回车后,该目录下将会产生id_rsa,id_rsa.pub这2个文件。集群其他节点也使用该方式产生密钥文件。具体操作如下:
在node101下:
cat id_rsa.pub >>authorized_keys,此命令将id_rsa.pub公钥拷贝重命名为authorized_keys文件。
依次登录集群其他节点,将其公钥文件内容都拷贝到node101,命令如下:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10. 10.221
然后将id_rsa.pub公钥拷贝重命名为authorized_keys文件,命令如下:
cat id_rsa.pub >>authorized_keys
(4)授权authorized_keys文件。
登录node101,在.ssh目录下输入命令:
chmod 600 authorized_keys
(5)将授权文件分配到集群其他节点上。
登录node101,将授权文件拷贝到node1至node8,命令如下:
scp /root/.ssh/authorized_keys node1:/root/.ssh/
…
scp /root/.ssh/authorized_keys node8:/root/.ssh/
此时,高性能计算集群实现了SSH免密码登录,第一次SSH登录时需要输入密码,再次访问时即可免密码登录。
3.2 SSH远程登陆服务器
3.2.1 口令登陆
假定以用户名user,登录远程主机node101,SSH的默认端口是22。若sshd_config文件中设置的端口不是22,也可以使用-p端口号方式登陆。
$ ssh-p 22user@node101
如果本地用户名与远程用户名一致,登录时可以省略用户名。
$ sshnode101
3.2.2 公钥登陆
按照前文中修改服务器端的网络参数,配置服务器,生成公钥和私钥文件,然后将公钥传送到远程服务器,此后再登录,就不需要输入密码了。
4 结 论
随着高性能计算的高速发展,其应用越来越广泛,越来越多的学科和工程应用都离不开高性能科学计算的支撑,而其安全性就显得十分重要,选择更为安全的远程登录协议可以有效的防范高性能计算集群被攻击,而利用SSH协议可以有效的预防远程管理过程中的信息泄露风险。本文以甘肃省计算中心高性能计算集群为试验对象,详细介绍了SSH的工作原理,OpenSSH的安装和配置,对OpenSSH远程连接服务器具有一定的指导意义。在实际工作中,由于高性能计算集群的安全存在多方面的因素,还需考虑内核版本、操作系统漏洞、环境变量配置等多种因素,为高性能计算集群的安全运行和管理提供保障。
参考文献:
[1] 陈志明.科学计算:科技创新的第三种方法 [J].中国科学院院刊,2012,27(2):161-166.
[2] 廖湘科,肖侬.新型高性能计算系统与技术 [J].中国科学:信息科学,2016,46(9):1175-1210.
[3] 臧大伟,曹政,孙凝晖.高性能计算的发展 [J].科技导报,2016,34(14):22-28.
[4] 迟学斌.国家高性能计算环境发展报告(2002-2017年) [M].北京:科学出版社,2018.
[5] 杨婧.SSH协议的研究与应用 [J].计算机与数字工程,2011,39(8):112-114.
[6] OpenSSH.Release Note [EB/OL].http://www.openssh.com/releasenotes.html,2019-06-18.
[7] Ylonen T,Lonvick C. The Secure Shell (SSH) Protocol Architecture [M].The RFC Publisher,2006.
[8] 曹金山.网络高效安全数据传输方法设计 [J].现代电子技术,2010,33(20):107-109+113.
通讯作者:金能智(1983.01-),男,汉族,甘肃永靖人,硕士,副研究员,研究方向:高性能计算、化学信息学。