使用非默认身份文件位置的无密码 SSH

使用非默认身份文件位置的无密码 SSH

作为启动脚本的一部分,我必须自动打开几个 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。

答案1

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.

或者,您可能希望~/.ssh/config为主机创建一个文件条目,如下所示

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key

答案2

失败的另一个原因ssh-copy-id是密钥尚未添加到 SSH 代理。

首先,检查是否ssh-agent正在运行并启动:

eval "$(ssh-agent -s)"

如果你获得了进程 ID,你可以添加你的密钥:

ssh-add -k /home/user/ssh/keys/server1key

-k钥匙添加到钥匙链中。

检查是否添加了键:

ssh-add -l

ssh-copy-id现在应该可以工作了。

答案3

希望这对您有用......“sshpass -p yourpassword”它将自动登录到远程主机。

[root@localhost .ssh]# sshpass -p 密码123 ssh -l root 本地主机

答案4

只需执行2个命令:

ssh-keygen
ssh-copy-id

长答案:

user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
|  ...            |
| ...             |
| ..              |
| ..+.    o .     |
|                 |
|    B            |
|                 |
|=      *         |
|=+   o .         |
+----[SHA256]-----+

进而:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest

相关内容