ローカルマシンで SSH キーを生成しました。
次に、次のコマンドを使用して公開キーをサーバーにコピーしました。
ssh-copy-id username@remote_host
これはスムーズに進みました。ローカル マシンの が
~/.ssh/id_rsa.pub
のサーバーにコピーされたことを確認しましたmy_user's_home_directory/.ssh/authorized_keys
。他のファイルはありません。同じ公開鍵を Gitlab にもコピーしました。
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.
- 私は簡単に自分のサーバーに 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 を展開ツールとして使用しないでください。パッケージまたはその他のアーカイブを生成し、他のソフトウェアと同じようにインストールします。