甚至在向authorized_keys添encryption钥之后,SSH仍要求input密码

以下是我在本地计算机上执行的步骤:

ssh-keygen -t rsa cat ~/.ssh/id_rsa | ssh [email protected] -p 1234 "cat > ~/.ssh/authorized_keys" 

当我做一个ssh [email protected] -p 1234它仍然要求input密码:o

 [email protected]'s password: 

为什么这样? 我已经将它添加到授权密钥,但它仍然要求input密码。 sshd_config中:

 Port 1234 Protocol 2 SyslogFacility AUTHPRIV PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM no AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-server 

以下是-vvv的结果:

 $ ssh [email protected] -p 1234 -vvv OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007 debug2: ssh_connect: needpriv 0 debug1: Connecting to remotehost.com [12.123.123.123] port 1234. debug1: Connection established. debug1: identity file /c/Documents and Settings/user/.ssh/identity type -1 debug3: Not a RSA1 key file /c/Documents and Settings/user/.ssh/id_rsa. 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 /c/Documents and Settings/user/.ssh/id_rsa type 1 debug1: identity file /c/Documents and Settings/user/.ssh/id_dsa 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_4.6 debug2: fd 3 setting O_NONBLOCK debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-g roup-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour1 28,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-c tr,aes192-ctr,aes256-ctr debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour1 28,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-c tr,aes192-ctr,aes256-ctr debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@open ssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@open ssh.com,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-g roup-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,arcfour12 8,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rij [email protected] debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour12 8,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rij [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] 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_init: found hmac-md5 debug1: kex: server->client aes128-cbc hmac-md5 none debug2: mac_init: found hmac-md5 debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug2: dh_gen_key: priv key bits set: 135/256 debug2: bits set: 519/1024 debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug3: put_host_port: [12.123.123.123]:1234 debug3: put_host_port: [remotehost.com]:1234 debug3: check_host_in_hostfile: filename /c/Documents and Settings/user/.ss h/known_hosts debug3: check_host_in_hostfile: match line 1 debug3: check_host_in_hostfile: filename /c/Documents and Settings/user/.ss h/known_hosts debug3: check_host_in_hostfile: match line 1 debug1: Host '[remotehost.com]:1234' is known and matches the RSA host key. debug1: Found key in /c/Documents and Settings/user/.ssh/known_hosts:1 debug2: bits set: 515/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 debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug2: key: /c/Documents and Settings/user/.ssh/identity (0x0) debug2: key: /c/Documents and Settings/user/.ssh/id_rsa (0xa01a418) debug2: key: /c/Documents and Settings/user/.ssh/id_dsa (0x0) debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mi c,password debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-m ic,password debug3: preferred 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: Trying private key: /c/Documents and Settings/user/.ssh/identity debug3: no such identity: /c/Documents and Settings/user/.ssh/identity debug1: Offering public key: /c/Documents and Settings/user/.ssh/id_rsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mi c,password debug1: Trying private key: /c/Documents and Settings/user/.ssh/id_dsa debug3: no such identity: /c/Documents and Settings/user/.ssh/id_dsa 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 [email protected]'s password: 

~/.ssh必须是chmod 700~/.ssh/authorized_keys必须是chmod 600 。 两者都必须归您所有。

如果这些文件/目录更加宽容,SSH将默默地回退密码login,尽pipe从内存来看,它logging了一些关于“坏模式”的内容。

另外,请检查~/.ssh/authorized_keys实际上是否包含某些内容。 我有一种感觉,那就是命令可能已经创build了一个空文件。 我想你想要的是:

 cat ~/.ssh/id_rsa.pub | ssh [email protected] -p 1234 "cat - > ~/.ssh/authorized_keys" 

正如Ladadadada所说,你有:

cat〜/ .ssh / id_rsa | ssh [email protected] -p 1234“cat>〜/ .ssh / authorized_keys”

这是将您的私钥/公钥对复制到authorized_keys文件。 您在服务器上的authorized_keys文件不应该有私钥。 我会build议如下:

  • 完全删除远程系统上的authorized_keys文件。
  • 暂时将权限更改为.ssh以使其可写,如果尚未完成。
  • 在您的本地系统上,导航到.ssh目录并确保您有一个id_rsa和id_rsa.pub文件。 ssh-keygen命令应该为你创build了两个文件
  • 执行Ladadadada提供的命令:

cat〜/ .ssh / id_rsa.pub | ssh [email protected] -p 1234“cat – >〜/ .ssh / authorized_keys”

注意:这应该把你的公钥写到authorized_keys文件中。 仔细检查以确保id_rsa.pub的本地副本与authorized_keys文件中的密钥相匹配。

你的id_rsa.pub键的内容看起来类似于(为了简洁起见剪下一部分):

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLrS9t0lEdxk52v8Jt / EJMNm9 :::: clipped ::::: wu1WzNCvrkUDnqS / aQZJ4rR4J + GoMLxP2NT你@ somehostname

该密钥id_rsa.pub应该与known_hosts文件中的ssh密钥匹配。

编辑:修复文件名中的错误。 我提出了Ladadadada的回答,因为他发现了这个问题,但我认为这不是OP所提到的

基于输出,我认为你需要检查你的密钥的格式。 如果您不确定,请查看这些网站:

http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter8.html

http://www.ietf.org/rfc/rfc4716.txt