Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 不使用密码将公钥复制到远程节点_Linux_Bash_Shell_Ssh_Public Key - Fatal编程技术网

Linux 不使用密码将公钥复制到远程节点

Linux 不使用密码将公钥复制到远程节点,linux,bash,shell,ssh,public-key,Linux,Bash,Shell,Ssh,Public Key,我需要使用bash脚本执行以下操作: 在NodeA上生成公钥和私钥 将公钥复制到远程基站的授权密钥中 将NodeB添加到NodeA的已知_主机 我需要在没有密码提示的情况下完成所有这一切,以便ssh登录到NodeB 在第二步中,我甚至用“-I”指定私钥 下面的脚本现在仍然要求输入密码 #!/bin/bash sudo ssh-keygen -t rsa -N "" -f /root/.ssh/id_ccn_rsa ssh -i /root/.ssh/id_ccn_rsa -o StrictHo

我需要使用bash脚本执行以下操作:

  • 在NodeA上生成公钥和私钥
  • 将公钥复制到远程基站的授权密钥中
  • 将NodeB添加到NodeA的已知_主机 我需要在没有密码提示的情况下完成所有这一切,以便ssh登录到NodeB

    在第二步中,我甚至用“-I”指定私钥

    下面的脚本现在仍然要求输入密码

    #!/bin/bash
    
    sudo ssh-keygen -t rsa -N "" -f /root/.ssh/id_ccn_rsa
    ssh -i /root/.ssh/id_ccn_rsa -o StrictHostKeyChecking=no $1
    sudo sh -c "ssh-keyscan $1 >> /root/.ssh/known_hosts"
    
    没有魔法

    要部署密钥,您必须至少能够在没有密钥的情况下登录一次。或者让可以登录并具有root访问权限的人为您部署公钥


    除非您的帐户是在没有密码的情况下设置的,并且sshd配置了非默认的
    permitteypasswords yes
    选项,否则您不能在没有密码和密钥的情况下登录。

    首先告诉我们您如何能够不使用密码访问远程服务器,以及您拥有哪些用户和/或权限。首先排除有关传输任何文件的部分。我可以从系统中使用ssh将两个节点连接到一起。我需要用ssh从一个节点连接到另一个节点。为了让这两个节点相互通信,我希望设置一个单独的密钥对。我没有访问密码的权限。我现在唯一能做到这一点的方法是将来自nodeA的公钥复制粘贴到nodeB的authorized_keys列表中,同时使用类似saltstack或ansible的东西从我的pcConsider用ssh将其复制到这两个列表中。或者,由于此活动是其中之一,请使用群集ssh同时在所有主机上编辑文件。如果我有10//多个节点需要将某些内容scp到远程节点,我无法从每个节点手动登录。这就是我现在正在做的。但是有没有办法使它自动化呢?您必须使用
    ssh copy id
    一次来将公钥部署到每个目标。之后,如果私钥没有密码,您可以不用密码登录。您可以在
    ~/.ssh/config
    中设置一个条目,为每个目标创建一个短别名,并告诉它要使用哪个私钥。