我需要通过 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 将知道在哪里查找它)