如果使用Linux服务器进行远程编程,每次SSH登录时都要输入密码过于繁琐。我们可以使用SSH Key来实现SSH无密码登录。
1 在本地机器上生成私钥和公钥
打开终端,使用下面的命令生私钥和公钥:
# 生成私钥和公钥(使用rsa加密)
$ ssh-keygen -t rsa
生成秘钥的过程中会要求你指定一个文件来保存密钥,按Enter键使用默认的文件就行了。然后需要输入一个密码来加密你的秘钥。
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zhiming/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/zhiming/.ssh/id_rsa.
Your public key has been saved in /home/zhiming/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IAdRlS4pO0ScCEWvMrl9HmqKee0H4Ir+I7B4/jGqub0 zhiming@linux01
The key's randomart image is:
+---[RSA 2048]----+
|.+ooo+.... |
| ..+. . |
| .o oo |
| ...ooo.. |
|+..o o .S |
|.=. + |
|=o..=o |
|*=+*.+. |
|OXE==. |
+----[SHA256]-----+
生成的秘钥可以在下面的位置看到:
# 私钥文件默认地址
~/.ssh/id_rsa
# 公钥文件默认地址
~/.ssh/id_rsa.pub
2将SSH公钥上传到Linux服务器
使用下面命令来上传:
$ ssh-copy-id username@remote-server
输入远程用户的密码后,公钥就会自动上传了。
# 公钥保存在远程服务器的地址
~/.ssh/authorized_keys
上传完成后,SSH登录就不需要再次输入密码了。
使用scp命令来传送文件时也不需要输入密码。