### 实现“ssh-copy-id 指定端口”的方法

#### 概述
在Kubernetes(K8S)集群中,我们经常需要在不同的节点之间进行 SSH 免密登录的操作。通常情况下,我们可以使用 `ssh-copy-id` 命令来将本地公钥添加到远程主机的 `authorized_keys` 文件中,从而实现免密登录。但是,有时候我们需要连接到的远程主机并不是默认的 SSH 端口(22),而是其他端口。本文将重点介绍如何通过指定端口的方式使用 `ssh-copy-id` 命令。

#### 实现步骤
下面是整个流程的步骤,以及每一步需要执行的操作:

| 步骤 | 操作 |
| --- | --- |
| 步骤一 | 生成本地的 SSH 密钥对 |
| 步骤二 | 将本地公钥复制到远程主机指定端口的 `authorized_keys` 文件中 |

#### 具体操作步骤

##### 步骤一:生成本地的 SSH 密钥对
首先,在本地机器上生成 SSH 密钥对,如果已经生成过,可以跳过此步骤。

打开终端,执行以下命令:
```bash
ssh-keygen -t rsa
```
这条命令会生成一对 SSH 密钥(公钥和私钥),通常放在 `~/.ssh/` 目录下。生成过程中会提示设置密钥的存储路径和密码,可以根据需求自行设置。

##### 步骤二:将本地公钥复制到远程主机指定端口的 `authorized_keys` 文件中
接下来,需要将本地生成的公钥添加到远程主机的 `authorized_keys` 文件中,以实现 SSH 免密登录。这里需要指定远程主机的端口。

执行以下命令:
```bash
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host -p port
```

- `-i ~/.ssh/id_rsa.pub`:指定要复制的本地公钥文件路径。
- `user@remote_host`:远程主机的用户名和主机名或 IP 地址。
- `-p port`:指定远程主机的 SSH 端口。

例如,如果要将本地公钥文件复制到端口为 `2222` 的远程主机 `myserver.example.com` 上,可以执行以下命令:
```bash
ssh-copy-id -i ~/.ssh/id_rsa.pub user@myserver.example.com -p 2222
```

#### 总结
通过以上步骤,我们成功地将本地公钥添加到了指定端口的远程主机中,实现了 SSH 免密登录的操作。在实际应用中,可以根据实际需求灵活调整端口和主机信息,方便进行远程登录操作。

希望本文能帮助到初学者更好地理解如何使用 `ssh-copy-id` 命令指定端口进行 SSH 免密登录。祝学习顺利!