SSH(无密码)和非默认身份文件位置


16

作为启动脚本的一部分,我必须自动打开几个gnome终端窗口,其中一个终端会自动发送:

ssh user@192.168.1.3

这样做的限制是我仍然需要输入密码才能完成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 user@192.168.1.3

询问服务器密码后,它成功添加了密钥。但是,尝试使用“ ssh user @ IP”登录时,仍然提示我输入密码。

据我所知,我正确地遵循了链接的说明,所以我丢失了某些东西,或者可能是现有的配置使我无法正常工作?

两种系统都使用18.04和openssh。


因此,在发送SSH命令时,我需要指定.pub文件的位置吗?
hiigaran

我整理文件的方式有些不同,因此是非默认位置,但是你们提供了很大帮助。谢谢。请随意回答我可以接受的答案。
hiigaran

Answers:


35

失败的原因ssh-copy-id与第一次失败相同,即,因为您为身份文件选择了非默认位置。

您可以通过添加-i /home/user/ssh/keys/server1keyssh命令中来解决该问题,请注意-客户端需要私钥文件的位置。

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

1
我一直以为配置文件需要缩进-我看到情况并非如此。令人发指。
鲍里斯蜘蛛

使用OpenSSH的任何人都应该有一个~/.ssh/config,否则OpenSSH使用系统范围的默认值/etc/ssh/ssh_config。万一有人觉得有帮助,我将预构建的ssh_config上载到我的GitHub上作为起点,以供可能没有时间阅读ssh_config手册页的用户使用
JW0914

@ JW0914只有一半是正确的:中的各个值~/.ssh/config将覆盖global的值ssh_config,但是仅拥有文件不会禁用系统范围的配置。
塞巴斯蒂安·史塔克

@SebastianStark也许您误解了我的评论,因为我从未说过它将禁用系统范围的配置。我所说的实际上是100%准确的。
JW0914

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 应该现在工作。


-1

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

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


-1

只需执行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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.