【SSH接続】Windows端末からパスワードなしでSSHログインする方法


SSH接続を行う際にパスワードなしでログインする方法は、linuxのものは比較的見つかるのですが、Windowsのものはあまり見つからなかったのでまとめておきます。

パスワードなしでSSH接続を行う方法はいくつかありますが、ここでは、公開鍵認証を用いた方式を説明します。


目次

  1. 公開鍵・秘密鍵の作成
  2. 公開鍵を接続先のサーバにアップロード
  3. 秘密鍵のパーミッションを設定
  4. 公開鍵認証を用いてサーバにSSH接続


1.公開鍵・秘密鍵の作成

まずは、公開鍵認証を行うための公開鍵・秘密鍵を作成します。

鍵のペアを作成する方法も何種類かありますが、ここでは、TeraTermを用いた方法を紹介します。

まずはTeraTermを立ち上げ、[設定]->[SSH鍵生成]を選択してください。


以下のような鍵生成のウィンドウが表示されるので[生成]を選択します。

鍵の種類、ビット数を選べますが、デフォルトのRSA・2048ビットで問題ないです。


これにより、ペアの公開鍵・秘密鍵が生成されます。

以下のように、保存ボタンが有効になるので、それぞれ、任意の場所に保存します。

この時、パスフレーズを入力する欄が現れますが、空欄にしておいてください(超重要!!)
(入力してしまうと、結局そのパスフレーズがログイン時に必要になるのです…)
※コメント欄は空欄でもOKです。

保存先は基本的にどこでもいいのですが、ユーザーのフォルダの下に”.ssh”フォルダをを作っておけば後々分かりやすいと思います。


2.公開鍵を接続先のサーバにアップロード

公開鍵認証でサーバにログインできるようにするため、接続先のサーバにで生成した公開鍵を配置してください。

配置する場所は、ログインに使用するユーザのhome配下の、/home/[user]/.ssh/のディレクトリです。

もし存在しない場合は新規作成し、chmodで700の権限を付けておきます。

[foo@bar ~]$ mkdir ./.ssh/

[foo@bar ~]$ chmod 700 ./.ssh/

.sshのディレクトリを作成したら、公開鍵をWinSCP等でアップロードします。

※会社のサーバ等であればセキュリティポリシーに従ってアップロードしましょう。

次に、アップロードした公開鍵をサーバのauthorized_keysファイルに追加します。

[foo@bar .ssh]$ cat ./id_rsa.pub >> ./authorized_keys

CentOS7系でsshdをデフォルトで動作させている場合であれば、これでサーバ側の設定は完了です。

※ssh_configを変更している場合や、別OSの場合は、適宜設定の変更が必要なこともあります。管理者の人に相談しましょう。


3.秘密鍵のパーミッションの設定

この状態で秘密鍵を使用してssh接続を試みると、以下のようなエラーになるはずです。

PS C:\mathkuro\work> ssh -i C:\Users\mathb.ssh\id_rsa
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for ‘C:\Users\mathb\.ssh\id_rsa’ are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key “C:\Users\mathb\.ssh\id_rsa”: bad permissions

これは、作成した秘密鍵のパーミッションが緩すぎる(自分以外のユーザの権限もついてしまっている)ことが原因で発生するエラーです。

Windowsにはchmodとかいう便利コマンドはついていないので、以下の手順で自分以外のユーザのパーミッションを削除しておきます。


①秘密鍵の セキュリティの詳細設定ウィンドウ を開く

で保存した秘密鍵を右クリックし、[プロパティ]->[セキュリティ]->[詳細設定]を選択し、 セキュリティの詳細設定ウィンドウを開いてください。


②継承の無効化

セキュリティの詳細設定ウィンドウ で[継承の無効化]を選択し、OKをクリックしてください。


OKをクリックすると、別のウィンドウが開きますので、

“→継承されたアクセス許可をこのオブジェクトの明示的なアクセス許可に変換します。”

を選択し、

[適用]->[OK]

をクリックします。


④自分以外のユーザの権限を削除

プロパティのセキュリティウィンドウで、[編集]をクリックし、自分以外のユーザを削除します。

これで、クライアント側の設定も完了です。


4.公開鍵認証を用いてサーバにSSH接続する

最後に実際にSSH接続を行ないます。

PowerShellでsshコマンドを実行する際に-iオプションで秘密鍵の指定ができます。

ここに先ほど作成した秘密鍵を指定することでパスワード無しでSSHログインができます。

PS C:\mathkuro\work> ssh -i C:\Users\mathb.ssh\id_rsa foo@bar


参考

Leave a Reply

Your email address will not be published. Required fields are marked *