Windowsシステムはcmder-sshパスワードなしでlinuxサーバにログインする


Linuxサーバは、ファイルを登録またはscpコピーするたびに煩雑なパスワード入力プロセスを必要とするが、SSH Keyを使用してSSHのパスワードレス登録を実現することは、煩雑なパスワード入力ステップを免除するだけでなく、Linuxサーバにもう一つのセキュリティ防御線を追加する(ssh-rootパスワード登録を無効にすることができる).
多くの文章はsshのパスワードの登録方式がすべて複数のステップがあることを紹介して、実はそんなに面倒な必要はありません.次にwindowsシステムのcmderを例にしてsshのパスワードの登録の設定を完成して、ダウンロードするcmderを完全版にすることを要求します.
  • SSHキーと公開鍵は存在しますか?

  • まずC:Users{ユーザ名}ディレクトリの下にあるかどうかを見ます.sshディレクトリ、およびディレクトリにid_が既に存在するかどうかrsa.pubファイル、すでにファイルがある場合は、手順3に進んでください.ファイルが上書き/削除されていることが何を意味するかを知らない限り、ファイルを簡単に削除しないでください.
  • は、SSH公開鍵および鍵ファイル
  • を生成する.
    cmderを開いて、実行:ssh-keygen-t rsa、Enterキーを押して、1つのパスワードを入力して、それから再び同じパスワードを入力して、パスワードは少なくとも20ビットの長さで、それからsshフォルダは、対応する公開鍵ファイルを生成する.
  • SSH公開鍵をLinuxサーバ
  • にアップロードする
  • スクリプトによる操作完了
  • """ssh-copy-id for Windows.
    
    Example usage: python ssh-copy-id.py ceilfors@my-remote-machine
    
    This script is dependent on msysgit by default as it requires scp and ssh.
    For convenience you can also try that comes http://bliker.github.io/cmder/.
    """
    
    import argparse, os
    from subprocess import call
    
    def winToPosix(win):
        """Converts the specified windows path as a POSIX path in msysgit.
    
        Example:
        win: C:\\home\\user
        posix: /c/home/user
        """
        posix = win.replace('\\', '/')
        return "/" + posix.replace(':', '', 1)
    
    parser = argparse.ArgumentParser()
    parser.add_argument("-i", "--identity_file", help="identity file, default to ~\\.ssh\\idrsa.pub", default=os.environ['HOME']+"\\.ssh\\id_rsa.pub")
    parser.add_argument("-d", "--dry", help="run in the dry run mode and display the running commands.", action="store_true")
    parser.add_argument("remote", metavar="user@machine")
    args = parser.parse_args()
    
    local_key = winToPosix(args.identity_file)
    remote_key = "~/temp_id_rsa.pub"
    
    # Copy the public key over to the remote temporarily
    scp_command = "scp {} {}:{}".format(local_key, args.remote, remote_key)
    print(scp_command)
    if not args.dry:
        call(scp_command)
    
    # Append the temporary copied public key to authorized_key file and then remove the temporary public key
    ssh_command = ("ssh {} "
                     "mkdir ~/.ssh;"
                     "touch ~/.ssh/authorized_keys;"
                     "cat {} >> ~/.ssh/authorized_keys;"
                     "rm {};").format(args.remote, remote_key, remote_key)
    print(ssh_command)
    if not args.dry:
        call(ssh_command)

    以上のpythonコードをローカルに保存し、ssh-copy-id.pyと名前を付け、cmderはpython ssh-copy-idを実行します[email protected]ここでrootはログインユーザ名、xxである.xx.xx.xxはIPのためにリモートサーバのパスワードの入力を要求し、パスワードが正しいと自動的にサーバにログインし、公開鍵ファイルをLinuxサーバにコピーする.もう一度サーバーにログインしようとすると、パスワードは必要ありません.