LinuxボックスでSSHを機能させるのに非常に特有の問題があります。 OpenSSHキーで識別されるパスワードなしのgitユーザーがいます。ネットワーク上の同じまたは異なるLinux VM)からSSHで接続しようとすると、失敗します(完全なデバッグ情報については以下を参照してください)。
しかし、今、ここに奇妙な部分があります:私はWindows 7ボックスからまったく同じキーを使用してうまくsshすることができます!これはクライアント側の問題を見ているのではないかと思います。サーバー上のキーがなんらかの理由で壊れた場合、どこからでも接続できないはずです。
私はこれで何日も泥の中で車輪を磨いてきました。この問題に関するトピックはたくさんありますが、どのソリューションも機能も適用もされていません。
〜/ .ssh権限はすべてクライアントとサーバーの両方で適切に設定されています。
具体的には、〜/ .ssh/*が600に設定されました(1つのスレッドがauthorized_keys(サーバー)を644に変更することを推奨しましたが、効果はありませんでした)。
〜/ .sshディレクトリ自体は700に設定されました。
〜内のすべては、同名のユーザー/グループによって所有されています。
クライアント(/home/kris/.ssh):
drwx------ 2 kris kris 4096 Apr 11 01:17 .
drwx------ 38 kris kris 4096 Apr 11 01:29 ..
-rw------- 1 kris kris 458 Apr 11 16:22 config
-rw------- 1 kris kris 1675 Apr 10 22:29 id_rsa_kriscraig_git
-rw------- 1 kris kris 1675 Apr 11 01:08 id_rsa_kriscraig_git_CRAIGCOM-LINUX
-rw------- 1 kris kris 400 Apr 11 01:08 id_rsa_kriscraig_git_CRAIGCOM-LINUX.pub
-rw------- 1 kris kris 1675 Apr 11 01:09 id_rsa_kriscraig_git_CRAIGCOM-UT3
-rw------- 1 kris kris 400 Apr 11 01:09 id_rsa_kriscraig_git_CRAIGCOM-UT3.pub
-rw------- 1 kris kris 951 Apr 10 22:29 id_rsa_kriscraig_gitolite_Kris
-rw------- 1 kris kris 214 Apr 10 22:29 id_rsa_kriscraig_gitolite_Kris.pub
-rw------- 1 kris kris 381 Apr 10 22:29 id_rsa_kriscraig_git.pub
-rw------- 1 kris kris 1626 Apr 11 17:50 known_hosts
サーバー(/home/git/.ssh;これまで行ってきたすべての試行/エラーのために少し雑然としています):
drwx------ 2 git git 4096 Apr 11 01:36 .
drwx------ 8 git git 4096 Apr 9 17:55 ..
-rw-r--r-- 1 git git 2174 Apr 11 01:40 authorized_keys
-rw------- 1 git git 904 Aug 4 2012 authorized_keys_bak
-rw------- 1 git git 354 Aug 4 2012 authorized_keys_bak2
-rw------- 1 git git 2174 Apr 11 01:13 authorized_keys_bak3
-rw------- 1 git git 160 Apr 10 00:32 config
-rw------- 1 git git 1675 Aug 3 2012 id_rsa
-rw------- 1 git git 1675 Apr 11 01:08 id_rsa_kriscraig_git_CRAIGCOM-LINUX
-rw------- 1 git git 400 Apr 11 01:08 id_rsa_kriscraig_git_CRAIGCOM-LINUX.pub
-rw------- 1 git git 1675 Apr 11 01:09 id_rsa_kriscraig_git_CRAIGCOM-UT3
-rw------- 1 git git 400 Apr 11 01:09 id_rsa_kriscraig_git_CRAIGCOM-UT3.pub
-rw------- 1 git git 951 Apr 10 00:32 id_rsa_kriscraig_gitolite_Kris
-rw------- 1 git git 214 Apr 10 00:33 id_rsa_kriscraig_gitolite_Kris.pub
-rw------- 1 git git 381 Aug 3 2012 id_rsa.pub
-rw------- 1 git git 414 Aug 4 2012 known_hosts
これはおそらく明らかですが、実際には、構成内のファイルパスが正しいことを確認しました。
新しいキーの生成/配布を複数回試しました。
すでにWindowsで動作しているものをコピーして貼り付けてみましたが、dos2unixを使用して、エンコードの問題(CRLF/LFなど)を処理していないことを確認しました。
標準的なアプローチを使用してキーを生成しました。
ssh-keygen -t rsa
親ホームディレクトリのアクセス許可を試してみましたが、役に立ちませんでした。
ローカル設定と/ etc/ssh/* _ configをいじくり回しました
はい、毎回sshdを再起動しました。万が一に備えて、ランダムな間隔でサーバーを再起動しました。
私は少なくともいくつかのことが欠けていると確信しています。私は最近あまり眠っていません...
この時点で提案をします。すでに試したことが判明した場合、私はあなたに反対票を投じません。 =)
/ var/log/secureで2回失敗したssh試行の結果のエントリ:
Apr 11 22:21:45 CRAIGCOM-LINUX sshd[14738]: Connection from (WAN IP) port 35326
Apr 11 22:21:45 CRAIGCOM-LINUX sshd[14739]: Connection closed by (WAN IP)
Apr 11 22:21:52 CRAIGCOM-LINUX sshd[14741]: Connection from (WAN IP) port 35328
Apr 11 22:21:52 CRAIGCOM-LINUX sshd[14742]: Connection closed by (WAN IP)
[kris@CRAIGCOM-LINUX .ssh]$ ssh git@CRAIGCOM-LINUX -vvv
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
debug1: Reading configuration data /home/kris/.ssh/config
debug1: Applying options for CRAIGCOM-LINUX
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to (SERVER Host) [(SERVER IP)] port 22.
debug1: Connection established.
debug1: identity file "/home/kris/.ssh/id_rsa_kriscraig_git_CRAIGCOM-LINUX" type -1
debug1: loaded 1 keys
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3
debug1: match: OpenSSH_4.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.3
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: 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,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,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-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,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,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-ctr hmac-md5 none
debug2: mac_init: 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
debug2: dh_gen_key: priv key bits set: 118/256
debug2: bits set: 484/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug3: check_Host_in_hostfile: filename /home/kris/.ssh/known_hosts
debug3: check_Host_in_hostfile: match line 1
debug3: check_Host_in_hostfile: filename /home/kris/.ssh/known_hosts
debug3: check_Host_in_hostfile: match line 1
debug1: Host '(SERVER Host)' is known and matches the RSA Host key.
debug1: Found key in /home/kris/.ssh/known_hosts:1
debug2: bits set: 522/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: "/home/kris/.ssh/id_rsa_kriscraig_git_CRAIGCOM-LINUX" ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: remaining preferred:
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: "/home/kris/.ssh/id_rsa_kriscraig_git_CRAIGCOM-LINUX"
debug3: no such identity: "/home/kris/.ssh/id_rsa_kriscraig_git_CRAIGCOM-LINUX"
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-with-mic,password).
ログからわかるように、秘密鍵ファイルを開こうとすると、「そのようなIDはありません」が返されます。この拒否はクライアント側で起こっていると思います。私の知る限り、サーバーには何も送信していません。接続を開いて突然閉じるだけです。
私の人生では、なぜそれが両方のCentOSボックスのキーファイルでバーフィングしているのか理解できません!権限が完全に設定されている、ファイルが読み取り可能である、どちらのサーバーもSELinuxを使用していない、同じキーがWindowsクライアントから完全に正常に機能しているなど。
私はシステム管理者の帽子をかぶっています。しかし、結局のところ、私は開発者であり、IT担当者ではありません。このレベルのSSHデバッグは、私の専門分野を超えてしまいました。言いたくないのですが、アイデアが足りなくなってしまいました。私がインターネットで見つけたすべてのことによると、これは機能しているはずです。しかし、そうではありません。何が足りないのですか?
ご協力いただきありがとうございます!うまくいけば、あなたの一人がこの問題を認識し、正しい方向に私のお尻を起動します。さらに詳しい情報が必要な場合は、お気軽にお問い合わせください。
-クリス
Ssh-agentをご利用ください。
ssh-add ~/.ssh/$keyfile
。ssh-add -l
キーに本当に問題がある場合は、キーを追加しようとすると気付くはずです。