web-dev-qa-db-ja.com

複数のマシン間で同じSSH秘密鍵を使用する

2つの異なるLinuxマシンからアクセスしたいGithubリポジトリがあります。

最初のマシンでは、SSHキーを生成するために Githubの指示 に従い、結果の公開キーをGithubに追加しました。このクライアントは正常に動作します。

2番目のクライアントでは、/home/{user}/.ssh/id_rsa最初のクライアントからのファイル。これで十分だと思ったのですが、接続しようとすると「アクセスが拒否されました(公開鍵)」と表示されました。

何が欠けていますか?

26
Yarin

同じSSHキーが複数のクライアントから使用できる必要があります。ネットワークごとに異なるSSHキーがあり、それらは実際には暗号化されたUSBドライブに保存されており、複数の異なるコンピューターから問題なく使用しています。

SSHはファイル権限について非常にうるさいので、最初に/home/{user}からid_rsaファイル自体までのすべての権限を確認します。

SSHはグループまたは世界の書き込み権限を実際には考慮しません。そのため、ホームディレクトリにはchmod go-wを、スターターには~/.sshディレクトリを必ず使用してください。また、それらがあなたのユーザーchown ${USER}:${USER}によって所有されていることも確認します。

SSHキー自体については、chmod 600それらを...

必要に応じて、別のSSH質問のSSHキーを answer で管理する方法に関する追加情報があります。

35
Jeremy Bouse

Githubの側から拒否された権限を取得している場合は、コピーされたSSHキーファイルではなく、システムのデフォルトを取得している可能性があります。これを回避する簡単な方法は、~/.ssh/configファイルを作成し、次のように記述します。

Host github.com
  Hostname      github.com
  User          git
  IdentityFile  ~/.ssh/yourkeyfile

これにより、SSHクライアントはgithub.comに対してのみそのキーを使用するようになります。

お役に立てれば。

7
vmfarms

これは古いことはわかっていますが、publicキーを2番目のクライアントにコピーする必要があることも指摘しておきます

(またはssh-keygen -y -f〜/ .ssh/id_rsa_ ..>〜/ .ssh/id_rsa ... pubで再計算します)

[1]から:

  1. 公開鍵認証方式:「publickey」

    必要な認証「メソッド名」は「公開鍵」のみです
    認証。すべての実装はこのメソッドをサポートする必要があります。
    しかし、すべてのユーザーが公開鍵を持っている必要はなく、ほとんどのローカル
    ポリシーはすべての人に公開鍵認証を要求する可能性は低い
    近い将来のユーザー。

    この方法では、秘密鍵の所持が
    認証。 このメソッドは、作成された署名を送信することで機能します
    ユーザーの秘密鍵を使用します。サーバーはその鍵を確認する必要があります
    はユーザーの有効なオーセンティケーターであり、
    署名は有効です。両方が成立する場合、認証リクエストは
    受理。それ以外の場合は、拒否する必要があります。サーバーが
    認証が成功した後、追加の認証が必要です。

Sshクライアントは、公開鍵(上記の太字で示された署名)をサーバーに送信することで認証を開始します。サーバーは、公開鍵が承認済みの鍵である場合、ランダムなセッションIDをクライアントに送り返します。次に、クライアントはそのセッションIDを秘密鍵でエンコードし、それをサーバーに送り返します。サーバーは、公開鍵を使用してそのセッションIDをデコードし、元のセッションIDと一致する場合は、クライアントを認証します。

[1] [ http://www.openssh.org/txt/rfc4252.txt] [1]

2
Jacob Church

それはおそらく、2番目のクライアントでファイルの権限をコピーしなかったためです。
しかし、秘密鍵はprivateです。正しい方法は、2番目のクライアントで新しい秘密鍵を作成し、その公開鍵をGithubに追加することです

0
radius