Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
使用SSH密钥连接到远程Centos服务器_Ssh_Ssh Keys_Openssh - Fatal编程技术网

使用SSH密钥连接到远程Centos服务器

使用SSH密钥连接到远程Centos服务器,ssh,ssh-keys,openssh,Ssh,Ssh Keys,Openssh,我正在尝试使用SSH密钥连接到Centos 6.3服务器,这样我就可以远程运行脚本,而无需每次都询问密码。我已遵照以下指示: 使用普通ssh命令和密码登录服务器一次,以便服务器将您的计算机添加到已知主机 在您的计算机中,使用cygwin终端生成密钥并将密码短语留空:ssh keygen-t rsa 现在设置私钥和ssh文件夹的权限:chmod 700~/.ssh&chmod 600~/.ssh/id\u rsa 将公钥(id_rsa.pub)复制到服务器,登录到服务器并将公钥添加到授权密钥列表:

我正在尝试使用SSH密钥连接到Centos 6.3服务器,这样我就可以远程运行脚本,而无需每次都询问密码。我已遵照以下指示:

  • 使用普通ssh命令和密码登录服务器一次,以便服务器将您的计算机添加到已知主机
  • 在您的计算机中,使用cygwin终端生成密钥并将密码短语留空:
    ssh keygen-t rsa
  • 现在设置私钥和ssh文件夹的权限:
    chmod 700~/.ssh&chmod 600~/.ssh/id\u rsa
  • 将公钥(id_rsa.pub)复制到服务器,登录到服务器并将公钥添加到授权密钥列表:
    cat id_rsa.pub>~/.ssh/authorized_密钥
  • 导入公钥后,可以将其从服务器中删除。在服务器上设置文件权限:
    chmod 700~/.ssh&chmod 600~/.ssh/authorized_key
  • 在服务器上重新启动ssh守护程序:
    service sshd restart
  • 从您的计算机测试连接:
    sshroot@198.61.220.107

  • 但是当我尝试ssh到远程服务器时,它仍然在询问我密码。服务器上没有创建.ssh文件夹,所以我必须自己创建。你知道会发生什么吗?我错过什么了吗?是否有其他方法设置钥匙?

    显然,这是一个已知的方法。建议的解决方案实际上不起作用,但我发现这将在CentOS 6.2系统上起作用:

    chmod 600 .ssh/authorized_keys
    chmod 700 .ssh
    

    事实证明,在设置服务器时,我愚蠢地更改了
    /root
    目录的所有者,因此,由于
    /.ssh
    目录是为我试图登录的用户(root)设置的,所以它拒绝访问该目录,因为它属于另一个用户

    Dec 10 16:25:49 thyme sshd[9121]: Authentication refused: bad ownership or modes for directory /root
    
    我把所有者改回root,就这样做了

    chown root /root
    

    感谢大家的帮助。

    虽然OP已经找到了解决方案,但我想记录下我对类似问题的解决方案,希望它能对那些通过谷歌搜索类似问题并得出此答案的人有所帮助

    出现问题的原因是CentOS server上用户主文件夹中的.ssh目录在通过
    useradd
    命令创建后未设置为正确的模式

    此外,我需要通过以下命令手动设置.ssh文件夹模式:

    chmod g-w/主页/用户

    chmod 700/home/user/.ssh


    chmod 600/home/user/.ssh/authorized_keys

    其他答案是通用的,请注意Centos 6使用selinuxselinux可以拒绝访问授权密钥文件,尽管权限和所有权正确

    根据以下已知问题:

    • 如果使用selinux将公钥传输到CentOS 6服务器,请确保正确设置了该公钥的selinux上下文 启用。否则,selinux可能会禁止访问 ~/.ssh/authorized_keys文件和按后果排序的密钥 身份验证将不起作用。为了设置正确的上下文 您可以使用:

      restorecon-R-v/home/user/.ssh

    • CentOS 6的ssh副本id可以识别selinux上下文,不需要以前的解决方法


    当你提到~,你在说什么用户?另外,重新启动sshd并不是更改密钥所必需的…@guillermog请在以后的问题中注意格式设置。它应该清晰易读,否则它只是一堵文本墙和一个关闭按钮。@Blaskovicz我正在使用root用户。使用
    -v
    运行
    ssh
    可能会给您一些正在发生的事情的提示。潜在的副本尝试过这个,但仍然没有运气。我的关键项目是
    chmod g-w/home/user