2つの異なるLinuxマシンからアクセスしたいGithubリポジトリがあります。
最初のマシンでは、SSHキーを生成するために Githubの指示 に従い、結果の公開キーをGithubに追加しました。このクライアントは正常に動作します。
2番目のクライアントでは、/home/{user}/.ssh/id_rsa
最初のクライアントからのファイル。これで十分だと思ったのですが、接続しようとすると「アクセスが拒否されました(公開鍵)」と表示されました。
何が欠けていますか?
同じSSHキーが複数のクライアントから使用できる必要があります。ネットワークごとに異なるSSHキーがあり、それらは実際には暗号化されたUSBドライブに保存されており、複数の異なるコンピューターから問題なく使用しています。
SSHはファイル権限について非常にうるさいので、最初に/home/{user}
からid_rsa
ファイル自体までのすべての権限を確認します。
SSHはグループまたは世界の書き込み権限を実際には考慮しません。そのため、ホームディレクトリにはchmod go-w
を、スターターには~/.ssh
ディレクトリを必ず使用してください。また、それらがあなたのユーザーchown ${USER}:${USER}
によって所有されていることも確認します。
SSHキー自体については、chmod 600
それらを...
必要に応じて、別のSSH質問のSSHキーを answer で管理する方法に関する追加情報があります。
Githubの側から拒否された権限を取得している場合は、コピーされたSSHキーファイルではなく、システムのデフォルトを取得している可能性があります。これを回避する簡単な方法は、~/.ssh/config
ファイルを作成し、次のように記述します。
Host github.com
Hostname github.com
User git
IdentityFile ~/.ssh/yourkeyfile
これにより、SSHクライアントはgithub.comに対してのみそのキーを使用するようになります。
お役に立てれば。
これは古いことはわかっていますが、publicキーを2番目のクライアントにコピーする必要があることも指摘しておきます
(またはssh-keygen -y -f〜/ .ssh/id_rsa_ ..>〜/ .ssh/id_rsa ... pubで再計算します)
[1]から:
公開鍵認証方式:「publickey」
必要な認証「メソッド名」は「公開鍵」のみです
認証。すべての実装はこのメソッドをサポートする必要があります。
しかし、すべてのユーザーが公開鍵を持っている必要はなく、ほとんどのローカル
ポリシーはすべての人に公開鍵認証を要求する可能性は低い
近い将来のユーザー。この方法では、秘密鍵の所持が
認証。 このメソッドは、作成された署名を送信することで機能します
ユーザーの秘密鍵を使用します。サーバーはその鍵を確認する必要があります
はユーザーの有効なオーセンティケーターであり、
署名は有効です。両方が成立する場合、認証リクエストは
受理。それ以外の場合は、拒否する必要があります。サーバーが
認証が成功した後、追加の認証が必要です。
Sshクライアントは、公開鍵(上記の太字で示された署名)をサーバーに送信することで認証を開始します。サーバーは、公開鍵が承認済みの鍵である場合、ランダムなセッションIDをクライアントに送り返します。次に、クライアントはそのセッションIDを秘密鍵でエンコードし、それをサーバーに送り返します。サーバーは、公開鍵を使用してそのセッションIDをデコードし、元のセッションIDと一致する場合は、クライアントを認証します。
それはおそらく、2番目のクライアントでファイルの権限をコピーしなかったためです。
しかし、秘密鍵はprivateです。正しい方法は、2番目のクライアントで新しい秘密鍵を作成し、その公開鍵をGithubに追加することです