web-dev-qa-db-ja.com

SSHはWindowsの公開/秘密キーペアの間違った場所を探しています

Windows XPマシンでGITを構成しようとしていますが、SSHは/.ssh/id_rsaなどの意味のない場所で公開/秘密キーペアを作成および検索し続けます

WindowsのGITインストールに、ホームディレクトリまたは別のユーザー定義の場所に切り替えることができる構成ファイルがありますか?デフォルトでは、//.ssh/id_rsaに新しいキーペアを作成するように提案していますが、「ディレクトリ '//.ssh'を作成できませんでした」というエラーが表示されます。また、作成できるディレクトリが見つかると、GITはそこを検索しません。

36
Michael Morisy

Windows XPでホームディレクトリを手動で設定する方法を見つけました。

  1. 「マイコンピュータ」を右クリックします
  2. 「詳細」タブを選択します
  3. 「環境変数」ボタンをクリックします
  4. 「システム変数」セクションで、「新規」をクリックします
  5. 「変数名」に「home」と入力します。
  6. [変数値]に、プロファイルへのパスを入力します。

コマンドプロンプトで同じことを行うには:

setx HOME "your\path\to\home"

(接尾辞xに注意してください-これは変更を保持するために使用されます)

68
Michael Morisy

推奨 MSYS2のメソッドは、db_home/etc/nsswitch.confをホームディレクトリに設定することです。

正しい方向に @ VarunAgwpointing にクレジットする

Git-for-Windowsにはenv bash変数を読み取る必要があるdb_homeHOMEが含まれていますが、 nreliable です。

8
go2null

which sshをチェックして、/usr/bin/sshまたは他の何かを使用しているかどうかを確認してください。

私の場合、rsyncをインストールした後、私のsshはChocolateyに置き換えられました。 choco uninstall rsyncを実行した後、SSHが再び機能しました。

3
Bouke Versteegh

Windows 7でも同様の問題が発生していました。HOME環境変数が正しく設定されているようです。

$ echo $HOME
C:\Users\craibuc

ただし、テストgithubのsshアクセスに接続しようとして失敗しました:

$ ssh -Tv [email protected]
OpenSSH_6.6.1, OpenSSL 1.0.1i 6 Aug 2014
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
Could not create directory 'C/.ssh'.
debug1: identity file C/.ssh/id_rsa type -1
debug1: identity file C/.ssh/id_rsa-cert type -1
debug1: identity file C/.ssh/id_dsa type -1
debug1: identity file C/.ssh/id_dsa-cert type -1
debug1: identity file C/.ssh/id_ecdsa type -1
debug1: identity file C/.ssh/id_ecdsa-cert type -1
debug1: identity file C/.ssh/id_ed25519 type -1
debug1: identity file C/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
The authenticity of Host 'github.com (192.30.252.129)' can't be established.
RSA key fingerprint is xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the Host to the list of known hosts (C/.ssh/known_hosts).
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: C/.ssh/id_rsa
debug1: Trying private key: C/.ssh/id_dsa
debug1: Trying private key: C/.ssh/id_ecdsa
debug1: Trying private key: C/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

何らかの理由で、sshC/.sshにアクセスしようとしました。

setx HOME /c/users/craibucを使用して変数を設定し、シェルを再起動すると、接続できました。

$ ssh -T [email protected]
Warning: Permanently added the RSA Host key for IP address '192.30.252.130' to the list of known hosts.
Hi craibuc! You've successfully authenticated, but GitHub does not provide Shell access.
2
craig

ドメインポリシーを設定したマシンを使用して、ユーザープロファイルをネットワークドライブ(この場合はZ:にマッピング)に設定すると、同じ種類の問題が発生しました。

Powershellから何かをしようとすると、このようなメッセージが表示されます。 home PATH変数の設定は役に立ちませんでした。

git clone ssh://[email protected]:1234/myproject
Cloning into 'myproject'...
Could not create directory '/z/.ssh'.
The authenticity of Host '[mydomain.com]:1234 ([1.1.1.1]:1234)' can't be established.
RSA key fingerprint is 00:11:22:33:$4:55:66:77:88.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the Host to the list of known hosts (/z/.ssh/known_hosts).
Permission denied (publickey).

Please make sure you have the correct access rights
and the repository exists.

Git bashからクローンを作成したときは、/z/.sshなどがシェルからZ:\.sshを指す有効な方法であるため、問題ありませんでした。

0
nathanchere

ln -s /c/Users/rofrol/.ssh /home/rofrol/私のために働いた。

これはしませんでした:

$ echo $HOME
/c/Users/rofrol

$ cat ~/nsswitch.conf
db_home: /c/Users/rofrol

$ cat /home/rofrol/nsswitch.conf
db_home: /c/Users/rofrol

$ cat /etc/nsswitch.conf
# Begin /etc/nsswitch.conf

passwd: files db
group: files db

db_enum: cache builtin

#db_home: cygwin desc
db_home: /c/Users/rofrol
db_Shell: cygwin desc
db_gecos: cygwin desc

# End /etc/nsswitch.conf

おそらくこれが原因です:

SSHには/ home/$ USERが必要です

https://github.com/git-for-windows/git/issues/736#issuecomment-215123009

0
rofrol