2台のコンピュータをSSHで接続するチュートリアルはたくさん見つかりましたが、肝心なところがわかりません。(例えばこれですまたはこれです)
私が ipv4 xxx.xxx.x.xx のユーザーAで、ipv4 yyy.yyy.y.yy の友人(別の国にいる)ユーザーBとssh接続したいとします。
それで、私は ssh キーを生成し、./ssh/id_rsa と ./ssh/id_rsa.pub を持っていて、それを友人のコンピューターにコピーする必要があるのでしょうか?
しかし、予想通り、
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
動作していません (まだ境界が設定されていないのに、どうして動作できるのでしょうか?)
ユーザーB はこのファイルを自分の .ssh ファイルに手動でコピーする必要がありますか?
そして私のコンピューターで
直接動作しますか?(これは非常に非現実的だと思います...)
愚かなことを言って申し訳ありませんが、チュートリアルでは、人々が同じコンピューターを扱っているように見えます...
答え1
それで、私は ssh キーを生成し、./ssh/id_rsa と ./ssh/id_rsa.pub を持っていて、それを友人のコンピューターにコピーする必要があるのでしょうか?
はい、具体的には、ファイル (公開キー) をリモート システムのファイルにコピーする必要があります。~/.ssh/id_rsa.pub
~/.ssh/authorized_keys
(ただし、あなた自身の友人の「userB」アカウントを共有するのではなく、ターゲット マシン上のユーザー アカウントを共有します。
[ssh-copy-id] が機能していません (まだ境界が設定されていないのに、どうして機能するのでしょうか?)
通常、それはパスワードの入力リモート システムにログインします。(SSH は、ローカル ログインと同じ「システム」アカウントとパスワードを使用します。)
ここでのSSHの特徴は、クライアントが複数のログイン方法から選択できることです。のみキーペアベース。(Web サイトでパスワードでのログイン、Google でのログイン、USB トークンでのログインなどが可能になるのと似ています。)
もちろん、リモートシステムにすでにパスワードベースのログインがある場合は無効(これは今日ではある程度必須となっています)、ssh-copy-id は実際には何もないところから機能することはできず、他の方法で公開鍵をサーバーの「authorized_keys」ファイルにコピーする必要があります。
幸いなことに、公開鍵はただの長いテキストなので、メールやDiscordなどで貼り付けることができます。(RSA鍵は長いですがssh-keygen -t ed25519
、多くのid_ed25519.pub は短く、いざというときには紙に書き留めることもできます。
(ただし、そのような状況でも、ssh-copy-idはそのまま残ります。技術的にすでに 1 つのキー ペアが動作していて、それを使用して別のキー ペアを登録する場合に便利です。3 番目の代替手段は、主に企業/趣味の環境で使用されている Kerberos ベースのログインです。
そして私のコンピュータ上で直接動作するのでしょうか? (これは非常に非現実的だと思います...)
ssh [email protected]
具体的には、SSH 部分は機能します。
ただし、SSH は魔法のように NAT を通過するわけではなく、自動的に「ポート転送」を設定することもないので、友人の自宅のコンピュータにアクセスする必要がある場合は、別途行う必要があります (SSH は TCP ポート 22 を使用します)。同様に、ファイアウォールがある場合は、SSH を許可するルールが必要になります。
それでそれssh y.y.y.y
動作する前に対処する必要があります。
(ほとんどの SSH チュートリアルでは、ホーム NAT については取り上げていません。これは非常に一般的なもので、厳密には SSH セットアップの一部ではないためです。誰かが IPv4 経由でホーム ネットワークへの接続を許可したい場合、ポート転送とは何か、どのように構成する必要があるかをすでに知っているものと想定されています。SSH や Minecraft、BitTorrent などでこれを行うことに違いはありません。
また、多くの SSH チュートリアルは、開発者や、一般的には独自のパブリック IPv4 アドレスを持つ VPS に接続したい人を対象としています。これは、友人の PC に接続しようとする場合とは少し異なります。
答え2
公開鍵認証が機能するには、公開鍵(id_rsa.pub
)をターゲットユーザーの に追加する必要があります~/.ssh/authorized_keys
。公開鍵をどうやって取得するかはSSHには関係ありません。自分で考えなければなりません。整合性が保証される限り、任意の媒体を使用できます(つまり、受信者が受信したものが送信したものと一致することを確認できる)。秘密である必要はありません。公共キー。秘密キー ( id_rsa
) はコンピュータ上に残ります。
では、そのポイントは何でしょうかssh-copy-id
? 使用例は 2 つあります。
パスワード認証が有効になっており、公開鍵認証を有効にしたいとします。この場合、ホスト B に接続するためにパスワードを入力し、
ssh-copy-id
公開鍵を に追加する必要がありますauthorized_hosts
。公開鍵認証はすでに設定されていますが、より強力な暗号化や異なる暗号化など、別の鍵を追加したいとします。特に、自分や現在のホストに属さない鍵を追加したい場合があります。この場合、 オプションを使用してキーファイルを指定します
-i
。(デフォルトでは、 によって提供されたすべての鍵が追加されます。鍵がない場合は、ssh-add -L
その鍵が追加されます。)id_rsa.pub
すでにパスワード認証が設定されている場合に、公開鍵認証を使用するのはなぜでしょうか? 推測不可能であり、ユーザーの操作を必要としないからです。