跳到主要内容

使用SSH私钥文件连接到远程服务器

1. 准备 SSH 私钥文件

确保你已经拥有一个 SSH 私钥文件

2. 设置私钥文件权限

为了安全起见,SSH 私钥文件的权限应设置为仅所有者可读。 这个是一个必要的步骤!!!!!!!

Linux/mac

chmod 600 /path/to/your/private_key.pem

万恶的Windows

在 Windows 上,chmod 命令并不是默认可用的。你可以使用 PowerShell 的 icacls 命令来更改文件权限。以下是如何在 PowerShell 中更改文件权限的步骤:

  1. 打开 PowerShell: 以管理员身份运行 PowerShell。

  2. 更改文件权限: 使用 icacls 命令来限制文件的权限。以下命令将只允许当前用户读取和写入文件:

    icacls "D:\Download\id_ed25519_team28" /inheritance:r
    icacls "D:\Download\id_ed25519_team28" /grant:r "$($env:USERNAME):(R,W)"

    这些命令的解释:

    • /inheritance:r:移除继承的权限。
    • /grant:r "$($env:USERNAME):(R,W)":授予当前用户读取和写入权限。
  3. 验证权限: 你可以使用以下命令来检查文件的权限:

    icacls "D:\Download\id_ed25519_team28"

    这将显示文件的当前权限设置。

3. 使用 SSH 私钥文件连接到远程服务器

使用以下命令连接到远程服务器:

ssh  username@remote_server_ip_or_domain -i /path/to/your/private_key.pem
  • /path/to/your/private_key.pem:SSH 私钥文件的路径。
  • username:远程服务器的用户名。
  • remote_server_ip_or_domain:远程服务器的 IP 地址或域名。

例如,如果你的私钥文件路径是 ~/.ssh/id_rsa,用户名是 user,远程服务器的 IP 地址是 192.168.1.100,则命令如下:

ssh user@192.168.1.100 -i ~/.ssh/id_rsa

4. 验证连接

在执行上述命令后,如果一切正常,你将被连接到远程服务器。如果这是你第一次连接到该服务器,你可能会看到一个类似下面的提示:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入 yes 并按回车键继续。之后,你应该会看到远程服务器的终端提示符,表示你已经成功连接。

常见问题

1. 权限被拒绝(公钥)

如果你看到类似 Permission denied (publickey) 的错误信息,可能是以下原因:

  • 私钥文件路径不正确。
  • 私钥文件权限不正确。
  • 远程服务器未配置正确的公钥。

请检查上述内容并确保配置正确。

2. 主机密钥验证失败

如果你看到 Host key verification failed 错误,可能是因为远程服务器的主机密钥已更改。你可以编辑 ~/.ssh/known_hosts 文件,删除对应的主机条目,然后重新连接。

3. 连接超时

如果你看到 Connection timed out 错误,可能是网络问题或远程服务器未开放 SSH 端口(默认是 22)。请检查网络连接和服务器的防火墙设置。

结论

使用 SSH 私钥文件连接到远程服务器是一种安全、高效的方法。通过上述步骤,你可以轻松配置并使用 SSH 私钥文件进行连接。如果遇到问题,可以参考常见问题部分进行排查。