我一直在尝试在两台 Linux 机器之间设置无密码的远程文件复制。我已将本地 .ssh/id_rsa.pub 附加到远程 .ssh/authorized_keys。我还设置了正确的文件权限(我的主目录和 .ssh 为 700,authorized_keys 为 600)。
SSH 不断地要求我输入密码。有任何想法吗?所有必需的信息应如下。
我不要拥有这两台机器中任意一台的 root 访问权限。
当地的:
$ uname -a && ssh -V
Linux localhost 2.6.32-xxx.x86_64 #1 SMP Tue Dec 18 15:04:44 PST 2012 x86_64 x86_64 x86_64 GNU/Linux
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
偏僻的:
uname -a && ssh -V
Linux remotehost 4.0.5-xxx.x86_64 #1 SMP Tue Jun 9 15:09:25 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
调试:
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to remote [1.2.3.4] port 22.
debug1: Connection established.
debug3: Not a RSA1 key file .ssh/myKey.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file .ssh/myKey type 1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug3: Wrote 792 bytes for a total of 813
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug3: Wrote 24 bytes for a total of 837
debug2: dh_gen_key: priv key bits set: 119/256
debug2: bits set: 491/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug3: Wrote 144 bytes for a total of 981
debug3: check_host_in_hostfile: filename /some/directory/.ssh/known_hosts
debug3: check_host_in_hostfile: match line 14
debug3: check_host_in_hostfile: filename /some/directory/.ssh/known_hosts
debug3: check_host_in_hostfile: match line 14
debug1: Host 'remote' is known and matches the RSA host key.
debug1: Found key in /some/directory/.ssh/known_hosts:14
debug2: bits set: 496/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: Wrote 16 bytes for a total of 997
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug3: Wrote 48 bytes for a total of 1045
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /some/directory/.ssh/id_rsa (0x7fbf18b8a0b0)
debug2: key: .ssh/myKey (0x7fbf18b86460)
debug3: Wrote 64 bytes for a total of 1109
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /some/directory/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 624 bytes for a total of 1733
debug1: Authentications that can continue: publickey,password
debug1: Offering public key: .ssh/myKey
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 2101
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
xxxx@remotehost's password:
根据评论者的要求添加:
ls -lZd / /home /home/xxxx /home/xxxx/.ssh /home/xxxx/.ssh/authorized_keys
drwxr-xr-x root root ? /
drwxr-xr-x root root ? /home
drwx------ xxxx xxxx_gsa ? /home/xxxx
drwx------ xxxx xxxx_gsa ? /home/xxxx/.ssh
-rw------- xxxx xxxx_gsa ? /home/xxxx/.ssh/authorized_keys
答案1
您的权限说明了问题:
-rw------- xxxx_p xxxx_gsa ? /home/xxxx/.ssh/authorized_keys
根据手册页sshd
:
〜/.ssh/authorized_keys
[...]
如果其他用户可写入该文件、~/.ssh 目录或用户的主目录,则该文件可能会被未经授权的用户修改或替换。在这种情况下,sshd 将不允许使用它,除非 StrictModes 选项已设置为“no”。
您需要确保它/home/xxxx/.ssh/authorized_keys
属于 userxxxx
而不是xxxx_p
。否则服务器将拒绝使用该文件。
答案2
debug3: Not a RSA1 key file .ssh/myKey.
debug2: key_type_from_name: unknown key type '-----BEGIN'
^^^^ bzzt
第二行看起来像是你的问题。
ssh 的不同实现使用不同的格式。不同的版本坚持一种格式; OpenSSH 多年来一直保持一致。 ISTR 在其他地方看到类似的“BEGIN”字符串,也许是在 PuTTY 中。
我使用 OpenSSH,我的授权密钥如下所示:
$ cut -b-60 ~/.ssh/authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBANSxMDLaL3O6jg528/QeoCxw78qgVrqc
ssh-dss AAAAB3NzaC1kc3MAAACBAOgQyLwNkOAzsfxzm8WcYJYp/asSS7Lb
ssh-dss AAAAB3NzaC1kc3MAAACBAMyZLbylDmVUkBPEltOap1x4l4WGg5Il
尝试在遥控器上生成公钥,看看它是否与您安装的类似授权密钥。如果没有,您将需要了解您正在运行谁的 ssh/sshd,以及如何提供格式正确的密钥。