2

Linux Mint 13 を実行しているデスクトップで、ローカルの git リポジトリを初期化しました。Assembla のリポジトリにプッシュするには、ssh キーが必要です。

まず、ターミナルで新しいキーを生成しようとします。

$ ssh-keygen -t rsa

応答は次のとおりです。

Enter file in which to save the key (/home/ryan/.ssh/id_rsa):

「gitrep」を試してみました。次に、次のメッセージが表示されます。

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

私が知る限り、それらはオプションであるため、空白のままにしましたが、記録のために、パスフレーズを追加しても結果は変わりません。それで...

Your identification has been saved in gitrep.
Your public key has been saved in gitrep.pub.
The key fingerprint is:
da:80:b9:c5:cd:50:9c:1c:49:7f:b7:db:71:92:1e:6a ryan@ryan-MS-7309
The key's randomart image is:
+--[ RSA 2048]----+
|       +++       |
|       .=.       |
|      .   . . .  |
|     + +   . . o |
|    o + S     =..|
|     o +     o =o|
|    . . .   E o .|
|           .     |
|                 |
+-----------------+

ここで、home/ryan/.ssh/id_rsa に移動します。フォルダーは空ですが、これは奇妙なことです。追加するキーに同じファイル名を使用して上記のプロセスをもう一度やり直すと、次のようになります。

gitrep already exists.
Overwrite (y/n)?

何が起こっているのかわかりません。

私の質問の次の部分は、この生成されたファイルで何をすべきかです。私はそれをそのままにしておきますか?そこから情報を Assembla のどこかにコピーしますか?

あまり詳しくないため、実際のプロセスに沿っていないような質問をした場合は、あらかじめお詫び申し上げます。

4

3 に答える 3

2

と入力しているだけなのでgitrep、現在のディレクトリに保存するだけです(上記の例から判断すると、これは明らかにホームディレクトリです)。

~/gitrepおよびが存在するかどうかを確認し~/gitrep.pubます。gitrep.pub公開鍵の入力を求められたら、ファイルの内容をコピー先にコピーする必要があります。

于 2013-07-20T05:37:41.147 に答える
1

このステップにいるとき:

「キーを保存するファイルを入力してください (/home/ryan/.ssh/id_rsa):」

デフォルトを受け入れて、キーをホーム ディレクトリ (/home/ryan) の .ssh フォルダーに id_rsa として保存する必要があります。次に、公開鍵は /home/ryan/.ssh/id_rsa.pub にあります <--- この鍵は、Assembla アカウントにアップロードする鍵です。

これで、ssh キーがデフォルトの場所に保存されたので、それを利用するために他に何もする必要はありません。

Assembla アカウントにアップロードすると、git clone できるようになります。

git クローン git@git.assembla.com:repo_name

「gitrep」と答えると、このファイルのキーが現在のディレクトリに保存されます。ホーム ディレクトリ (/home/ryan) を想定しています。

于 2013-07-20T07:21:17.960 に答える
1

元のポスターには次のように記載されています(強調は私のものです):

次に、次のメッセージが表示されます。

Enter passphrase (empty for no passphrase):  
Enter same passphrase again:

私が知る限り、それらはオプションであるため、空白のままにしましたが、記録のために、パスフレーズを追加しても結果は変わりません

失礼ですが同意できません。 パスフレーズを追加すると秘密鍵が暗号化されるため、誰かがあなたの秘密鍵ファイルをコンピューターから盗んだとしても、復号化するパスフレーズがなければ、そのファイルを読み取って使用することはできません。

パスフレーズの追加はオプションですが、それでも強くお勧めします。

違いを説明するために、暗号化されていない秘密鍵ファイルの内容 (パスフレーズなし) が次のようになっているとしましょう(例はSSH 秘密鍵ファイルのセキュリティの向上から引用)

-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEArCQG213utzqE5YVjTVF5exGRCkE9OuM7LCp/FOuPdoHrFUXk
y2MQcwf29J3A4i8zxpES9RdSEU6iIEsow98wIi0x1/Lnfx6jG5Y0/iQsG1NRlNCC
aydGvGaC+PwwWiwYRc7PtBgV4KOAVXMZdMB5nFRaekQ1ksdH/360KCGgljPtzTNl
09e97QBwHFIZ3ea5Eih/HireTrRSnvF+ywmwuxX4ubDr0ZeSceuF2S5WLXH2+TV0
    ... etc ... lots of base64 blah blah ...
-----END RSA PRIVATE KEY-----

秘密鍵に保存されているこの値を使用して、公開鍵を与えた第 2 のパーティ (この場合は Assembla) に自分自身を偽装することができます。これは基本的に、ハッカーがあなたのアカウントのパスワードを盗み、それを使用してあなたとしてログインしたかのようです... SSH の世界では、これはそれに相当します。

ここで、上記と同じ秘密鍵をパスフレーズで暗号化した場合、ファイルの内容は次のようになると仮定しましょう (これもSSH 秘密鍵ファイルのセキュリティの向上から改作):

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,D54228DB5838E32589695E83A22595C7

3+Mz0A4wqbMuyzrvBIHx1HNc2ZUZU2cPPRagDc3M+rv+XnGJ6PpThbOeMawz4Cbu
lQX/Ahbx+UadJZOFrTx8aEWyZoI0ltBh9O5+ODov+vc25Hia3jtayE51McVWwSXg
wYeg2L6U7iZBk78yg+sIKFVijxiWnpA7W2dj2B9QV0X3ILQPxbU/cRAVTd7AVrKT
    ... etc ...
-----END RSA PRIVATE KEY-----

内容が暗号化されていないファイルとどのように異なるかがわかりますか? これにより、たまたま秘密鍵を盗んだ人は、秘密鍵を暗号化解除して暗号化されていない形式に戻すパスフレーズを持っていない限り、役に立たなくなります。

これが、GitHub がWhy you need a passphrase for your private SSH key に与える理由です。

パスワードはあまり安全ではありません。これはすでにご存知のとおりです。覚えやすいものを使用すると、推測や総当りが容易になります。ランダムなパスワードを使用すると、覚えにくくなるため、パスワードを書き留める傾向があります。これらはどちらも Very Bad Things™ です。これが、ssh キーを使用している理由です。

しかし、パスフレーズなしでキーを使用することは、基本的にはランダムなパスワードをコンピュータ上のファイルに書き留めることと同じです。ドライブにアクセスできる人は誰でも、そのキーを使用するすべてのシステムにアクセスできます。これは、Very Bad Thing™ でもあります。解決策は明らかです。パスフレーズを追加します。

同じヘルプ記事で、*nix ユーティリティssh-agentを使用して、端末セッション中にパスフレーズを自動的に保存する方法を説明しています。これにより、秘密鍵を使用して SSH 要求を行うたびにパスフレーズを入力し続ける必要がなくなります。

于 2013-07-20T06:16:58.150 に答える