如何:在 OS X 上进行 SSH 私钥认证

如何:在 OS X 上进行 SSH 私钥认证

我需要通过 ssh 连接到 Linux 机器。服务器管理员给了我一个公钥和一个私钥。当我尝试使用私钥登录时,登录超时(“操作超时”)。

我正在使用此命令登录:

ssh -v -i /path/to/private_key host

什么是正确的登录方式?我需要公钥进行身份验证吗?

谢谢你的帮助。

更新:

ssh 命令的输出:

OpenSSH_5.2p1, OpenSSL 0.9.8l 5 Nov 2009
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to <domain> [<ip address>] port 22.

如果我使用 telnet 连接,它会显示:

Trying <ip address>...
telnet: connect to address <ip address>: Operation timed out
telnet: Unable to connect to remote host

答案1

首先,密钥对应该由您生成。您的私钥是您的,不属于任何其他人。您应该生成密钥并将公钥提供给服务器管理员,以便将其安装在服务器上。

公钥认证描述于这里

另一方面,您输入的 ssh 命令似乎没问题。您这边的错误输出是什么?服务器端呢?

当您通过端口 22 远程登录该服务器时会发生什么?

telnet host 22

编辑:收到反馈后修改了答案。看来服务器没有打开 22 端口到你的 IP,因为 telnet 超时了。可能是防火墙关闭了或者类似原因。联系服务器管理员并给他看这个调试 :)

答案2

您是否使用任何东西来阻止主机 22 端口上的流量?是否有任何防火墙或网络设备可能会限制除特定端口之外的流量?

服务器管理员应该能够告诉您 ssh 正在哪个端口(如果不是 22)上运行,并且在为您设置时可能应该告诉您需要做什么才能连接。糟糕的系统管理员。

生成您自己的公钥/私钥对是一个好主意,如果您想向系统管理员发送您的新公钥,您可以执行以下操作:

ssh-keygen -b 2048 -t rsa

它会提示您如何称呼该密钥,~/.ssh/id_rsa应该没问题。然后您需要将其发送~/.ssh/id_rsa.pub给服务器管理员,以便他可以“安装”您的公钥。

此外,如果服务器上的用户名与本地用户名不同,您可能需要使用以下命令登录:

ssh -i /path/to/privatekey user@host

user服务器上的用户名在哪里,并-i /path/to/privatekey指定要使用的私钥,如果它不是“默认”私钥文件名之一(~/.ssh/id_rsa是默认名称/路径,ssh 将知道在哪里查找它)

相关内容