SELinux – 脚本将SSH密钥上载到远程服务器,但无法通过SSH进行连接

我写了这个脚本,现在可以在没有安装SElinux的系统上完美工作。

echo Enter server IP: read server scp /home/Zenoss/.ssh/authorized_keys random@$server:/home/random sshpass -p randompassword ssh -t random@$server sudo -i 'useradd zenoss; sudo mkdir /home/zenoss/.ssh; sudo mv /home/random/authorized_keys /home/zenoss/.ssh/; sudo chmod 700 /home/zenoss/.ssh; sudo chmod 600 /home/zenoss/.ssh/authorized_keys; sudo chown -R zenoss /home/zenoss/.ssh; sudo chgrp -R zenoss /home/zenoss/.ssh; exit' 

所以在没有SElinux的服务器上,脚本可以工作,然后Zenoss可以通过SSHlogin到远程服务器并开始监视。 但是,在启用了SELinux的系统上,脚本可以正常工作,但是Zenoss无法通过SSH连接到远程服务器,debugging信息显示它没有看到成功设置的authorized_keys文件。

 OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 56: Applying options for * debug1: Connecting to ***** port 22. debug1: Connection established. debug1: identity file /home/zenoss/.ssh/id_rsa type 1 debug1: identity file /home/zenoss/.ssh/id_rsa-cert type -1 debug1: identity file /home/zenoss/.ssh/id_dsa type 2 debug1: identity file /home/zenoss/.ssh/id_dsa-cert type -1 debug1: identity file /home/zenoss/.ssh/id_ecdsa type -1 debug1: identity file /home/zenoss/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/zenoss/.ssh/id_ed25519 type -1 debug1: identity file /home/zenoss/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.6.1 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1 debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr [email protected] none debug1: kex: client->server aes128-ctr [email protected] none debug1: kex: [email protected] need=16 dh_need=16 debug1: kex: [email protected] need=16 dh_need=16 debug1: sending SSH2_MSG_KEX_ECDH_INIT debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ECDSA *************** The authenticity of host '******' can't be established. ECDSA key fingerprint is ************************** Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '*******' (ECDSA) to the list of known hosts. debug1: ssh_ecdsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Next authentication method: gssapi-keyex debug1: No valid Key exchange context debug1: Next authentication method: gssapi-with-mic debug1: Unspecified GSS failure. Minor code may provide more information No Kerberos credentials available debug1: Unspecified GSS failure. Minor code may provide more information No Kerberos credentials available debug1: Unspecified GSS failure. Minor code may provide more information debug1: Unspecified GSS failure. Minor code may provide more information No Kerberos credentials available debug1: Next authentication method: publickey debug1: Offering RSA public key: /home/zenoss/.ssh/id_rsa debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Offering DSA public key: /home/zenoss/.ssh/id_dsa debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Trying private key: /home/zenoss/.ssh/id_ecdsa debug1: Trying private key: /home/zenoss/.ssh/id_ed25519 debug1: Next authentication method: password zenoss@****s password: 

有谁知道是什么原因导致这种情况,我怎么能解决它,禁用SELinux不是一个选项。

KR

.ssh.ssh/authorized_keys文件的上下文很可能是错误的。 做一个sudo restorecon -R -v /home/zenoss/.ssh然后再试一次。