我很难理解下面命令的输出。我正在尝试连接到 godaddy 服务器但未成功。我在 godaddy 的 cpanel 上启用了 SSH 访问,创建了公钥/私钥,下载了私钥,将其移入~/.ssh
并使用ssh-add -K ~/.ssh/mykey
.我无法连接。我知道该网站上还有另一个问题,但我提供实际输出并想知道它失败的原因。
我不知道为什么它不寻找名为的 SSH 密钥key4govi
(这就是我的私钥的名称。它似乎正在查看它们的密钥id_rsa
(假设从输出中)。
以下是本地计算机上 .ssh 文件夹的文件夹内容:
github_rsa
github_rsa.pub
id_rsa
id_rsa.pub
key4govi
key4govi.pub
known_hosts
这是我的命令:
~ => ssh [email protected] -vv
这是输出:
OpenSSH_6.9p1, LibreSSL 2.1.8
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug1: /etc/ssh/ssh_config line 53: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to callydai.com [107.180.55.15] port 22.
debug1: Connection established.
debug1: identity file /Users/raigovind93/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/raigovind93/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/raigovind93/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/raigovind93/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/raigovind93/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/raigovind93/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/raigovind93/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/raigovind93/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
ssh_exchange_identification: read: Connection reset by peer
答案1
ssh_exchange_identification: read: Connection reset by peer
指出不同的错误。这意味着您能够连接到 ssh 服务器,但连接立即关闭,而没有收到正确的“hello”消息。服务器在那里运行吗?没有某种政策可以让您连接吗?您有正确的反向 DNS 记录吗?
您的密钥在钥匙串中正确,一旦您能够连接到正确的密钥,就会提供。触摸的其他键是默认路径,ssh 将始终尝试打开它们。
答案2
答案很晚,但在我看来,虽然您可能已经加载了代理/钥匙串的密钥,SSH 客户端似乎根本没有尝试使用代理。
不同 OpenSSH 版本之间该-K
选项的含义有所不同。ssh-add
您提到“钥匙串”一词的事实表明您可能熟悉 的 MacOS 定制版本ssh-add
,并且该选项似乎对它有意义。
在普通 OpenSSH(版本 8.4)上,该-K
选项现在从 FIDO 身份验证器加载密钥,因此客户端操作系统版本在这里可能很重要。
在这种情况下需要检查的事项是:
基本健全性检查:
SSH_AUTH_SOCK
环境变量是否存在?它是否指向有效的 UNIX 套接字?应显示您的用户帐户拥有的进程fuser $SSH_AUTH_SOCK
的 PID ,该进程是您当前登录会话的一部分。ssh-agent
你说你跑了,
ssh-add -K ~/.ssh/mykey
但实际私钥文件的名称是~/.ssh/key4govi
.我认为这只是写问题时的一个错误,而你实际上跑了ssh-add -K ~/.ssh/key4govi
......对吧?文件是否受到
~/.ssh/key4govi
适当保护?man ssh-add
说(强调我的):
除了用户之外,任何人都不能读取身份文件。注意
ssh-add
如果其他人可以访问身份文件,则忽略这些文件。
如果~/.ssh/key4govi
did 的权限比 更宽松-rw-------
,那么它可能会被忽略,因此您的ssh-add
命令可能根本没有执行任何操作。
- 您是否有一些自定义配置,
~/.ssh/config
除非明确允许,否则会停止使用 SSH 代理/钥匙串?
答案3
我在文件中指定密钥.ssh/config
。配置文件是你的朋友。
Host some-name
# The actual host name or IP address of the server
HostName xxx.xxx.xxx.xx
User username
IdentityFile ~/.ssh/some-key-edcsa
然后,当您键入时,ssh some-name
它将尝试使用与该名称关联的键。
答案4
也许你可以尝试这个命令
ssh-copy-id -i identity-file(ex.id_rsa.pub) user@server
系统会要求您输入帐户的密码,这意味着PasswordAuthentication yes
必须设置。
该命令在 .ssh/authorized_keys 中创建所需的条目。所以之后你应该能够通过以下方式连接到服务器ssh -i identity-file user@server