![在 Ubuntu Server 或自己的计算机上生成 SSH 密钥](https://linux22.com/image/1190054/%E5%9C%A8%20Ubuntu%20Server%20%E6%88%96%E8%87%AA%E5%B7%B1%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E7%94%9F%E6%88%90%20SSH%20%E5%AF%86%E9%92%A5.png)
我在一台空服务器上安装了 Ubuntu Server (22.04),并通过 MobaXterm 在自己的计算机上访问它。对于我想在服务器上安装的一个应用程序,我需要一个 SSH 密钥。由于我对计算机相关的任何事情都很陌生,我想知道我是否需要在 Ubuntu 服务器上生成 SSH 密钥,在我通过 MobaXterm 访问服务器的自己的计算机上生成 SSH 密钥,或者我是否需要在服务器和我的计算机上都生成 SSH 密钥。
编辑:我在服务器上使用的用户(安装 Ubuntu 时设置的默认“ubuntu”用户)与我在自己的计算机上通过 MobaXterm 连接到服务器时使用的用户相同。这会影响生成 SSH 密钥的任何内容吗?还是通常都是这样?
(如能得到任何解释我们将不胜感激!)提前致谢!
答案1
假设本地(您的“客户端”PC)和远程(Ubuntu“服务器”)计算机都运行某个合适版本的 Linux 或 UNIX(或赛格威),标准流程为:
在客户端(本地计算机上的本地用户)运行:
$ ssh-keygen
将在客户端上创建的文件的内容附加到远程服务器上的远程用户的~/.ssh/id_rsa.pub
文件末尾。~/.ssh/authorized_keys
如果不存在,则创建远程文件夹~/.ssh
和文件。在远程服务器上对远程用户运行以下命令:
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
上述过程将创建从本地用户和计算机到远程用户和计算机的无密码访问ssh
。应为每个本地用户和计算机到远程用户和计算机组合重复此操作。scp
sftp
请注意,本地用户的 ID 和名称与远程用户的 ID 和名称无关。它们可以是任何内容,但命令ssh
默认为相同用户名如果仅指定了远程计算机(例如ssh remote_computer
),则在远程计算机上。如果它们不同,则远程用户名也应该在命令行中指定(例如ssh remote_user@remote_computer
)。
ssh-keygen
本地计算机上本地用户主目录中创建的文件如下:
文件位置和名称 | 权限 | 用法 |
---|---|---|
~/.ssh/id_rsa |
0600/-rw------- |
包含您的私钥。除您的用户外,任何人都无权访问此文件。 |
~/.ssh/id_rsa.pub |
0644/-rw-r--r-- |
包含您的公钥。可以自由地附加到~/.ssh/authorized_keys 本地用户需要访问的其他计算机上的文件中。 |
远程用户处的文件应该是这样的:
文件位置和名称 | 权限 | 用法 |
---|---|---|
~/.ssh/authorized_keys |
0600/-rw------- |
包含允许客户端从其他计算机连接到该用户的所有公钥。 |
有关详细信息,请参阅man ssh
和man sshd
。