作为启动脚本的一部分,我必须自动打开几个 gnome-terminal 窗口,其中一个终端会自动发送:
ssh [email protected]
这样做的限制是我仍然需要输入密码才能完成 SSH 连接。
我想要做的是让我的脚本启动命令并完成连接。在这种情况下,我尝试按照此处接受的答案中概述的说明进行操作。
从我希望连接的系统中,我运行:
ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key
然后它提示我输入密码。我把它留空了,因为我不确定它的用途,所以我假设设置一个需要每次我使用它时用所说的密码解锁它。
继续上面链接的说明,然后我运行并收到以下信息:
ssh-copy-id user@IP
ERROR: No identities found
快速搜索显示我需要指定密钥的位置,因为它不在默认保存位置,所以我修复了:
ssh-copy-id -i /home/user/ssh/keys/server1key.pub [email protected]
在询问服务器的密码后,它成功添加了密钥。但是,在尝试使用“ssh user@IP”登录时,仍然提示我输入密码。
据我所知,我正确地遵循了链接的说明,所以要么我遗漏了一些东西,要么现有的配置阻止我让它工作?
两个系统都使用 18.04 和 openssh。
它失败的原因
ssh-copy-id
与第一次失败的原因相同 - 即因为您为身份文件选择了非默认位置。-i /home/user/ssh/keys/server1key
您可以通过添加到您的命令以相同的方式解决它ssh
- 请注意,客户端需要私钥文件的位置。从
man ssh
或者,您可能希望
~/.ssh/config
为主机创建一个文件条目,如下所示失败的另一个原因
ssh-copy-id
是密钥尚未添加到 SSH 代理。首先,检查并启动是否
ssh-agent
正在运行:如果您获得进程 ID,则可以添加您的密钥:
随着
-k
您将钥匙添加到钥匙串中。检查是否添加了密钥:
ssh-copy-id
现在应该可以工作了。希望这对你有用..“sshpass -p yourpassword”它会自动登录到远程主机。
[root@localhost .ssh]# sshpass -p password123 ssh -l root localhost
只需执行 2 个命令:
长答案:
接着: