我需要ssh进入一个Linux的盒子。 服务器pipe理员给了我一个公共和私人的SSH密钥。 当我试图用私钥loginlogin超时(“操作超时”)。
我正在使用这个命令来login:
ssh -v -i /path/to/private_key host
什么是正确的login方式? 我需要公钥来进行身份validation吗?
谢谢你的帮助。
更新:
输出的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
首先,密钥对应该由你生成。 你的私钥是你的,它不属于任何其他人。 您应该生成密钥并将公钥发送给将要安装到服务器的服务器pipe理员。
公钥authentication在这里描述。
另一方面,你input的ssh命令似乎没问题。 什么是错误输出在你身边? 而在服务器端呢?
当您在端口22上远程login该服务器时会发生什么?
telnet host 22
编辑 :在反馈后编辑答案。 看起来,服务器没有端口22打开您的IP作为远程login超时。 可能是closures在防火墙或类似的东西。 与服务器pipe理员交谈,并向他展示这个debugging:)
你的主机有没有阻塞22端口的stream量? 任何防火墙或networking设备,可能会限制stream量,除了某些端口?
服务器pipe理员应该能够告诉你哪个端口(如果不是22)运行着ssh,并且可能应该告诉你在连接时需要做什么来连接。 坏的系统pipe理员。
生成你自己的公钥/私钥对将是一个好主意,如果你想发送系统pipe理员你的新公钥,你可以这样做:
ssh-keygen -b 2048 -t rsa
那会提示你什么叫密钥, ~/.ssh/id_rsa应该没事的。 你会发送~/.ssh/id_rsa.pub到服务器pipe理员,这样他就可以“安装”你的公钥。
另外,如果服务器上的用户名与本地用户名不同,则可能需要使用以下方式login:
ssh -i /path/to/privatekey user@host
其中user是服务器上的用户名, -i /path/to/privatekey指定要使用的私钥,如果它不是“默认”私钥文件名之一( ~/.ssh/id_rsa是缺省名称/path,SSH将知道在哪里寻找)