サーバーに SSH 接続しているときにリポジトリを git clone するには、秘密の SSH キーをサーバーに保存しておく必要がありますか?

サーバーに SSH 接続しているときにリポジトリを git clone するには、秘密の SSH キーをサーバーに保存しておく必要がありますか?
  1. ローカルマシンで SSH キーを生成しました。

  2. 次に、次のコマンドを使用して公開キーをサーバーにコピーしました。ssh-copy-id username@remote_hostこれはスムーズに進みました。

  3. ローカル マシンの が~/.ssh/id_rsa.pubのサーバーにコピーされたことを確認しましたmy_user's_home_directory/.ssh/authorized_keys。他のファイルはありません。

  4. 同じ公開鍵を Gitlab にもコピーしました。

  5. git cloneサーバーにリポジトリを作成しようとすると、次のメッセージが表示されます。

[email protected]: Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
  1. 私は簡単に自分のサーバーに ssh で接続できます。しかし、私のサーバーは秘密鍵を保持していないので、ssh git clone ができないのは当然だと思います。ここでの通常の手順は何ですか? 通常の https ダウンロードを実行できますが、これが標準的なルートですか?

答え1

リモート ホストに ssh-agent を転送するために使用することができssh -A、リモート ホストはキー自体を送信せずに、リモート サーバーからのローカル キーを使用します。

これは安全な選択肢のように思えますが、これを行うのはリモートサーバーを絶対に信頼する場合(つまり、デフォルトではこれを有効にしないでください)。転送された ssh-agent は、あなたと同じリモート ユーザーまたは root 権限を持つすべてのユーザーが使用できます。

ssh-add -cその方法を選択する場合は、キーが使用されるときに確認のプロンプトが表示されるように、エージェントにキーを追加することをお勧めします。

答え2

git は分散化されています。Gitlab から PC にフェッチし、PC からサーバーにプッシュできます。どちらの場合も ssh クライアントは PC であるため、秘密鍵または転送エージェントはサーバーに触れません。

または、複数の SSH キーを持つこともできます。PC 用に個人用のキー、サーバー用に別のキー。管理するキーは増えますが、サービス アカウント スタイルで個別に監視および制御できます。

または、git を展開ツールとして使用しないでください。パッケージまたはその他のアーカイブを生成し、他のソフトウェアと同じようにインストールします。

関連情報