sshキーを別のマシンにコピーして、そこでGitHubを使用できるようにしますか?


12

リモートサーバーがあります。私はすでにそのリモートサーバーに正常にsshできます-私のキーはauthorized_keysリモートサーバーにあります。

次に、GitHubからそのリモートサーバーに直接プルしたいと思います。しかし、リモートサーバーでpermission denied (publickey)試してみると取得ssh -T git@github.comできます。

id_rsa.pubローカルマシンからリモートサーバーに直接コピーする必要がありますか、それとも危険ですか?

これが答えである場合、それを行う最良の方法は何ですか?

または、リモートサーバーで新しい公開キーを生成し、それをgithubアカウントに追加する必要がありますか?

更新:

詳細なsshからの出力は次のとおりです。

~$ ssh -Tv git@github.com
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

サーバーのIPアドレスを使用してsshエージェント転送を設定しようとしました:developer.github.com/guides/using-ssh-agent-forwardingしかし、私はまだPermission denied (publickey)リモートマシンに乗っています。
リチャード

1
sshコマンドには詳細なオプションがあります。実際にどのキーファイルを試行しているのかがわかると思います。
オールマン

回答:


4

id_rsa.pubそれへの本当の危険なしにどこにでもコピーすることができます。これは公開鍵であり、このようなものを対象としています。これはキーペアの半分であり、アクセスしたい場所と共有することで、秘密キーを機能させることができます。

リモートログインを許可するには、公開キーをauthorized_keysauthorized_keys2一部のシステムで)リストする必要があります。この形式の各行に1つのキー:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

これを実現するには、コピーした後、次のauthorized_keysようにファイルに追加します。cat id_rsa.pub >> ~/.ssh/authorized_keys

ほとんどの健全なシステムは、.sshフォルダにあまりにもゆるい権限がある場合、キーベースのログインの使用を許可することをco病に拒否します。フォルダはである必要があります700ので、まだ問題がある場合:chmod 700 ~/.ssh

さらに、.sshフォルダー内のファイルは600である必要があります。chmod 600 ~/.ssh


編集1:

ファイル自体id_rsa.pubは、リモートサーバー上では必須ではありません。の一部としてのコンテンツのみauthorized_keysssh -vT git@github.com詳細なログを有効にするために実行することをお勧めします。これにより、どのアクセス許可が問題を示しているかを正確に確認できます。

編集2:

これは、提供されたキーのいずれも、リモートサーバーがファイルに保持しているものと一致しないことを意味します。見たいものは次のようなものです。

debug1: Offering RSA public key: /home/jarmund/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535

確認事項:

  • 秘密鍵の1つが、リモートに追加した公開鍵と一致することを確認してください authorized_keys
  • キーがログインしようとしているユーザー名と一致することを確認します(公開キーの最後の部分でなければなりません)
  • 名前authorized_keysを変更してみてくださいauthorized_keys2

ありがとう。私の公開鍵は~/.ssh/authorized_keysリモートサーバーにリストされています-私はそれを使用して追加しましたcat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys"。次に、リモートとRANにsshed ~$ chmod 700 ~/.ssh し、$ chmod 600 ~/.ssh/authorized_keysまだ取得Permission denied (publickey)、私はgithubのにsshをしようとします。id_rsa.pubファイル全体をリモートマシンにもコピーする必要がありますか?
リチャード

@Richardファイル自体は必要ありません。必要な場合に備えて、.sshフォルダーに保管したいのですが。しかし、それは必須ではありません、それはただ私がすることです。ssh質問で説明されているコマンドを-vスイッチで実行して、sshが苦情を出している権限を正確に確認することをお勧めします。
ジャームンド

編集2に感謝します。最初の箇条書きの方法がわからないcheck that one of the private keys...--ここで何をすべきですか?
リチャード

ポイント2で、キーは私のG​​itHubユーザー名と一致する必要がありますか?似ていないようです:)
リチャード

問題は、この同じ公開キーを使用して、ローカルマシンからGitHubにsshしてプルできることです。したがって、GitHubは大丈夫だと思わなければなりません...?
リチャード

2
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

デバッグトレースによると、これらのキーファイルは実際にはローカルシステムに存在せず、sshは実際にはリモートサーバーにキーを提供しませんでした。使用するキーが実際にsshを実行しているホストに存在し、ファイルの名前が正しいことを確認してください。デフォルトファイルの1つ以外のキーファイルを使用する場合は、sshコマンドラインで指定する必要があります。

ssh -i /path/to/some_key -Tv git@github.com

キーファイルは、githubにsshしようとしているリモートサーバーには存在しませんが、にありますauthorized_keys。これで十分ですか、それともそこにキーファイルをコピーする必要がありますか?
リチャード

1
authorized_keys以下のためにある公共のために受理されるキーの着信接続。別のホストへの発信接続を行うには、秘密鍵ファイルのコピーが必要です。そのため、sshを実行しているホスト上にこれらのキーファイル(id_rsaなど)の1つが存在する必要があります。
ケンスター

-iフラグは問題の解決に役立ちました!sshフォルダーを別のコンピューターにコピーし、リモートgitを使用しようとしましたが、拒否されました。-iはその日を救った!
pauljohn32

2

サーバーはGithubの認証に秘密キーを必要とします。公開キーは、その名前が示すように、公開されていると見なされるため、認証に十分ではありません。

ssh経由で接続せずにリモートサーバーでGithubを使用する必要がない場合は、ssh-agent転送を使用する必要があります。そのためのガイドは、Githubの上で提供されています:https://developer.github.com/guides/using-ssh-agent-forwarding/

それ以外の場合は、新しいキーを生成してアカウントにリンクする必要があります。


0

コマンドを直接入力できます。

$ cat〜/ .ssh / id_rsa.pub

sshキーが既に存在する場合は、それが表示されます。それ以外の場合はエラーになります。新しいキーを追加する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.