1. 背景
为了服务器的安全着想,设置的服务器密钥非常长。但是这导致每次连接服务器都需要输入一长串的密码,把人折腾的很痛苦,所以我就在想,能不能在终端SSH的时候无需输入密码。
windows 可以使用 xshell 软件,会自动登录;
Mac 还是喜欢用终端,于是就得设置免密登录;
在使用 SSH 连接到远程服务器时,可以通过设置 SSH 密钥对,免去每次输入密码的步骤。以下是设置 SSH 无密码登录的步骤:
2. 生成 SSH 密钥对:
打开终端并输入以下命令生成 SSH 密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
如果遇到需要挑选密钥保存文件夹,直接回车使用默认路径就行。
这将生成一个 4096 位的 RSA 密钥对。按照提示选择保存路径和输入密码短语(可选)。默认情况下,密钥将保存在 ~/.ssh/id_rsa
和 ~/.ssh/id_rsa.pub
。
如果大家是第一次使用 SSH 执行上述命令,就会生成公钥和私钥文件。可以跳过 是否覆盖 章节。
是否覆盖
如果此前已经和我一样已经有过密钥文件,我选择 n
,不覆盖。此时就会退出密钥生成。
因为一个在密码学的公私钥中,一个公钥可以对应很多私钥;所以我的很多SSH都是使用的同一个公钥;
3. 将公钥复制到远程服务器
使用以下命令将生成的公钥复制到远程服务器:
ssh-copy-id username@remote_host
替换 username
和 remote_host
为远程服务器的用户名和 IP 地址或主机名。系统会提示输入远程服务器的密码。
连接到远程服务器:
ssh username@remote_host
这样,就可以实现 SSH 无密码登录到远程服务器了。