登录

Linux、MacOS使用SSH连接远程服务器

阅读: 0喜欢: 0 发布于: 2025-05-05 15:18:12

1、生成 SSH 密钥对(如果尚未生成)

bash 复制代码
# 生成 RSA 4096 位密钥(推荐)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# 生成 ED25519 密钥(更安全)
ssh-keygen -t ed25519 -C "your_email@example.com"

按提示输入密钥保存路径(默认:~/.ssh/id_rsa 或 ~/.ssh/id_ed25519)

建议设置密钥密码(passphrase)增强安全性

2. 配置私钥权限

bash 复制代码
chmod 600 ~/.ssh/id_rsa      # 密钥文件权限
chmod 644 ~/.ssh/id_rsa.pub  # 公钥文件权限
chmod 700 ~/.ssh             # .ssh 目录权限

3. 将公钥上传到服务器

bash 复制代码
# 方法一:使用 ssh-copy-id(推荐)
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip

# 方法二:手动追加公钥
cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

4. 配置 SSH 客户端(可选但推荐)

创建/编辑 ~/.ssh/config 文件:

bash 复制代码
Host myserver                 # 自定义服务器别名
  HostName server_ip          # 服务器 IP 或域名
  Port 22                     # SSH 端口(默认 22)
  User username               # 登录用户名
  IdentityFile ~/.ssh/id_rsa  # 指定私钥路径
  IdentitiesOnly yes          # 强制使用指定密钥
  1. 连接服务器
bash 复制代码
# 使用配置文件中的别名
ssh myserver

# 或直接指定密钥
ssh -i ~/.ssh/id_rsa user@server_ip

6. 高级配置技巧

使用 SSH 代理管理密钥密码

bash 复制代码
# 启动 ssh-agent
eval "$(ssh-agent -s)"

# 添加私钥到代理(需输入密钥密码)
ssh-add ~/.ssh/id_rsa

# 查看已加载密钥
ssh-add -L

多密钥管理

bash 复制代码
# ~/.ssh/config 示例
Host github.com
  IdentityFile ~/.ssh/github_key

Host work-server
  HostName 192.168.1.100
  IdentityFile ~/.ssh/work_key

调试连接问题

bash 复制代码
ssh -vT user@server_ip       # 显示详细日志
ssh -vvvT user@server_ip     # 最高级别调试信息

常见问题解决

问题现象 解决方案
Permissions 0644 for 'id_rsa' are too open 执行 chmod 600 ~/.ssh/id_rsa
No such file or directory 确认密钥路径和文件名正确
Permission denied (publickey) 检查服务器 /var/log/auth.log 日志
密钥密码遗忘 需要重新生成密钥对并部署公钥

安全最佳实践
1、禁止 Root 直接登录(修改 /etc/ssh/sshd_config):

ini 复制代码
PermitRootLogin no
PasswordAuthentication no

2、定期轮换密钥(建议每 6-12 个月)

3、使用硬件安全密钥(如 YubiKey)进行二次验证

4、监控服务器授权密钥文件:

bash 复制代码
# 查看最近登录记录
last
# 查看认证日志
sudo tail -f /var/log/auth.log