使用 ssh 密钥进行连接但不带 -i 选项

使用 ssh 密钥进行连接但不带 -i 选项

我正在使用多个主机,并且我不想每次想要连接到任何主机时都指定密码。然后我使用以下命令生成了一个密钥:

Enter file in which to save the key (/home/robe/.ssh/id_rsa): my_key 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in my_key.
Your public key has been saved in my_key.pub.
The key fingerprint is:
e6:d9:a3:85:38:b1:b2:a9:4d:3b:c1:33:65:df:57:25 robe@computer
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|              E .|
|               o |
|      o       .  |
|   . o..S.   .   |
|    =  *.+. .    |
|    o++ + +.     |
|   o.= . o .     |
|  ..=.  .        |
+-----------------+

然后我复制我的密钥.pub授权密钥每个主机中的文件,我可以连接:

ssh -i /path/to/my_key  user@host

但是我的问题在于,我想在不指定密钥的情况下进行连接。我想找到一种运行方式:

ssh user@host

笔记:我想保留我的默认 id_rsa 和 id_rsa.pub 密钥。my_key 密钥是管理其他主机的替代选项。

答案1

您正在寻找~/.ssh/config配置文件。例如,在此文件中添加此条目。

Host host
    HostName host.example.com
    User johndoe
    IdentityFile ~/.ssh/host.key

现在您可以输入

ssh host

并且 ssh 将自动使用您通过参数指定的用户名和密钥IdentityFile。因此该命令相当于:

ssh [email protected] -i ~/.ssh/host.key

http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man5/ssh_config.5该文件的所有配置详细信息。

答案2

如果您在 *nix 中,您可以使用 ssh-agent/ssh-add 将您的身份存储在内存中以供会话使用。

  1. 从终端运行 ssh-agent

用户@机器$ ssh-agent bash

这将创建一个运行 ssh-agent 的 bash 进程

如果你不想创建另一个进程,那么

用户@机器$ ssh-agent -s

SSH_AUTH_SOCK=/tmp/ssh-shtzxe4347/agent.4347;导出 SSH_AUTH_SOCK;SSH_AGENT_PID=4348;导出 SSH_AGENT_PID; echo 代理 pid 4348;

您必须执行粗体命令来更新您的环境变量。

2. 完成上述任何步骤后

用户@机器$ ssh-add

将您的 .ssh/id_rsa 添加到代理,如果您的密钥有密码,它会提示您输入密码

http://linux.die.net/man/1/ssh-agent http://linux.die.net/man/1/ssh-add


现代 Linux 桌面具有用于此功能的 GUI,并将自登录起启动代理。

在 Windows 中,您可以使用 Pageant(Putty 的一部分)代替 ssh-agent。

相关内容