zoukankan      html  css  js  c++  java
  • ssh之秘钥登陆

    前提:

      1. 秘钥的生成需要OpenSSL的支持, 需要自行进行安装

    . 新建用户

      在root登陆状态中执行命令:

    useradd -m ssh-user  # centos
    adduser ssh-user # ubuntu passwd ssh
    -user // 设置ssh-user密码

      切换到ssh-user 用户:

    su ssh-user  

      追加用户组:

    sudo usermod -a -G sudo xxx 
    # 将xxx用户加入到sudo组中,具有超级管理员权限

    . 创建.ssh目录并生成秘钥对

      创建.ssh目录:

    mkdir /home/ssh-user/.ssh

      生成秘钥对:

    ssh-keygen -t rsa -b 4096

    参数说明:

    usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
    
                      [-N new_passphrase] [-C comment] [-f output_keyfile]
    
           ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
    
           ssh-keygen -i [-m key_format] [-f input_keyfile] 读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥
    
           ssh-keygen -e [-m key_format] [-f input_keyfile] 读取openssh的私钥或者公钥文件
    
           ssh-keygen -y [-f input_keyfile]
    
           ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
              -C 添加注释 ssh
    -keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile] 显示公钥文件的指纹数据 ssh-keygen -B [-f input_keyfile] ssh-keygen -D pkcs11 ssh-keygen -F hostname [-f known_hosts_file] [-l] ssh-keygen -H [-f known_hosts_file] ssh-keygen -R hostname [-f known_hosts_file] ssh-keygen -r hostname [-f input_keyfile] [-g] ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point] ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines] [-j start_line] [-K checkpt] [-W generator] ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals] [-O option] [-V validity_interval] [-z serial_number] file ... ssh-keygen -L [-f input_keyfile] ssh-keygen -A ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number] file ... ssh-keygen -Q -f krl_file file ...

      生成成功之后 ,会在该目录下有两个文件: id_rsa(私钥), id_rsa.pub(公钥)

      目录下新建文件authorized_keys:

    touch authorized_keys

      将公钥追加到authorized.key文件中:

    cat id_rsa.pub >> authorized_keys

      设置目录权限:

    chmod 700 /home/ssh-user/.ssh

      设置文件权限:

    chmod 600 /home/ssh-user/.ssh/authorized_keys

      将私钥下发到本地或需要进行登陆的远端服务器上:

        可以使用FTP链接下载或者scp等命令传输过去即可.

    scp -P 8932 -i user1/.ssh/id_rsa  user2/.ssh/authorized_keys user1@172.160.114.147:/home/user2

    . 远程登录(秘钥对)

      远程登录命令:

    ssh  -i ./id_rsa  ssh-user@47.99.180.120  

    参数说明:

    usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
    
               [-D [bind_address:]port] [-E log_file] [-e escape_char]
    
               [-F configfile] [-I pkcs11] [-i identity_file]
    
               [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
    
               [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
    
               [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
    
               [user@]hostname [command]

    . 禁止密码登陆

      编辑文件/etc/ssh/sshd_config

     AuthorizedKeysFile   .ssh/authorized_keys   //公钥公钥认证文件
    
     PubkeyAuthentication yes   //可以使用公钥登录
    
     PasswordAuthentication no  //不允许使用密码登录

     五. 重启sshd服务

      1) centos

    service sshd restart

    systemctl restart sshd.service

       2)ubuntu

    # 启动
    /etc/init.d/ssh start
    
    # 重启
    /etc/init.d/ssh restart

    其他:

      l 使用配置登录别名,进行登陆(在需要进行登陆的服务器上)

    vim  ~/.ssh/config
    
     
    
    Host            ssh-user             # 别名
    
    HostName        aslong.xin         # 域名或ip
    
    Port            22                 # 端口
    
    User            dev                # 登录名
    
    IdentityFile    ~/.ssh/id_rsa      # 本机私钥存放位置

     命令:

    ssh  ssh-user 

      2. 使用ssh-copy-id实现免密登陆

        1) 在本地机器上使用ssh-keygen产生公钥私钥对

    ssh-keygen -t 加密方式 

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

    $  ssh-copy-id -i .ssh/id_rsa.pub  用户名字@192.168.x.xxx
    
    注意: ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_keys 文件中

        3)登录到远程机器不用输入密码

    $  ssh 用户名字@192.168.x.xxx

        

     常见问题

      1. Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open

      使用终端进行连接的时候,报错,这是由于权限过大,需要限制其私钥的访问权限

    chmod 600 id_rsa
  • 相关阅读:
    软件工程作业03
    PSP0级要求02
    PSP0级要求日志
    软件工程个人作业02
    第三周学习进度
    第二周学习进度
    软件工程个人作业01
    Web网页登录设计
    第一周学习进度
    第三周学习进度条+PSP0过程文档
  • 原文地址:https://www.cnblogs.com/xingxia/p/ssh_pem.html
Copyright © 2011-2022 走看看