Linux SSH免密登陆

一、生成 SSH 密钥对(在本地机器上)

  1. 打开终端(Linux/macOS)或使用 PowerShell/WSL(Windows)。
  2. 执行以下命令生成密钥对:
1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa:指定密钥类型为 RSA(也可以使用 -t ed25519 更安全)。
  • -b 4096:密钥长度(RSA 推荐 4096 位)。
  • -C:添加注释(通常是邮箱,可选)。
  1. 按提示操作:
    • 保存路径:直接回车使用默认路径 ~/.ssh/id_rsa
    • 设置密码(passphrase):可选,增强安全性。如果希望完全免密,直接回车留空。

生成后会在 ~/.ssh/ 目录下创建两个文件:

  • id_rsa:私钥(不要泄露
  • id_rsa.pub:公钥(用于上传到服务器)

二、将公钥上传到远程服务器

方法一:使用 ssh-copy-id

1
ssh-copy-id username@server_ip

例如:

1
ssh-copy-id user@192.168.1.100

系统会提示你输入远程用户的密码,验证通过后,公钥会被自动追加到服务器的 ~/.ssh/authorized_keys 文件中。

⚠️ 如果提示 command not found,说明 ssh-copy-id 不存在(常见于 macOS 或某些 Linux 发行版),请使用方法二。

方法二:手动复制公钥

  1. 查看本地公钥内容:
1
cat ~/.ssh/id_rsa.pub

复制输出的整段内容(以 ssh-rsa AAAAB3... 开头)。

  1. 登录远程服务器:
1
ssh username@server_ip
  1. 在服务器上创建 .ssh 目录(如果不存在):
1
mkdir -p ~/.ssh
  1. 将公钥内容写入 authorized_keys 文件:
1
echo "你复制的公钥内容" >> ~/.ssh/authorized_keys

注意替换“你复制的公钥内容”为实际内容。

  1. 设置正确的权限(非常重要!SSH 要求严格权限):
1
2
3
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown $USER:$USER ~/.ssh -R

三、配置别名

  • 配置别名:编辑 ~/.ssh/config,简化连接命令:
1
2
3
4
Host myserver
    HostName 192.168.1.100
    User myuser
    IdentityFile ~/.ssh/id_rsa

之后只需运行:

1
ssh myserver
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计