步骤一.本地生成密钥对
1.检查是否已有密钥
默认密钥路径为 ~/.ssh/,检查是否存在 id_rsa(私钥)和 id_rsa.pub(公钥):
cd ~/.ssh
ls -l
若已存在且想复用,可跳过生成步骤;若想重新生成,先删除旧密钥:rm ~/.ssh/id_rsa*,或者重新生成不同名字的秘钥。
2. 生成密钥对
执行以下命令,按提示操作(推荐一路回车,不设置密码短语,否则仍需输入短语):
ssh-keygen -t rsa -b 4096 # -t 指定算法(rsa),-b 指定密钥长度(4096位,更安全)
输出示例:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/yourname/.ssh/id_rsa): # 回车默认路径,可以输入自定义名称
Enter passphrase (empty for no passphrase): # 回车(不设置密码)
Enter same passphrase again: # 再次回车
Your identification has been saved in /home/yourname/.ssh/id_rsa
Your public key has been saved in /home/yourname/.ssh/id_rsa.pub
生成后,~/.ssh/ 目录下会新增两个文件:
- id_rsa:私钥(绝对不能泄露给他人)
- id_rsa.pub:公钥(可公开,用于上传到服务器)
步骤二:上传公钥到目标服务器
将本地公钥 id_rsa.pub 内容添加到服务器的 ~/.ssh/authorized_keys 文件中(该文件存储所有允许免登的公钥)。
方法 1:自动上传(推荐,简单快捷)
使用 ssh-copy-id 命令(大多数 Linux 系统自带,windows系统可能有问题):
ssh-copy-id 用户名@服务器IP/域名
- 示例:ssh-copy-id root@192.168.1.100(首次需输入服务器密码)。
该命令会自动:
- 登录服务器并创建 ~/.ssh 目录(若不存在)。
- 将本地 id_rsa.pub 内容追加到服务器的 ~/.ssh/authorized_keys 文件。
方法 2:手动上传(适用于无 ssh-copy-id 的场景)**
-
本地查看公钥内容:
cat ~/.ssh/id_rsa.pub
- 输出类似:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC... 用户名@本地主机名
- 输出类似:
-
登录服务器(需输入密码):
ssh 用户名@服务器IP
-
服务器上创建
.ssh
目录(若不存在)并设置权限:mkdir -p ~/.ssh # -p 确保父目录存在,无则创建 chmod 700 ~/.ssh # 关键:仅所有者可读写执行,否则密钥认证可能失败
-
将本地公钥内容追加到服务器的
~/.ssh/authorized_keys
:vi ~/.ssh/authorized_keys # 用vi编辑文件
在文件末尾粘贴本地公钥内容(右键粘贴或按
i
进入插入模式后粘贴),保存退出(按ESC
,输入:wq
回车)。 -
服务器上设置
authorized_keys
权限:chmod 600 ~/.ssh/authorized_keys # 仅所有者可读写,权限过高会导
步骤三:验证免登
本地执行登录命令,若无需输入密码直接进入服务器,则配置成功:
ssh 用户名@服务器IP
进阶配置(可选)
简化登录命令(别名)
本地编辑 ~/.ssh/config 文件(无则创建):
vi ~/.ssh/config
添加内容:
Host 服务器别名 # 自定义别名,如 myserver
HostName 服务器IP或域名 # 如 192.168.1.100
User 登录用户名 # 如 root
IdentityFile ~/.ssh/id_rsa # 私钥路径(默认可省略)
保存后,直接用别名登录:ssh 服务器别名。