hii*_*ran 18 server ssh command-line password
作为启动脚本的一部分,我必须自动打开几个 gnome-terminal 窗口,其中一个终端会自动发送:
ssh user@192.168.1.3
Run Code Online (Sandbox Code Playgroud)
这样做的限制是我仍然需要输入密码才能完成 SSH 连接。
我想要做的是让我的脚本启动命令并完成连接。在这种情况下,我试图按照此处接受的答案中概述的说明进行操作。
从我希望连接的系统中,我运行:
ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key
Run Code Online (Sandbox Code Playgroud)
然后它提示我输入密码。我把它留空了,因为我不确定它的用途,所以我假设设置一个需要在每次使用时使用所述密码解锁它。
继续上面链接的说明,然后我运行并收到以下信息:
ssh-copy-id user@IP
ERROR: No identities found
Run Code Online (Sandbox Code Playgroud)
快速搜索显示我需要指定密钥的位置,因为它不在默认保存位置,所以我修复了:
ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3
Run Code Online (Sandbox Code Playgroud)
在询问服务器的密码后,它成功添加了密钥。但是,在尝试使用“ssh user@IP”登录时,仍然提示我输入密码。
据我所知,我正确地遵循了链接的说明,所以要么我遗漏了什么,要么现有的配置阻止我让它工作?
两个系统都使用 18.04 和 openssh。
ste*_*ver 35
它失败的原因ssh-copy-id
与第一次失败的原因相同- 即因为您为身份文件选择了非默认位置。
您可以通过添加-i /home/user/ssh/keys/server1key
到您的ssh
命令以相同的方式解决它- 请注意,客户端需要私钥文件的位置。
从 man ssh
-i identity_file
Selects a file from which the identity (private key) for public
key authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.
Run Code Online (Sandbox Code Playgroud)
或者,您可能希望按照~/.ssh/config
以下方式为主机创建一个文件条目
Host somename
Hostname 192.168.1.3
User user
IdentityFile /home/user/ssh/keys/server1key
Run Code Online (Sandbox Code Playgroud)