![git が ssh 構成ファイルで設定された ID を使用しないのはなぜですか?](https://rvso.com/image/726408/git%20%E3%81%8C%20ssh%20%E6%A7%8B%E6%88%90%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%20ID%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F%20.png)
ローカルに接続しようとしていますギテアサーバー。ポート 2222 の統合 SSH サーバーを使用するように設定しました。Windows を実行しています。Gitea は正常に動作しています。
今、私は接続したいCygwin の gitリポジトリへの接続をテストするために、ls-リモートコマンドは、GIT_SSH_COMMAND
次のようなオプション:
GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa" git ls-remote --exit-code -h ssh://username@localhost:2222/username/Repo.git
次に、以下を使用して生活を簡素化したいと思います~/.ssh/config
。
host gitea
HostName localhost
Port 2222
IdentityFile ~/.ssh/id_rsa
User username
ただし、これはエラーで失敗しますUnable to open connection
:
git ls-remote --exit-code -h ssh://gitea/username/Repo.git
問題:IdentityFile
適用されません。これは機能します:
GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa" git ls-remote --exit-code -h ssh://gitea/username/Repo.git
~/.ssh/config
ただし、直接接続すると機能するので、私の方法が正しいことは確かですssh -vv gitea
。出力 (抜粋):
[...]
debug1: Connecting to localhost [::1] port 2222.
debug1: Connection established.
[...]
debug1: Offering public key: RSA SHA256:XXX /home/username/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug2: input_userauth_pk_ok: fp SHA256:XXX
debug1: Authentication succeeded (publickey).
Authenticated to localhost ([::1]:2222).
[...]
では、なぜfrom をgit
使用しないのでしょうか?IdentityFile
~/.ssh/config
答え1
設定だけで十分であることがわかりましたGIT_SSH_COMMAND="ssh"
。これは、git
別の SSH クライアントを使用していたことを意味します。おそらく、システム パスにあった OpenSSH のクライアントでしょう。
$ whereis ssh
ssh: /usr/bin/ssh.exe /cygdrive/c/WINDOWS/System32/OpenSSH/ssh.exe /usr/share/man/man1/ssh.1.gz
export GIT_SSH_COMMAND="/usr/bin/ssh"
追加することで問題を修正しました~/.bash_profile