サーバへの SSH 接続でパスワード入力を省略する

標準的な設定では,リモート接続するたびにパスワードを入力する必要がある.SSH鍵認証の設定によりパスワード入力を省略できる.

SSH 鍵ペアの生成

ローカルPCのターミナルで以下のコマンドを実行する(以下の例は VSCode のターミナルでの実行例である).

ssh-keygen -t ECDSA

ECDSAは鍵生成方式

    *** 実行例 ***
    PS C:\Users\****> ssh-keygen -t ECDSA このコマンドを実行
    Generating public/private ECDSA key pair.
    Enter file in which to save the key (C:\Users\****/.ssh/id_ecdsa): 鍵ペアを保存するフォルダ.そのままEnterする
    Enter passphrase (empty for no passphrase): そのままEnter
    Enter same passphrase again: そのままEnter
    Your identification has been saved in C:\Users\****/.ssh/id_ecdsa.
    Your public key has been saved in C:\Users\****/.ssh/id_ecdsa.pub.
    The key fingerprint is:
    SHA256:fzqfPCol1C11W1ltBGP1O6/4JfUNy72sXg6I5BuclpU wata@LAPTOP-OD6265V5
    The key's randomart image is:
    +---[ECDSA 256]---+
    |              ++B|
    |            ...o=|
    |         . o . +.|
    |        . o o . .|
    |       .S. E  .o.|
    |        =.* .. ==|
    |         @....+.*|
    |        o ++.o=+.|
    |         oo+*=++ |
    +----[SHA256]-----+

passphraseを省略することで毎回のパスワード入力を回避できる.鍵ペア(id_ecdsa, id_ecdsa.pub)が実行中に示されたフォルダ(上の例だとC:\Users\****/.ssh/id_ecdsaおよびC:\Users\wata/.ssh/id_ecdsa.pub)に保存されていることを確認する.

    PS C:\Users\****> dir .ssh
        ディレクトリ: C:\Users\****\.ssh
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----        2023/01/18     10:46            212 config
    -a----        2023/01/18     15:18            513 id_ecdsa *秘密鍵,他人に見られてはいけない!
    -a----        2023/01/18     15:18            183 id_ecdsa.pub *公開鍵,他人に見られてもOK
    -a----        2023/01/18     10:47            175 known_hosts

公開鍵をサーバに登録する

生成した公開鍵の内容をサーバに登録する.

  1. サーバに(パスワードありSSHで)リモートログインする.
  2. サーバの ~/.ssh/authorized_keys ファイルの末尾に,ローカルPCで生成した公開鍵ファイル(上記の例の場合は id_ecdsa.pub)の内容を追加する(それぞれのファイルをテキストエディタなどで開いてコピペする)
  3. リモート接続を切断し,再度接続してパスワードなしで利用できることを確認する.

[目次へ]


Pattern and Media Informatics Labo. TDU