如果想要在远程计算集群上使用 QuantumATK 的 Job Manager 执行和管理 QuantumATK 作业,则需要无密码的SSH密钥对。本教程将向您展示应该如何操作。
我们提供了关于 Windows、Linux 和 OS X 的详细说明。
您需要安装一些专用软件生成 SSH 密钥并在 Windows 上建立 SSH 连接。PuTTY 和 PuTTYgen 都是很受欢迎的选择。下载并安装它们。
.quantumatk /
文件夹中的 QuantumATK_rsa.pub
。这些操作系统应该默认地提供您需要的软件。
/home/user/.ssh
,将 “user” 替换为合适的用户名。id_rsa a
和 id_rsa.pub
)。/home/user/.ssh/id_rsa
的第二行显示的是 “ENCRYPTED”。/home/user/.quantumatk/
,给它们加上前缀 “QuantumATK”(/home/user/.quantumatk/QuantumATK_rsa
和 /home/user/.quantumatk/QuantumATK_rsa.pub
)。然后进入 “将公共秘钥添加到远程集群已授权的 SSH 秘钥” 的部分。ssh-keygen
命令生成新的 SSH 秘钥对:$ ssh-keygen
/home/user/.quantumatk/QuantumATK_rsa
作为文件名称。/home/user/.quantumatk
里拥有了公共(QuantumATK_rsa.pub
)和私有(QuantumATK_rsa
) SSH 秘钥。下一步,您需要将您的公共 SSH 秘钥添加到远程集群已授权秘钥的清单上。
您可能需要集群的管理员为您执行此操作。无论如何,下面我们将展示如何在您有权访问的情况下执行此操作。
使用 ssh-copy-id
命令:
ssh-copy-id -i /home/user/.quantumatk/QuantumATK_rsa username@HOST.CLUSTER.EDU
在出现提示时输入您的密码。您的公共秘钥现在应该被添加到集群的 /home/user/.ssh/authorized_keys
文件里。
您需要登录集群,手动添加秘钥。
打开您电脑上的 PuTTY,输入远程的主机名称并点击 Open。
图 21 用合适的主机名称替代 HOST.CLUSTER.EDU。
.pub
的那个)添加到文件 /home/user/.ssh/authorized_keys
,然后保存。我们在这里提供了一个 QuantumATK 脚本,它将尝试建立与远程集群的连接,并报告连接是否成功建立。
1 from NL.ComputerScienceUtilities.SSHConnection import SSHConnection 2 import os 3 4 # -------------------------------------- # 5 # Edit only these 3 settings 6 # -------------------------------------- # 7 key_dir = 'path_to_SSH_keys' 8 hostname = 'HOST.CLUSTER.EDU' 9 username = 'my_user_name' 10 11 # -------------------------------------- # 12 port = 22 13 ok = os.path.isdir(key_dir) 14 if ok: 15 print("Sucessfully found local dir with SSH keys.") 16 con = SSHConnection(hostname, port, username, key_dir) 17 con.connect() 18 ok = con.isConnected() 19 20 if ok: 21 print("Connection succesful.") 22 else: 23 print("Error: Could not find local dir with SSH keys.") 24 # -------------------------------------- #
$ atkpython ssh_test.py
Successfully found local dir with SSH keys. Connection successful.
您现在应该已准备好使用 QuantumATK 作业管理器在远程集群上运行的 QuantumATK 作业,请参阅教程 Job Manager for remote execution of QuantumATK scripts。