絶対の初心者のためのSSHキー認証


SSH Onlineにはたくさんの記事がありますが、私が学んでいた時は初心者に優しいと感じました.ここで私の目標は、SSHの基本的な理解を提供するために、十分な情報をあなたのSSHキーを作成し、サーバーに接続します.私は最小限に専門用語を維持しようとして基本に固執した.

何が正確にsshですか?
Techopedia

Secure Shell (SSH) is a cryptographic protocol and interface for executing network services, shell services and secure network communication with a remote computer. Secure Shell enables two remotely connected users to perform network communication and other services on top of an unsecured network.


しかし、それは本当に何ですか?
基本的には、SSHは別のコンピュータやサービスにコンピュータを接続する方法です.認証方法の広い範囲(source)があります、しかし、通常、人々がSSHを通して何かに接続することについて話すとき、彼らは公開鍵認証を参照しています.
SSHの公開鍵認証を使用すると、ログインしていくつかのサービスに接続するユーザー名とパスワードを使用しているようですが、より便利な(あなたの資格情報を毎回入力する必要はありません)と安全.
たとえば、リモートコンピューターを使用して資格情報(SSHキーと呼ばれる)を登録すると、そのコンピューターをターミナルを使用してアクセスできます.接続するときは、リモートコンピュータの端末を使用しているかのように端末を使用し、同じコマンドを実行することができます(cdまたはlsなど).
では、SSHキーはどのように動作しますか?

どのようなsshキーですか?
SSHキーは、公開鍵と秘密キーという1組のキーで構成されます.
このarticleは私が見たこのトピックの最も直観的な説明を持っているので、私はそれを非常に推薦します.
  • Think of a public key as being the lock. It’s not actually a key, it’s a padlock you can make lots of copies of and distribute wherever you want. For example, if you want to put your ‘padlock’ on an ssh account on another machine, you would copy it to ‘authorized_keys’ in the ~/.ssh folder. You’ve setup the padlock.
  • Think of a private key as being the actual key. This is what you use to open the padlock that is stored on the other machine. Just like a regular key you keep it secret, safe, and out of the wrong hands.

ここで最も重要な隠れ家は、あなたの秘密鍵を決して共有しないでください.
あなたがそうするならば、誰でもあなたであるふりをすることができます.
sshの1つの一般的な使い方はgithubに接続することです.ほとんどの人はおそらく、この状況には、彼らが始めている実行します.GTITUBにSSHキーを追加するまでは、ユーザー名とパスワードを入力する必要がありますいくつかのコードをプッシュするたびに.しかし、一旦あなたがあなたの公開鍵(Padlock)をGitHubに加えて、あなたの秘密鍵(キー)をssh-agent(基本的に各々のキーを1つずつしようとする鍵管理者)で登録したならば、あなたは自動的に認証されて、もはやあなたの資格情報を入力しなければなりません.
あなたがまだこれをしていないならば、ギタブのguideはそれを通してあなたを歩きます.
どのように、キーは実際に働きますか?私たちはここで詳細には行きません、しかし、私はこのarticleがそれをよく説明すると思います(「クライアント」はあなたのコンピュータです、そして、「サーバー」はリモートコンピュータ/サービスです).

When a client attempts to authenticate using SSH keys, the server can test the client on whether they are in possession of the private key. If the client can prove that it owns the private key, a shell session is spawned or the requested command is executed.



キーの生成
コンピュータは自動生成されたキーで来ませんssh-keygenというコマンドを使用しなければなりません.詳細は、以前に述べたGithubのguideを参照することができます.
鍵生成についてのいくつかの質問
  • Q .私はそれぞれのサーバ/サービスの異なるキーペアをssh-keygenにする必要がありますか、または私はどこにでも同じキーを使用できますか?
    A .同じキーを使用できます.別々の目的地のために別々のキーを持つことは、認証展望からそれをより安全にしません.(source)

  • Q .複数のコンピュータを持っています.つのデバイスから別のキーをコピーし、それらを共有したり、各コンピュータの新しいものを生成する必要がありますか?
    A .技術的にどちらかを行うことができますが、後者のアプローチをお勧めします.私は仕事のコンピュータと個人的なものがありますが、彼らは別のキーを持っています.
  • 同じキーを共有する
    あなたがサービスにアクセスするためにすべての装置のために1つのキーを登録しなければならないだけであるので、
  • [ PRO ]はより便利です.
  • [注]あなたのデバイスのいずれかが盗まれ、キーが妥協した場合、すべてのデバイスのキーが侵害される.
  • それぞれのコンピュータに異なるキーを使用する
  • [ pros ]デバイスの1つが盗まれたとしても、特定のキーを認証キーのリストから削除することができます.また、あなたのコンピュータのどのアクセスを持って制御することができます.
  • [コン]複数のデバイスをサービスに接続できるようにするには、複数のsshキーを手動で登録しなければなりません.
  • Q .私のキーはどこに格納され、どのように私はそれらを見ることができますか?
    A .デフォルトの設定を使用している場合、キーはおそらく~/.sshに保存されます.下記のコマンドの最初の行を端末で試してみてください.もしそうなら、そのファイルはssh-rsaと呼ばれます.あなたの秘密鍵はid_rsa.pubと同じディレクトリに保存されるべきです.
  • cat ~/.ssh/id_rsa.pub # public key
    cat ~/.ssh/id_rsa # private key
    
    source
    SSH経由でサーバーに接続する方法
    SSHキーを生成したら、アクセスするサーバーに公開鍵をコピーする必要があります.これはid_rsaと呼ばれるコマンドで行うことができます.あなたが詳細を必要とするならば、SSHの公式 は詳細をカバーします.
    ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
    
    その後、リモートサーバにアクセスしたい場合は、このコマンドを端末から行うことができます.
    ssh [email protected]
    
    例えば、私の会社にはサーバーがあります.と言いましょう.私のユーザ名はssh-copy-idです.コマンドは以下のようになります.
    あなたが初めてそのサーバーに接続しているならば、あなたは接続を続けるためにcompanyserver.comに入るrisaのようなプロンプトが最も見られるでしょう.
    sshのデフォルトポートはssh [email protected]です.別のポートに接続する必要がある場合は、The authenticity of host 'companyserver.com' can't be established. ECDSA key fingerprint is <long string>. Are you sure you want to continue connecting (yes/no)?オプションのようにyesオプションを追加することでできます.
    guide
    コンピュータとリモートサーバー間のファイルをコピー22を使用して
    sshを使う便利なコマンドについて教えてください.端末の-pコマンドに精通しているかもしれません.そして、それはあなたがあなたのコンピュータの中にファイルをコピーして、それを名前変更することができます.
    cp original_folder/file_name new_folder/new_file_name
    
    は、リモートサーバーにこれを行うことができるようなコマンドです.言い換えれば、それはあなたがアップロードしてファイルをリモートでダウンロードすることができます.
    scp file [email protected]:path # upload to remote server
    scp [email protected]:file path # download from remote server
    
    例えば、私の会社のサーバーにファイルをアップロードしたいなら、次のようになります.-p 1234コロンの後にパスが指定されない場合、ファイルは同じ名前のホームディレクトリにアップロードされるべきです.しかし、コロンを含めることを忘れないでください!
    フリップ側では、私の会社のサーバーからファイルをダウンロードしたい場合は、次のようになります.scp覚えておいてください.
    うまくいけば、このポストは、SSHについて学んでいる誰のための出発点として勤めました.読んでくれてありがとう!