使用SSH密钥对连接Linux实例

发布于

SSH密钥对介绍

SSH密钥对通过加密算法生成一对密钥,要使用SSH密钥对登录Linux实例,您必须先创建一个密钥对,并在创建实例时指定密钥对或者创建实例后绑定密钥对,然后使用私钥连接实例。

功能优势

相较于用户名和密码认证方式,SSH密钥对有以下优势:

  • 安全性:SSH密钥对登录认证更为安全可靠。
    • 密钥对安全强度远高于常规用户口令,可以杜绝暴力破解威胁。
    • 不可能通过公钥推导出私钥。
  • 便捷性:
    • 如果您将公钥配置在Linux实例中,那么,在本地或者另外一台实例中,您可以使用私钥通过SSH命令或相关工具登录目标实例,而不需要输入密码。
    • 便于远程登录大量Linux实例,方便管理。如果您需要批量维护多台Linux实例,推荐使用这种方式登录

使用限制

使用SSH密钥对有如下限制:

  • 如果使用SSH密钥对登录Linux实例,将会禁用密码登录,以提高安全性。

  • 仅支持Linux系统

生成新 SSH 密钥

  • 打开控制台,粘贴下面的文本(替换为您的 GitHub 电子邮件地址)一路回车就可以了

    root@debian:~# ssh-keygen -t rsa -b 2048 -C "your_email@example.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:dDo66xochbFWEEVQXpADbzEgD1kz0XvqZ/Ir8YcdBYg i@guiyunweb.com
    The key's randomart image is:
    +---[RSA 4096]----+
    |  oo%%O+..       |
    |  .+ XE+. .      |
    |    = =o. ..     |
    |   . o...o  .    |
    |    .  oS  .     |
    |   . .o. ..      |
    |    o.oo o .     |
    |     .+o= o      |
    |    .oo*oo       |
    +----[SHA256]-----+
    

    检测**~/.ssh/(Linux/Mac) 或者是%USERPROFILE%/.ssh**(Win) 下有id_rsaid_rsa.pub文件生成则证明密钥生成成功

安装密钥对

  • 在服务器**~/.ssh下新建authorized_keys文件,并将公钥id_rsa.pub里的文件考入到authorized_keys**里面

    root@debian:~# cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    
  • 确保连接成功,将文件权限正确

    root@debian:~# chmod 600 .ssh/authorized_keys 
    root@debian:~# chmod 700 .ssh
    

这样就可以使用SSH密钥对连接Linux实例了

为了安全,可以将密码登录禁用

  • 编辑/etc/ssh/sshd_config 将**PasswordAuthentication **设置为no

    PasswordAuthentication no
    
  • 重启 SSH 服务让起其效

    root@debian:~# service sshd restart
    

使用SSH连接GitHub

  • 进入https://github.com/settings/keys 这个页面,点击New SSH Key 在Key中将id_rsa.pub文件中的内容拷进去就可以了

  • 在控制台输入root@debian:~# ssh -T git@github.com 测试连接是否成功

    root@debian:~# ssh -T git@github.com
    Hi Guiyunweb! You've successfully authenticated, but GitHub does not provide shell access.
    

评论