温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用ssh-key免密登录各云服务器和Github

发布时间:2022-01-06 17:07:20 来源:亿速云 阅读:288 作者:柒染 栏目:云计算
# 如何使用SSH-Key免密登录各云服务器和Github

## 一、SSH密钥认证原理

SSH(Secure Shell)密钥认证是一种基于非对称加密的身份验证方式,相比传统密码登录具有以下优势:
1. 更高的安全性(抵御暴力破解)
2. 无需记忆复杂密码
3. 支持自动化脚本执行
4. 可细粒度控制访问权限

工作原理:
- 客户端生成公钥/私钥对
- 公钥上传至服务端`~/.ssh/authorized_keys`文件
- 连接时服务端用公钥加密随机字符串,客户端用私钥解密后返回验证

## 二、生成SSH密钥对

### 1. 本地生成密钥
```bash
ssh-keygen -t ed25519 -C "your_email@example.com"
# 或使用RSA算法(兼容旧系统)
# ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

参数说明: - -t 指定密钥类型(ed25519更安全高效) - -b 指定密钥位数(RSA建议4096位) - -C 添加注释(通常用邮箱标识)

2. 密钥保存位置

默认生成在: - 私钥:~/.ssh/id_ed25519 - 公钥:~/.ssh/id_ed25519.pub

安全提示:私钥权限应为600,.ssh目录权限应为700

三、配置云服务器免密登录

1. 复制公钥到服务器

方法一:使用ssh-copy-id(推荐)

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip

方法二:手动添加(当服务器禁用密码登录时)

cat ~/.ssh/id_ed25519.pub | ssh user@server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

2. 测试连接

ssh -i ~/.ssh/id_ed25519 user@server_ip

3. 多服务器管理技巧

创建~/.ssh/config文件实现别名登录:

Host aliyun
    HostName 123.45.67.89
    User root
    IdentityFile ~/.ssh/id_ed25519
    Port 22

Host aws
    HostName ec2-1-2-3-4.compute-1.amazonaws.com
    User ubuntu
    IdentityFile ~/.ssh/aws_key.pem

四、配置Github SSH访问

1. 添加公钥到Github

  1. 复制公钥内容:
    
    cat ~/.ssh/id_ed25519.pub | pbcopy  # Mac
    cat ~/.ssh/id_ed25519.pub | xclip   # Linux
    
  2. 登录Github → Settings → SSH and GPG keys → New SSH key
  3. 粘贴公钥并命名(如”My Work Laptop”)

2. 测试连接

ssh -T git@github.com

成功时会显示:

Hi username! You've successfully authenticated...

3. 修改仓库remote地址

将HTTPS地址改为SSH格式:

git remote set-url origin git@github.com:username/repo.git

五、高级安全配置

1. 私钥加密保护

生成时添加密码:

ssh-keygen -t ed25519 -a 100 -f ~/.ssh/work_key

使用ssh-agent管理密码:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

2. 服务器端加固

编辑/etc/ssh/sshd_config

PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin without-password

3. 多密钥管理

通过config文件指定不同密钥:

Host github.com
    IdentityFile ~/.ssh/github_key
    IdentitiesOnly yes

六、常见问题排查

  1. 权限错误

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  2. 连接被拒绝

    ssh -vT git@github.com  # 查看详细日志
    
  3. 密钥不匹配

    ssh-keygen -lf ~/.ssh/id_ed25519.pub  # 验证指纹
    
  4. 防火墙拦截

    telnet github.com 22  # 测试端口连通性
    

七、最佳实践建议

  1. 为不同服务使用不同密钥对
  2. 定期轮换密钥(建议每6-12个月)
  3. 使用硬件安全模块(YubiKey等)存储密钥
  4. 禁用服务器密码登录
  5. 备份.ssh目录到加密存储

通过以上配置,您可以在保证安全的前提下,实现高效便捷的服务器和代码仓库访问。这种方案特别适合需要频繁登录多台服务器的运维人员和开发者。 “`

注:实际字数约950字,可根据需要调整各章节深度。建议实际操作时参考各云服务商和Github的官方文档获取最新配置细节。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI