我希望能够使用 ssh 密钥通过 ssh 登录我的 Web 服务器并完全禁用密码验证(以消除来自恶意 IP 地址的暴力破解)。因此,我正在阅读文档:
https://help.ubuntu.com/community/SSH/OpenSSH/Keys
现在它指示执行以下操作:
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa
这是运行 ssh-keygen 的问题。我已经这样做了,以便生成密钥来连接到我的 github 帐户。所以我的 .ssh 目录已经看起来像这样:
~/.ssh$ ls -l
total 16
-rw------- 1 viggy viggy 1766 Sep 5 20:36 id_rsa
-rw-r--r-- 1 viggy viggy 403 Sep 5 20:36 id_rsa.pub
-rw-r--r-- 1 viggy viggy 4422 Dec 22 11:45 known_hosts
再次运行该命令是否会覆盖 id_rsa 文件?有没有更好的方法来存储这两个密钥?
我的最终目标是不覆盖我的 git 密钥,但生成一个 ssh 公钥和私钥,以便我可以将公钥复制到我的 Web 服务器上的 ~/.ssh/authorized_keys。
答案1
传递-f
选项以ssh-keygen
指定不同的密钥文件。我建议将~/.ssh/target.id_rsa
允许您登录的密钥命名为target
,并使用默认名称~/.ssh/id_rsa
(如果有)作为默认密钥。
为了确保 SSH 在你连接时总是尝试正确的密钥(如果找不到正确的密钥,它会提示你输入密码,如果密码被禁用,它会拒绝尝试),添加一个IdentityFile
指令到~/.ssh/config
, 例如:
Host git
HostName git.example.org
User gitter
IdentityFile ~/.ssh/git.example.id_rsa
Host web
HostName mysite.hosting-provider.com
User webmaster
IdentityFile ~/.ssh/hosting-provider.id_rsa
答案2
首先ssh-keygen
会问你如何命名文件。只需将其命名为其他名称即可。例如...id_rsa2