SSH密钥远程连接
客户端工具为:macOS iTerm2
在 iTerm2 中使用 SSH 密钥连接远程服务器,可以按照以下步骤进行:
确认 SSH 密钥是否存在
首先,检查是否已有 SSH 密钥。默认情况下,SSH 密钥存储在 ~/.ssh/
目录下。
ls -al ~/.ssh
如果没有看到 id_rsa 或 id_ed25519 文件,可以用以下命令生成一个新的 SSH 密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
将SSH公钥添加到远程服务器
将生成的公钥 (~/.ssh/id_rsa.pub
或 ~/.ssh/id_ed25519.pub
) 复制到远程服务器的 ~/.ssh/authorized_keys
文件中:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_host
或者手动将公钥内容添加到 ~/.ssh/authorized_keys
文件中。
配置SSH客户端
可以编辑 ~/.ssh/config
文件,以便在 iTerm2 中快速连接服务器:
nano ~/.ssh/config
添加以下配置(替换示例内容):
Host myserver
HostName remote_host
User username
IdentityFile ~/.ssh/id_rsa
Host: 本地别名,用于快速连接 HostName: 远程服务器的 IP 地址或域名 User: 用户名 IdentityFile: 私钥文件路径 保存并关闭文件。
配置SSH服务器端
确保服务器端要启用SSH认证登录,在 /etc/ssh/sshd_config
文件中,确认以下参数已启用:
PubkeyAuthentication yes
重启SSH服务
如果更改了配置文件,记得重启SSH服务:
sudo systemctl restart sshd
在 iTerm2 中连接
在 iTerm2 中输入以下命令连接到服务器:
ssh myserver
这样,iTerm2 会使用指定的 SSH 密钥自动连接到服务器。如果配置正确,将不再需要输入密码即可连接。
SSH认证流程
在 SSH 密钥认证过程中,私钥和公钥的作用可以用以下步骤来详细说明:
场景(通过密钥SSH远程连接)
- 你在本地生成了 SSH 密钥对,包括 私钥(id_rsa)和 公钥(id_rsa.pub)。
- 公钥通过 ssh-copy-id 复制到了远程服务器,并添加到了
~/.ssh/authorized_keys
文件中。
认证过程
- 密钥生成(在本地机器上):
- 使用 ssh-keygen 命令生成一对密钥:私钥 id_rsa 和公钥 id_rsa.pub。
- 私钥应仅保存在本地并妥善保护,公钥则可以公开发布,因为它只会验证是否与相应的私钥配对。
- 公钥分发(复制到远程服务器):
- 使用 ssh-copy-id 将公钥内容添加到远程服务器的
~/.ssh/authorized_keys
文件中。这个文件记录了哪些公钥有权限访问该服务器。
- 建立连接请求(客户端发起):
- 当你执行 ssh root@server_address 命令连接远程服务器时,SSH 客户端首先会向服务器发出连接请求。
- 服务器发起(验证身份):
- 服务器在
~/.ssh/authorized_keys
文件中找到客户端的公钥,并生成一个随机字符串(“”),用公钥加密后发送给客户端。
- 客户端响应(使用私钥解密):
- 客户端接收服务器的加密,并使用本地的私钥(id_rsa)进行解密。
- 如果私钥成功解密出正确的字符串,客户端就会将解密后的字符串返回给服务器。
- 服务器验证并建立连接:
- 服务器收到客户端返回的解密结果,并验证是否与生成的字符串一致。
- 如果匹配,服务器就确认客户端持有与其公钥配对的私钥,从而证明了客户端的身份,允许连接。
- 连接建立后,你将进入远程服务器的终端会话。
关键点
- 公钥:放在服务器的 authorized_keys 文件中,验证客户端的身份。
- 私钥:存放在客户端,用于解密服务器发送的加密,必须保密。
通过这种“-响应”机制,服务器不需要知道私钥即可安全地确认客户端的身份。