美文网首页
通过公钥私钥访问机器

通过公钥私钥访问机器

作者: zlcook | 来源:发表于2020-05-27 21:51 被阅读0次

    参考:SSH原理与运用(一):远程登录

    在一台机器上要访问另一台机器,有两种方式:密码、公钥。

    • 通过ssh访问机器A时,如果你知道A机器的账号密码,则可以访问成功,但是你每次访问都必须输入密码,很麻烦,而且无法通过脚本自动化实现。如果不知道账号密码,还想访问呢,那么你可以通过公钥访问,这样好处可以不用每次访问都输入密码。

    • github也可以通过公钥访问的,如果你要往要给你自己的仓库提交代码,不想通过密码,你可以将你机器上的公钥信息在你的gitlab的设置中设置。


      image.png

    场景

    在机器B上登录了zlcook账号,想通过scp命令将当前机器下的anyid.sh脚本传给机器C上/home/liang/anyid目录下,我知道c机器上的liang账号,但是我不想通过密码访问,为此,机器B的zlcook账号通过scp命令访问C的liang账号下目录,则需要配置公钥访问。

    # 通过公钥让下面命令在B机器上的zlcook账号登录下执行成功
    scp  anyid.sh  liang@c_ip:/home/liang/anyid
    

    生成公钥私钥

    • 在B机器zlcook账号目录下执行如下命令
    • 命令:ssh-keygen
    • 生成公钥私钥:当前账号的.ssh目录下
    # 私钥文件
    -rw-------. 1 zlcook zlcook 2622  4月  7 22:38 id_rsa
    # 公钥文件
    -rw-r--r--. 1 zlcook zlcook  582  4月  7 22:38 id_rsa.pub
    

    设置公钥

    • 将公钥文件放C机器的liang账号目录的.ssh目录中的authorized_keys文件里
    • 通过账号密码登录机器C
    • 如果liang账号目录下没有.ssh目录,则创建.ssh目录,并且要设置访问权限为700并且要确认/home/zlcook的权限也为700
    cd /home/liang
    mkdir -p .ssh
    # 不设置700,则A机器zlcook账号执行scp命令依然访问不了
    chmod 700 .ssh/
    
    • 如果.ssh下没有authorized_keys文件则创建。authorized_keys文件中存放了所有访问liang账号的公钥,authorized_keys文件权限要为600
    touch authorized_keys
    chmod 600 authorized_keys
    
    • 将机器B上/home/zlcook/id_rsa.pub中的公钥追加到机器C,liang目录下的authorized_keys文件中。
    $ cat id_rsa.pub > authorized_keys
    
    • 大功告成,此时在机器B上登录zlcook账号执行下面命令就会成功, 前提是liang目录下要有anyid目录。
    scp  anyid.sh  liang@c_ip:/home/liang/anyid
    
    • 原理就是:zlcook账号下执行scp命令时,是走ssh协议,那么就会利用其/home/zlcook/.ssh目录下的私钥,而且机器C的/home/liang/.ssh/authorized_keys里包含了zlcook的公钥,所以访问时就可以取得信任。

    • 扩展:如果你使用B机器上的wcc用户执行上面命令就会失败,因为liang目录下不包含wcc账号.ssh目录下公钥。一般为了方便,可以将同一份公钥私钥,在各个账号下和各个机器间进行复制,这样就可以很方便实现各个机器间的账号通过ssh无密码访问,且authorized_keys中只有一个大家都相同的公钥。

    相关文章

      网友评论

          本文标题:通过公钥私钥访问机器

          本文链接:https://www.haomeiwen.com/subject/azafahtx.html