首先使用 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_hosts
0 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 no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
但是很多时候按照上述配置后,执行 ssh localhost
每次还是需要输入密码(尽管我以前这么配置都是可以的),还需要完成以下步骤:
$ sudo service ssh restart
$ ssh-agent zsh # zsh 可以改为 bash
$ ssh-add ~/.ssh/id_git
Identity added: /home/yumingmin/.ssh/id_git (/home/yumingmin/.ssh/id_git)
$ ssh localhost
再次执行 ssh localhost
之后,就不再需要密码了。