首先使用 ssh-keygen 来生成密钥,将会生成两个文件:id_git 和 id_git.pub
$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_git$ cat ~/.ssh/id_git.pub >> ~/.ssh/authorized_keys$ tree -l.├── authorized_keys├── id_git├── id_git.pub└── known_hosts0 directories, 4 files$ ls -la-rw-------. 1 yumingmin yumingmin 401 7月 15 11:40 authorized_keys-rw-------. 1 yumingmin yumingmin 1675 7月 15 11:29 id_git-rw-r--r--. 1 yumingmin yumingmin 401 7月 15 11:29 id_git.pub-rw-r--r--. 1 yumingmin yumingmin 171 7月 15 11:40 known_hosts$ ssh localhost
:::warning ⚠️ 注意:
-
.ssh文件夹权限必须为 700 -
authorized_keys文件权限必须为 600 :::
修改 /etc/ssh/sshd_config 文件后,重启 SSH 服务:
StrictModes noRSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys
但是很多时候按照上述配置后,执行 ssh localhost 每次还是需要输入密码(尽管我以前这么配置都是可以的),还需要完成以下步骤:
$ sudo service ssh restart$ ssh-agent zsh # zsh 可以改为 bash$ ssh-add ~/.ssh/id_gitIdentity added: /home/yumingmin/.ssh/id_git (/home/yumingmin/.ssh/id_git)$ ssh localhost
再次执行 ssh localhost 之后,就不再需要密码了。
