我正在使用多个主机,并且我不想每次想要连接到任何主机时都指定密码。然后我使用以下命令生成了一个密钥:
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 将您的身份存储在内存中以供会话使用。
- 从终端运行 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。