MENU

Windows10のコマンドプロンプトでSSH公開鍵認証で自動ログインする方法

更新日:2019/07/30

 

Windows10のコマンドプロンプトでSSHを利用するには、OpenSSHをダウンロードする必要があって、それが面倒でTera Termを使用しています。

 

しかし、いつの間にかWindows10が標準でSSHをサポートしていたようです。
(2017年10月かららしい)

 

そこで今回は、Windows10のコマンドプロンプトでSSHの公開鍵認証に接続し、さらにショートカットをダブルクリックするだけで、自動でログインできるように設定したいと思います。

 

 

参考:Windows10 コマンドプロンプトの開き方

■お願い
去年ECMAScript2020を頑張って日本語訳しましたが、誰も見てくれません・・・
誰かみて!!
【JavaScript】 学習のためECMAScript2020を日本語訳してみました

コマンドプロンプトで公開鍵と秘密鍵を生成

すでに鍵がある場合は、ここはスキップしてください。

 

公開鍵認証で使用する鍵は、コマンドプロンプトで作成します。
サーバー上でも作成できますが、作成したファイルをダウンロードする際に、フォルダ名に日本語を使っているとうまくいきません。
(FTPのアプリでデータをダウンロードできる場合は、サーバー上で作成しても問題ありません。)

 

公開鍵と秘密鍵の生成方法

 

コマンドプロンプトで次のコマンドを実行します。

 

> ssh-keygen -t rsa -b 2048

 

鍵の作成場所を聞かれます。

 

変更しない場合はエンターを押します。
すでにファイルがあると上書きされるので、上書きされたくない場合は、別のフォルダを指定しましょう。

 

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\ユーザー名/.ssh/id_rsa):←エンターまたは別のフォルダ+ファイル名

 

次にパスフレーズを入力します。
必要ない場合はエンターでも大丈夫です。

 

ただし、パスフレーズを設定したほうがセキュリティが高くなるようです。

 

 

Enter passphrase (empty for no passphrase):←エンターまたはパスフレーズ
Enter same passphrase again:←エンターまたはパスフレーズ
Your identification has been saved in C:\Users\ユーザー名/.ssh/id_rsa.
Your public key has been saved in C:\Users\ユーザー名/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ZPE7XO00mqNFCwtNHKTusinRyoucIigZeIkin837takaiyoneDE xxxx@pc
The keys randomart image is:
+---[RSA 2048]----+
|   .ooE+=o=o+=ooo|
|    ...=+o +...+ |
|   .. +.+oo . + |
|    .+.o.. o = . |
|     o= S.+ o . |
|      .oo + |
|     . .+. |
|      . ..+ |
|       ..+ |
+----[SHA256]-----+

 

デフォルトでは、.sshディレクトリの下に、『id_rsa』と『id_rsa.pub』が生成されます。

 

id_rsa:秘密鍵 パソコン側で使用
id_rsa.pub:公開鍵 サーバーで使用

 

 

自動ログイン設定

 

『秘密鍵:id_rsa』が作成されたフォルダのフルパスに、日本語が入ってないか確認します。

 

例:
× c:\users\テスト
c:\users\test

 

フォルダのフルパスがわからない場合は、次の記事を参考にしてください。

 

参考 Windows10でファイルのフルパスを調べる方法

 

日本語が入っていた場合は、『id_rsa』を日本語の入っていないフォルダに移動します。

 

例:
C:\sshkey\id_rsa <= 新しくフォルダを作成

 

※『id_rsa』は、好きな名前に変更しても大丈夫です。

 

 

 

パスフレーズを登録

 

ssh-agentを有効化します。

 

コマンドプロンプトを管理者権限で起動し、次のコマンドを実行します。

 

> sc config ssh-agent start=auto
> sc start ssh-agent

 

通常の方法でコマンドプロンプトを起動し、次のコマンドを実行します。

 

> cd xxxxx  <= 秘密鍵のフォルダに移動
> ssh-add id_rsa  <= 秘密鍵のファイル名

 

パスフレーズの入力を求められるので、入力します。

 

 

バッチファイルを作成

 

メモ帳などを使い、次の内容でファイルを作成します。

 

ssh ユーザー名@IPアドレス -i "作成したフォルダ(フルパス)\id_rsa" -p ポート番号

 

ファイルの拡張子を『.bat』にして保存します。

 

作成したバッチファイルをダブルクリックすることで、自動ログインすることができます。
(※この時点ではサーバーの設定が終わっていないので、ログインできません。)

サーバーに公開鍵をコピー

 

SCPコマンドを使って、公開鍵『id_rsa.pub』をサーバーに転送します。

 

SCPコマンド構文:

SCP -P [ポート番号] [転送するファイル] [転送先]

 

リモート先の指定:ユーザー名@IPアドレス:フォルダまたはファイル名(フルパス)

 

転送先と転送元を入れ替えることで、リモートとローカルの両方向で転送できます。

 

実行例:

 

(※サーバーにログインしていない状態)
cd .ssh <=鍵を作成したフォルダに移動
SCP -P 55555 .\id_rsa.pub user001@123.45.67.123:/home/user001/

 

ユーザーのパスワード入力を求められるので、入力します。

 

エラーが出なければ成功です。

サーバーに公開鍵を設置

鍵を設定するユーザーでサーバーにログインします。

 

> ssh ユーザー名@IPアドレス -p ポート番号

 

ログイン後、鍵が転送されているか確認します。

 

$ pwd
/home/user001/ <=現在位置が転送先かどうか確認

 

$ ls
id_rsa.pub<=公開鍵があるか確認

 

 

鍵を格納するディレクトリを作成します。

 

$ mkdir .ssh
$ chmod 700 .ssh

 

鍵を作成したディレクトリに移動します。

 

$ cp id_rsa.pub ./.ssh/authorized_keys
$ chmod 600 ./.ssh/authorized_keys

 

この接続は、終了しないで次のステップに進みます。
(設定を間違えていると、再接続できなくなるため)

接続テスト

作成したBatファイルをダブルクリックして、ログインできることを確認します。

 

ログインできない場合は、設定を確認します。

 

うまくいかない状態で作業を中断するときは、サーバーに設置した『authorized_keys』のファイル名を変更しておきましょう。

 

記事の内容について

 

こんにちはけーちゃんです。
説明するのって難しいですね。


「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。

そんなときは、ご意見もらえたら嬉しいです。

ご意見はこちら。
https://note.affi-sapo-sv.com/info.php

【お願い】

お願い

■このページのURL


■このページのタイトル


■リンクタグ