web-dev-qa-db-ja.com

SSHキーがパスワードを要求する

私は今ここで立ち往生しています 2日間のように 一週間。

Gitlab4とgitoliteを搭載したCentOsマシンを持っています。すべてが数週間は正常に機能しましたが、先週末に突然何か奇妙なことが起こり、すべてのバイナリがmashineから消えました(yum、python、Ruby、mysqlなど)。 gitlabのコンパイルが再び機能していました。

しかし、gitlabgitユーザーの間でsshキーを取得できません。私はすでにgitユーザーを削除して再作成し、すべての権限を再設定し、sshキーを再作成し、gitoliteectを再インストールしました。しかし、何もうまくいかず、同じエラーが発生し続けます。

git user .ssh folder

-rwx------ 1 git git  557 Mar 27 16:46 authorized_keys

gitlabユーザー.sshフォルダー

-rw------- 1 gitlab gitlab 1671 Mar 27 16:45 id_rsa
-rw-r--r-- 1 gitlab gitlab  406 Mar 27 16:45 id_rsa.pub
-rw-r--r-- 1 gitlab gitlab  391 Mar 27 16:50 known_hosts

SSHエラー:

ssh -vvvT git@localhost
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/gitlab/.ssh/identity type -1
debug3: Not a RSA1 key file /home/gitlab/.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 /home/gitlab/.ssh/id_rsa type 1
debug1: identity file /home/gitlab/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3p2
debug1: match: OpenSSH_4.3p2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.3p2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-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,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr
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,zlib
debug2: kex_parse_kexinit: none,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-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr
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,zlib
debug2: kex_parse_kexinit: none,zlib
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: 132/256
debug2: bits set: 502/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug3: check_Host_in_hostfile: filename /home/gitlab/.ssh/known_hosts
debug3: check_Host_in_hostfile: match line 1
debug1: Host 'localhost' is known and matches the RSA Host key.
debug1: Found key in /home/gitlab/.ssh/known_hosts:1
debug2: bits set: 505/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/gitlab/.ssh/identity ((nil))
debug2: key: /home/gitlab/.ssh/id_rsa (0x848ba50)
debug2: key: /home/gitlab/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,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: /home/gitlab/.ssh/identity
debug3: no such identity: /home/gitlab/.ssh/identity
debug1: Offering public key: /home/gitlab/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/gitlab/.ssh/id_dsa
debug3: no such identity: /home/gitlab/.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

認証ログは私に与えます:

Apr  2 10:19:13 venus sshd[15693]: User git not allowed because account is locked
Apr  2 10:19:13 venus sshd[15693]: Failed none for illegal user git from ::ffff:127.0.0.1 port 56906 ssh2

助けてくれてありがとう。

20
Mario

あなたが言及する:

Apr 2 10:19:13 venus shd[15693]: User git not allowed because account is locked 
Apr 2 10:19:13 venus sshd[15693]: Failed none for illegal user git from ::ffff:127.0.0.1 port 56906 ssh2

この記事 言及:

OpenSSHは、デフォルトでロックされたアカウントをチェックするようになりました。
Linuxシステムでは、ロックされたアカウントは、!!のパスワードフィールドに/etc/shadowがあるアカウントとして定義されます。
これは、useraddコマンドで作成されたアカウントのデフォルトのエントリです
GSI認証を使用していて、ローカルパスワードを必要としない場合でも、sshdはユーザーに次のメッセージでログインさせません:

Too many authentication failures for username

sshdデバッグ情報では、アカウントがロックされていることが示されます。

User username not allowed because account is locked

Sshdマニュアルからの追加情報は次のとおりです。

認証の種類に関係なく、アカウントはアクセス可能であることを確認するためにチェックされます。
アカウントがロックされているか、DenyUsersにリストされているか、そのグループがDenyGroupsにリストされている場合、アカウントにアクセスできません。
ロックされたアカウントの定義はシステムに依存します。
一部のプラットフォームには独自のアカウントデータベース(AIXなど)があり、一部はpasswdフィールド(SolarisおよびUnixWareでは "*LK*"、HP-UXでは "*"、Tru64では "Nologin"、先頭に "*LOCKED*"を含む「FreeBSDでは」、Linuxでは主要な「!!」)。
公開鍵を許可したままアカウントのパスワード認証を無効にする必要がある場合は、passwdフィールドをこれらの値以外に設定する必要があります(例:「NP」または「*NP*」)。

修正:置換!! (例)NP/etc/shadow。


jszakmeistercomments )および Yongcan-Frank-Lvcomments )で述べたように:

Sudo passwd -u git

アカウントのロックを解除するで十分です。

26
VonC

このまったく同じ問題gitlab 5.2(bitnami)で私を殺していました。

私はついにそれを/var/log/auth.logで追跡しました。

May 28 11:32:10 ml115 sshd[27779]: User git not allowed because account is locked
May 28 11:32:10 ml115 sshd[27779]: input_userauth_request: invalid user git [preauth]

その後、/etc/shadowgitエントリに!があり、それを*に置き換える必要があることを見つけるのにそれほど時間はかかりませんでした。

*とすべてのキーを設定すると、別のマシンからSSHで接続できました(ssh -vvT git@gitserverも診断に役立ちます)。

git Push -u Origin master

今は動作します。

私のシステムはUbuntu 13.04です。

6
kfmfe04

受け入れられた答えはうまくいくかもしれませんが、これを行うための好ましい方法ではないかもしれません。

少なくともUbuntu12.04では、passwd -u gitは次の警告を表示します。

passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.

良さそうです...usermodのマニュアルページが-pオプションの使用に対して警告していることを除いて。

Note: This option is not recommended because the password (or encrypted password)
will be visible by users listing the processes.

そのすべての代わりに、passwd -d gitlabを呼び出すと、ユーザーのパスワードが削除されます(passwdフィールドが空の文字列に設定されます)。

1
kkurian

〜gitlab/.ssh/id_rsa.pubを〜git/.ssh/authorized_keysに配置する必要があります

-rwx ------ 1 git git 5573月27日16:46authorized_keys

-rw-r--r-- 1 gitlab gitlab 406 Mar 27 16:45 id_rsa.pub

サイズが一致していないことがわかります。authorized_keysにsshキーオプションを追加しましたか?また、sshdのエラーログも確認する必要があります(例:/ var/log/authまたは/ var/log/secureなど)

1

ユーザーのロックを解除する最も簡単なソリューション:usermod -p '*' username

0