我在设置两台笔记本电脑之间的 ssh 连接时遇到了麻烦。我尝试了网上发布的不同解决方案,但都不起作用。由于我对 SSH 还很陌生,我可能错过了一些重要的东西。我在客户端上使用 Ubuntu 14.04 LTS,在服务器上使用 Ubuntu 16.04 LTS。
以下是我遵循的步骤:
在客户端上:
~/.ssh/config 中指定的主机配置选项:
主机 [主机名]
User [username] Hostname [IP address of host] ServerAliveInterval 10
通过运行生成 RSA 密钥:
ssh-keygen -t rsa -b 4096 -o -a 100
我向 ssh-keygen 提供了密码。私钥保存在 ~/.ssh/id_rsa 中,而公钥保存在 ~/.ssh/id_rsa.pub 中
我手动将 ~/.ssh/id_rsa.pub 复制到 USB 密钥。
此时文件模式如下:
在 ~/.ssh 中:
-rw-rw-r-- config
-rw------- id_rsa
-rw-r--r-- id_rsa.pub
在服务器上:
安装了 openssh 服务器;
通过执行以下操作创建一个新文件 ~/.ssh/authorized_keys
猫/media/daniele/disk/id_rsa.pub>>~/.ssh/authorized_keys
- 将 ~/.ssh/authorized_keys 的文件模式设置为
-rw-rw-r--
- 手动编辑 /etc/ssh/sshd_config 以使其具有
在 /etc/ssh/sshd_config 中
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PasswordAuthentication yes
最后在客户端上,当我尝试:
ssh [username]@[hostname]
服务器要求输入密码
[username]@[hostname]'s password:
但是,即使我输入正确的,服务器也不会接受它:
Permission denied, please try again
尝试三次后,它会关闭连接。请查找这里通过使用我得到的更具描述性的输出
ssh -v -v -v [username]@[hostname]
任何帮助将不胜感激。
非常感谢您的宝贵时间
答案1
不要使用服务器的主机名,尝试使用 ip 地址。
我在设置服务器时遇到了同样的问题,这似乎解决了问题。
ssh [username]@[host_ip-adres]
如果您想使用主机名,您可能需要设置一个 DNS 服务器。
但您也可以不用它。
答案2
您应该决定是否要通过密钥/ID 或密码进行连接身份验证,然后重点关注该问题以查找问题。我建议使用密钥/ID,因为如果管理得当,这是更安全的方法。
SSH 总是会要求输入密码,即使在无法正常工作的情况下也是如此。为了避免这种情况,请使用-o 'batchmode yes'
(这些引号是必需的)在建立连接的客户端 ssh 命令上。然后,如果无法接受密钥,它将绕过密码提示(这通常用于在需要避免卡在密码提示处的脚本中使用 ssh)。SSH 一次只会尝试 3 个密钥,因此如果有效密钥是第 4 个,则不会尝试,并且连接将中止。如果您确定它是正确的密钥,最好每次连接尝试只尝试一个密钥。然后,您可以在服务器上进行更改时重复连接尝试。从服务器获取日志文件信息会有所帮助。做grep sshd /var/log/auth.log
看看 sshd 试图告诉您什么。
答案3
您可以尝试将您的用户添加到/etc/ssh/sshd_config
:
...
AllowUsers ... <username>
...
答案4
如果您没有将您的私钥(没有.pub 的私钥)加载到 ssh-agent 中,那么您需要在 ssh 连接中指定它。
SSH -i ~/.ssh/id_rsa user@host
看起来它不是要求你输入 ssh 密钥密码,而是要求你输入用户密码,这就是你的密码失败的原因