title: 使用ssh-keygen配置自动登录 date: 2017-12-01T00:00:00+08:00 categories: [shell,linux] tags: [shell,linux]


ssh 是一个专为远程登录会话和其他网络服务提供安全性的协议。ssh-keygen可用来生成ssh公钥认证所需的公钥和私钥文件

# 背景

  1. 使用git clone拉取git仓库代码时, 提示:

    Permission denied (publickey). fatal: Could not read from remote repository.

  2. 登录远程Linux主机,每次都要ssh输入密码,可否自动登录?

# 命令介绍

  • ssh-keygen

    产生公钥与私钥对.

  • ssh-copy-id

    将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home,~/.ssh,和~/.ssh/authorized_keys的权利

# 设置git仓库权限

  1. 查看~/.ssh, 或使用ssh-keygen产生公钥私钥对

    $ ssh-keygen

  2. 添加到git仓库SSH key

    将~/.ssh/id_rsa.pub中的公钥添加到git仓库SSH key。

# 设置ssh自动登录

  1. 查看~/.ssh, 或使用ssh-keygen产生公钥私钥对

    mac$ ssh-keygen

  2. 用ssh-copy-id将公钥复制到远程机器中

    ssh-copy-id -i ~/.ssh/id_rsa.pub [-p xxx]  user@remote-host-ip
    
    1

    注意 ssh-copy-id将key写到远程机器的 ~/.ssh/authorized_key文件中

  3. 在~/.ssh目录下创建文件config,添加远程主机授权

    Host 主机名
        HostName 远程主机IP
        User root
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa
    
    1
    2
    3
    4
    5
  4. 登陆远程主机

    ssh 主机名
    
    1

使用ssh实现自动登录,对于运维远程主机提供很大的便捷。