项目场景:
自动化同步,需要SSH到服务器, 进行rsync操作
问题描述:
提示权限有问题,导致进程停止并报错,原因就是中间需要手动输入密码,
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
解决方案:
生成密钥对:
通过运行 ssh-keygen 命令可以生成密钥对,默认为3072位的 RSA(以及 SHA256),ssh-keygen(1) 手册页称其“一般被认为充足”且应当兼容于几乎所有客户端和服务器:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/<username>/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/<username>/.ssh/id_rsa.
Your public key has been saved in /home/<username>/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gGJtSsV8BM+7w018d39Ji57F8iO6c0N2GZq3/RY2NhI username@hostname
The key's randomart image is:
+---[RSA 3072]----+
| ooo. |
| oo+. |
| + +.+ |
| o + + E . |
| . . S . . =.o|
| . + . . B+@o|
| + . oo*=O|
| . ..+=o+|
| o=ooo+|
+----[SHA256]-----+
将生成的id粘贴到想要访问的服务器上
ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname
#参考文献
archlinux wiki