A Chronicle of Readings and Actions

VPS常用SSH使用和管理方式

操作1: 如何使用 SSH Key 文件访问远程服务器VPS?

在Ubuntu 22.04中,添加SSH密钥以便访问通常涉及以下步骤:

  1. 生成SSH密钥对(如果还没有的话):

    • 打开一个终端窗口。
    • 输入 ssh-keygen 并按 Enter。
    • 按照指示完成,包括设置一个密码(可选),这会生成两个文件:私钥(默认为 ~/.ssh/id_rsa)和公钥(默认为 ~/.ssh/id_rsa.pub)。
  2. 将公钥添加到远程服务器

    • 使用 ssh-copy-id 命令将公钥添加到您希望无密码访问的远程服务器。命令格式如下:ssh-copy-id 用户名@服务器地址。例如:ssh-copy-id user@example.com
    • 按提示输入远程服务器的密码。
  3. 验证SSH密钥登录

    • 试着通过SSH登录到远程服务器,例如:ssh 用户名@服务器地址
    • 如果您为SSH密钥设置了密码,此时系统可能会要求您输入它。
  4. 配置文件(可选步骤):

    • 如果您希望为特定的连接自定义SSH的行为,可以编辑 ~/.ssh/config 文件来添加特定的服务器配置。

操作2: 如果需要使用其他名称命名 SSH-Key 的文件名,操作如下:

在 macOS 中生成一对新的 SSH 密钥非常简单,而且可以为新的密钥对指定任何你喜欢的名称。默认情况下,SSH 密钥对通常被命名为 id_rsa(私钥)和 id_rsa.pub(公钥),但你可以使用不同的文件名。以下是生成新密钥对的步骤:

  1. 打开终端:首先,在你的 Macbook 上打开终端(Terminal)应用。

  2. 运行 ssh-keygen 命令:使用 ssh-keygen 命令来生成新的密钥对。你可以指定一个文件名来替代默认的 id_rsa。例如,如果你想创建一个名为 my_new_ssh_key 的密钥对,你可以运行以下命令:

   ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_new_ssh_key

这里 -t rsa 指定了密钥类型为 RSA,-b 4096 指定了密钥长度为 4096 位(更安全),而 -f ~/.ssh/my_new_ssh_key 指定了密钥的保存位置和文件名。

  1. 设置密码(可选):系统会提示你输入一个密码(passphrase),这是可选的。密码可以增加密钥的安全性,但如果你选择不设置密码,你可以直接按回车键跳过这一步。

  2. 检查生成的密钥:运行完成后,你的新密钥对将保存在 ~/.ssh 目录下。你可以使用 ls ~/.ssh 命令查看。

  3. 使用新的密钥:你现在可以使用这个新的密钥对来进行 SSH 连接。记得把公钥(my_new_ssh_key.pub)添加到你需要连接的服务器的 ~/.ssh/authorized_keys 文件中。

确保在需要的时候指定正确的密钥文件,例如在使用 ssh 命令连接服务器时,可以使用 -i 选项指定私钥文件:

ssh -i ~/.ssh/my_new_ssh_key username@hostname

操作3: 如果生成SSH 密钥的时候设置了密码,在连接SSH的时候需要输入这个密码吗?

是的,如果你在生成 SSH 密钥的时候设置了密码(也称为 passphrase),那么在每次使用这个密钥进行 SSH 连接时,系统都会要求你输入这个密码。

当你执行 SSH 命令连接到服务器时,系统会提示你输入密码来解锁私钥。这个密码不是你的用户帐户密码,而是你在生成密钥时设置的那个密码。这一步骤增加了一个额外的安全层,因为即使有人获取了你的私钥文件,没有密码他们也无法使用它。

如果你觉得每次都输入密码太麻烦,你可以使用 SSH 代理来避免重复输入。SSH 代理可以在你的会话期间安全地存储解锁的私钥,这样你只需要在会话开始时输入一次密码。在 macOS 上,ssh-agent 通常会自动启动并管理你的密钥。要将密钥添加到 ssh-agent 并在系统重启后自动加载,你可以执行以下命令:

  1. 启动 ssh-agent(如果尚未运行):
   eval "$(ssh-agent -s)"
  1. 将 SSH 私钥添加到 ssh-agent
   ssh-add -K ~/.ssh/my_new_ssh_key

这样,只要 ssh-agent 运行且包含你的私钥,你就不需要每次连接时都输入密码。

操作4: 如果生成了非默认名称的 SSH Key 文件,那么如何将公钥 Pub Key 文件推送至服务器?

如果您已经有了一个名为 my_new_ssh_key 的公钥文件,并且想把它添加到远程服务器上,以便于您可以进行无密码的SSH访问,则您可以按照如下步骤操作:

  1. 首先确保将公钥内容复制到远程服务器的 ~/.ssh/authorized_keys 文件中。如果远程服务器没有这个目录或文件,您需要登录到远程服务器去创建它们。

  2. 将公钥复制到远程服务器可以使用下面的命令,这需要您手动做。您需要替换 usernameremote_host 为您实际的用户名和服务器地址:

   cat ~/.ssh/my_new_ssh_key | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

上述命令执行后,系统可能会要求您输入远程服务器用户的密码。这样做是为了将您的公钥内容追加到 authorized_keys 文件中。

  1. 如果成功,之后您应当能够使用私钥 my_new_ssh_key (与您的公钥相对应的私钥)来进行无密码的SSH登录。

如要使用您的私钥文件进行登录,可以使用如下命令,同样的,确保替换 usernameremote_host

   ssh -i ~/.ssh/my_new_ssh_key username@remote_host

确保私钥 no_pwd_key 的文件权限是正确的,通常应该是仅当前用户可读(也就是说,权限应该是 600),可以使用下述命令来设置权限:

chmod 600 ~/.ssh/my_new_ssh_key