Linuxネイティブのデスクトップから、次のようにgitlabリポジトリからプロジェクトのクローンを作成できます。
git clone [email protected]:namespace/project.git
上記に問題はありません。具体的には、[email protected]
パスワードの入力を求められません。
Windows 10 Subsystem for Linux(WSL)に切り替える必要がありました。同じプロジェクトのクローンを作成しようとすると、amは、持っていない[email protected]
パスワードの入力を求めました。
質問:一方の環境でパスワードの入力を求められ、もう一方の環境では求められないのはなぜですか?
私が試したこと:
1。 Linuxネイティブ環境でsshキーを使用していたので、WSLで作成しました。
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:16ba121a04d5ad3b885f09af5+c6c08b68766ce43d9 user@JFNM38J2
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----[SHA256]-----+
$ Sudo /etc/init.d/ssh start
* Starting OpenBSD Secure Shell server sshd
Could not load Host key: /etc/ssh/ssh_Host_rsa_key
Could not load Host key: /etc/ssh/ssh_Host_ecdsa_key
Could not load Host key: /etc/ssh/ssh_Host_ed25519_key
[ OK ]
ssh -vT [email protected]
の出力を比較してみました。Server accepts key...
」コメントがあることが際立っています。しかし、なぜ、あるいはもっと重要なことに、Linuxネイティブ環境のように[email protected]
パスワードをスキップするようにWSL環境をセットアップするために他に何ができるのか、私は本当に理解していません。$ # This is the Linux-native environment
$ uname -a
Linux linuxbox 5.4.8-200.fc31.x86_64 #1 SMP Mon Jan 6 16:44:18 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ ssh -vT [email protected]
OpenSSH_8.1p1, OpenSSL 1.1.1d FIPS 10 Sep 2019
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: configuration requests final Match pass
debug1: re-parsing configuration
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: Connecting to git.company.com [10.138.1.176] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/id_rsa type 0
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/user/.ssh/id_ed25519 type -1
debug1: identity file /home/user/.ssh/id_ed25519-cert type -1
debug1: identity file /home/user/.ssh/id_xmss type -1
debug1: identity file /home/user/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.1
debug1: match: OpenSSH_8.1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to git.company.com:22 as 'git'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: Host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: curve25519-sha256 need=32 dh_need=32
debug1: kex: curve25519-sha256 need=32 dh_need=32
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: ecdsa-sha2-nistp256 SHA256:+a3ohHfIsc5Bi99RHkwQQTZfMO0IdC5vj3Dxk6XpR9J
debug1: Host 'git.company.com' is known and matches the ECDSA Host key.
debug1: Found key in /home/user/.ssh/known_hosts:59
debug1: rekey out after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 4294967296 blocks
debug1: Will attempt key: /home/user/.ssh/id_rsa RSA SHA256:Cf6Ann313zL2As5qABJe85JKJV3L3pGERP+VRCYIaAg agent
debug1: Will attempt key: /home/user/.ssh/id_dsa
debug1: Will attempt key: /home/user/.ssh/id_ecdsa
debug1: Will attempt key: /home/user/.ssh/id_ed25519
debug1: Will attempt key: /home/user/.ssh/id_xmss
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available (default cache: KCM:)
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available (default cache: KCM:)
debug1: Next authentication method: publickey
debug1: Offering public key: /home/user/.ssh/id_rsa RSA SHA256:Cf6Ann313zL2As5qABJe85JKJV3L3pGERP+VRCYIaAg agent
debug1: Server accepts key: /home/user/.ssh/id_rsa RSA SHA256:Cf6Ann313zL2As5qABJe85JKJV3L3pGERP+VRCYIaAg agent
debug1: Authentication succeeded (publickey).
Authenticated to git.company.com ([10.138.1.176]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Remote: /var/opt/gitlab/.ssh/authorized_keys:1121: key options: command user-rc
debug1: Remote: /var/opt/gitlab/.ssh/authorized_keys:1121: key options: command user-rc
debug1: Sending environment.
debug1: Sending env XMODIFIERS = @im=ibus
debug1: Sending env LANG = en_US.UTF-8
Welcome to GitLab, @user!
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2828, received 2880 bytes, in 0.1 seconds
Bytes per second: sent 43777.7, received 44582.6
debug1: Exit status 0
。
$ # This is the WSL environment
$ uname -a
Linux windowsbox 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
$ ssh -vT [email protected]
OpenSSH_7.6p1 Ubuntu-4, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to git.company.com [199.21.163.250] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.1
debug1: match: OpenSSH_8.1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to git.company.com:22 as 'git'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: Host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: ecdsa-sha2-nistp256 SHA256:+a3ohHfIsc5Bi99RHkwQQTZfMO0IdC5vj3Dxk6XpR9J
debug1: Host 'git.company.com' is known and matches the ECDSA Host key.
debug1: Found key in /home/user/.ssh/known_hosts:1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nis
tp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_1000)
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_1000)
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:EfQKfAR2alQK13JaqZ8AVMP7B+hqDEC9CGsOfqOHhL0 /home/user/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug1: Trying private key: /home/user/.ssh/id_ed25519
debug1: Next authentication method: password
[email protected]'s password:
これら2つの環境で何が起こっているのか、そしてなぜ一方がユーザー入力パスワードなしで[email protected]:namespace/project.git
から複製できるのに、もう一方はできないのかを誰かが説明できますか?
Linuxデスクトップでは、パスワードの代わりに証明書を使用して接続しています。おそらく数か月前に、GitLabへのアクセスをそこの指示に従って構成し( https://docs.gitlab.com/ee/ssh/ )ssh-genでキーペアを生成してから、公開キーをコピーしましたGitLabWebサイトで。 cat ~/.ssh/id_rsa.pub
を実行してこれを確認し、GitLabプロファイルのセキュリティ設定のSSHキーと呼ばれるフィールドと比較できます。
新しい環境で、GitLab設定のものと一致しない新しいキーペアを生成したため、パスワードを要求されました。コメントで私が提案したのは、通常は~/.ssh/id_rsa
と~/.ssh/id_rsa.pub
のキーペアをWSL環境にコピーすることでした。これは、特にWSLツールとWindowsツールを頻繁に切り替える場合に推奨される一般的な動作です。この場合、資格情報をWindowsホームの.sshフォルダーにコピーできます。新しいキーを作成してGitLabに追加することもできます。
それが役に立てば幸い
よろしく
GitサーバーはGitLabインスタンスである可能性が高く、SSH操作にデフォルトのOpenSSHサービスを使用します。インスタンスにプッシュするときは、SSHキーを使用できるようにする必要がありますが、OpenSSHはパスワードサポート用に構成されているため、有効なSSHキーがない場合は、パスワードの入力を求められます。
ただし、これはサービスアカウントであるため、そのアカウントの有効なパスワードは実際にはありません(パスワードハッシュは、有効なハッシュと一致しない無効な値に設定されています)。そうでない場合、ログインできません。キーを持っています。 GitHubなどの他のホスティングプラットフォームは、システムOpenSSHを使用せず、代わりに、有効な公開鍵を提供しない接続を拒否します。
1つの環境(WSL)のSSHキーが異なり、サーバーに認識されなかったため、サーバーはそれを拒否し、次の認証方法にフォールバックしました。 GitLabのユーザーアカウントに既存のキー(~/.ssh/id_rsa.pub
にあるキー)を追加するだけで、サーバーにアクセスできるようになります。