zoukankan      html  css  js  c++  java
  • SSH 免密登录服务器

    本文详解如何以多种方法实现ssh免密码登陆远程服务器

    阅读须知:

    1.以下方法操作时请不要随意切换目录。
    2.xxx为私钥,xxx.pub是公钥(默认一般文件名为id_rsa和id_rsa.pub,可以在创建的时候自定义文件名)
    3.如果是公司给你的公私钥对,你想免密登录公司服务器,你可以直接放到你的~/.ssh文件中,可跳过创建公私钥的步骤

    方法一 :客户端生成RSA公钥和私钥

    1. 本地创建公私钥

    cd ~/.ssh    # 在你的本地打开shell,进入到~/.ssh目录,然后看一下该目录下的文件
    ls           # 看一下文件,看看有没有已经生成过的公私钥对(xxx和xxx.pub)
    
    分两种情况:
    A.第一种情况你没有生成过公私钥对(生成过这个目录下会有类似xxx和xxx.pub 的文件)或者你生成过,但是你想创建一个新的公私钥对
    ssh-keygen  # 根据交互,输入你想要的名字(默认id_rsa),然后是密码,可以为空,生成公私钥对
    ls          # 这时候当前目录下会多了一对公私钥对
    B.已经有一组公私钥对的可以不生成。
    

    2.将自己的公钥xxx.pub上传到服务器~/.ssh文件中

    # 如果服务器没有.ssh文件,终端登录到服务器,输入以下命令:
    mkdir ~/.ssh
    # 确定服务器有.ssh文件后输入(user是用户名,host是服务器ip,xxx.pub为你的公钥):
    scp ~/.ssh/xxx.pub user@host:~/.ssh/xxx.pub
    例子:scp ~/.ssh/yzy.pub developer@172.18.69.1:~/.ssh/yzy.pub
    

    3.将服务器刚上传的公钥xxx.pub追加到 服务器的~/.ssh/authorized_keys 文件中

     cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    
    

    4.赋予文件权限

    chmod 700 .ssh
    chmod 600 authorized_keys
    

    方法二 :用ssh-copy-id

    1. 本地创建公私钥

    cd ~/.ssh    # 在你的本地打开shell,进入到~/.ssh目录,然后看一下该目录下的文件
    ls           # 看一下文件,看看有没有已经生成过的公私钥对(xxx和xxx.pub)
    
    分两种情况:
    A.第一种情况你没有生成过公私钥对(生成过这个目录下会有类似xxx和xxx.pub 的文件)或者你生成过,但是你想创建一个新的公私钥对
    ssh-keygen  # 根据交互,输入你想要的名字(默认id_rsa),然后是密码,可以为空,生成公私钥对
    ls          # 这时候当前目录下会多了一对公私钥对
    B.已经有一组公私钥对的可以不生成。
    

    2.使 ssh-copy-id 这个脚本工具把共钥复制到服务器上

    # user是用户名,host是服务器地址,还要输入服务器密码
    命令:ssh-copy-id -i xxx.pub user@host
    例子:ssh-copy-id -i yzy.pub -p 50715 developer@56.45.12.89
    
    

    3.windows和ubuntu系统可以免密登陆,mac系统免密登陆服务器还需要执行第三步调用ssh-add

    # xxx为你的私钥文件
    命令:ssh-add -K xxx
    例如ssh-add -K yzy
    
    

    方法三:用expect脚本

    1.在某一目录下创建login.sh脚本(最好是用户目录下,即你一打开终端的位置,方便直接使用)

    touch login.sh
    

    2.修改下面代码用户名和密码后复制到login.sh文件中

    #!/usr/bin/expect -f
    # 设置命令第一个参数为host,也可以在脚本里写死
    set host [lindex $argv 0] 
    # 设置用户名(zzz为你的用户名)
    set user zzz
    # 设置密码(xxx为你的密码)
    set password xxx
    # 设置超时时间
    set timeout 5
    
    spawn ssh $user@$host
    expect "*assword:*"
    send "$password
    "
    interact
    expect eof
    
    

    3.启动脚本登录服务器:sh login.sh

  • 相关阅读:
    Day1:T1 模拟 T2 拓扑排序
    vijos1060 隔板法
    字符串处理:kmp算法
    vijos1004 博弈论
    vijos1009:扩展欧几里得算法
    有关浮点数的精度问题
    C++构造 下一个排列 的函数
    vijos1053 用spfa判断是否存在负环
    SPFA和FLOYD算法如何打印路径
    细节MARK
  • 原文地址:https://www.cnblogs.com/trotl/p/11872537.html
Copyright © 2011-2022 走看看