用户工具

站点工具

本页面的其他翻译:
  • zh

atk:ssh_keys

SSH keys

SSH keys

如果想要在远程计算集群上使用 QuantumATK 的 Job Manager 执行和管理 QuantumATK 作业,则需要无密码的SSH密钥对。本教程将向您展示应该如何操作。

  1. 创建一对公共和私有的 SSH 密钥;
  2. 将公共秘钥添加到远程集群上已授权 SSH 密钥的列表中;
  3. 检查无密码 SSH 连接是否正常工作。

我们提供了关于 Windows、Linux 和 OS X 的详细说明。

创建一组公共和私有的 SSH 秘钥

Windows

您需要安装一些专用软件生成 SSH 密钥并在 Windows 上建立 SSH 连接。PuTTY 和 PuTTYgen 都是很受欢迎的选择。下载并安装它们。

  • 打开 PuTTYgen,然后单击 Generate,创建密钥对。不要使用密钥密码。

  • 转至 Conversions Export OpenSSH key,导出并保存私有秘钥。将它保存为 QuantumATK_rsa 到文件夹 Computer / LocalDisk(C:)/ Users / user / .quantumatk / 中(如果它与您本地计算机上有所不同,请调整路径。特别地,用适当的用户名替换“user”)。

  • 右击公共秘钥区,复制文本。

  • 将公共秘钥粘贴到编辑器(如记事本)中,并保存为 .quantumatk / 文件夹中的 QuantumATK_rsa.pub

Linux 和 OS X

Linux 和 OS X

这些操作系统应该默认地提供您需要的软件。

  • 打开一个终端窗口,找到文件夹 /home/user/.ssh,将 “user” 替换为合适的用户名
  • 检查是否有一组秘钥已经生成(id_rsa aid_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 作为文件名称。
  • 不要使用秘钥密码!要求输入密码时只需要点击 enter 键即可。
  • 您现在应该在文件夹 /home/user/.quantumatk 里拥有了公共(QuantumATK_rsa.pub)和私有(QuantumATK_rsa) SSH 秘钥。

将公共秘钥添加到远程集群已授权的 SSH 秘钥

下一步,您需要将您的公共 SSH 秘钥添加到远程集群已授权秘钥的清单上。

注意

您可能需要集群的管理员为您执行此操作。无论如何,下面我们将展示如何在您有权访问的情况下执行此操作。

Linux 和 OS X

使用 ssh-copy-id 命令:

ssh-copy-id -i /home/user/.quantumatk/QuantumATK_rsa username@HOST.CLUSTER.EDU

在出现提示时输入您的密码。您的公共秘钥现在应该被添加到集群的 /home/user/.ssh/authorized_keys 文件里。

Windows

您需要登录集群,手动添加秘钥。

打开您电脑上的 PuTTY,输入远程的主机名称并点击 Open。

图 21 用合适的主机名称替代 HOST.CLUSTER.EDU。

  • 将您公共秘钥的内容(扩展名 .pub 的那个)添加到文件 /home/user/.ssh/authorized_keys,然后保存。
  • 退出远程集群,进行下一部分,测试设置。

测试无密码的 SSH 连接

测试无密码的 SSH 连接

我们在这里提供了一个 QuantumATK 脚本,它将尝试建立与远程集群的连接,并报告连接是否成功建立。

  • 下载脚本 ↓ ssh_test.py,在第 7 行到第 9 行编辑连接设置(key_dirhostnameusername)。
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

参考

atk/ssh_keys.txt · 最后更改: 2019/06/30 16:47 由 xie.congwei

© 2014-2022 费米科技(京ICP备14023855号