2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WindowsからLinuxに公開鍵を使ってSSH接続

Last updated at Posted at 2024-08-31

はじめに

自PCからLinuxにSSH接続する際にパスワード入力なしで、コマンドプロンプトからssh ホスト名というコマンドのみでアクセスできる方法について紹介します。
本手法を用いるメリットはパスワードの管理が楽になることです。

windows側の処理

  • OpenSSHのインストール
    以下コマンドをコマンドプロンプトorPowershellで実行してOpensshがインストールされているか確認してください。
ssh -V

インストールされている場合は以下処理は不要です。インストールされていない場合は、Powershellを管理者モードで開いてください。

以下コマンドでインストールが可能です。

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

以下のような表示になればインストール成功です。

Path          :
Online        : True
RestartNeeded : False
  • パスを通す
    以下のように環境変数のシステム環境変数path編集新規作成の順に進み以下のようにC:\Windows\System32\OpenSSH\のパスを追加する。

  • 公開鍵・秘密鍵の生成
    まず、鍵を保管するディレクトリ(C:\Users\xxxx\.ssh)を作成します。
    コマンドプロンプトorPowershellを開き、上記パスに移動します。
    以下コマンドで公開鍵を作成します。

ssh-keygen -t rsa -C comment -f <ファイル名>

パスフレーズの入力を求められますが、設定しない場合はEnterで進んでください。以下の表示になればOKです。

C:\Users\xxxx\.sshに以下のファイルがあればOK

<ファイル名>        :秘密鍵
<ファイル名>.pub    :公開鍵

秘密鍵は大切に保管しておいてください。

  • 公開鍵をSSH接続したいマシンに転送
    上記の処理で作成した公開鍵をSSH接続したいマシンに転送します。
    C:\Users\xxxx\.sshをカレントディレクトリにして、以下コマンドを実行してください。
scp <ファイル名>.pub name@xxx.yyy.zzz.zzz:<ファイル転送ディレクトリ>

上記はserver_nameにファイルを転送する例です。適宜マシンに応じて変えてください。パスワードの入力が求められますので、SSH接続したいマシンのパスワードを入力してください。

  • configファイルの作成
    C:\Users\xxxx\.sshディレクトリにconfigファイルを作成します。内容は以下のようにしてください。
Host server_name1
    HostName xxx.yyy.zzz.zzz
    User name
    Port 22
    IdentityFile C:\Users\xxx\.ssh\<ファイル名>
    ServerAliveInterval 60

マシンが増えると以下のようになっていきます。

Host server_name1
    HostName xxx.yyy.zzz.zzz
    User name
    Port 22
    IdentityFile C:\Users\xxx\.ssh\<ファイル名>
    ServerAliveInterval 60

Host server_name2
    HostName xxx.yyy.zzz.zzz
    User name
    Port 22
    IdentityFile C:\Users\xxx\.ssh\<ファイル名>
    ServerAliveInterval 60

Host server_name3
    HostName xxx.yyy.zzz.zzz
    User name
    Port 22
    IdentityFile C:\Users\xxx\.ssh\<ファイル名>
    ServerAliveInterval 60

この設定を記述することで、ssh server_name1と入力することでssh接続できるはずです。(##ssh接続したいマシン側の処理を行っている必要があります。##)

参考文献

SSH接続したいマシン側の処理

  • サーバにアクセス
    以下コマンドをコマンドプロンプトorPowershellでサーバにssh接続してください。
ssh name@xxx.yyy.zzz.zzz
  • 公開鍵の登録
    上記で転送したファイルを~/.sshに移動します。
cd <ファイル転送ディレクトリ>>
chmod 600 <ファイル名>.pub
sudo mv <ファイル名>.pub ~/.ssh

既に~/.sshauthorized_keysファイルが存在すれば以下コマンドを実行してください。

cat <ファイル名>.pub >> authorized_key

authorized_keysが存在しない場合は以下コマンドを実行してください。

mv <ファイル名>.pub authorized_key
  • configファイルの設定

以下の設定は確認しておいてください。

以下は、公開鍵の場所を指定する設定です。

AuthorizedKeysFile      .ssh/authorized_keys

以下は公開鍵認証をみとめるかどうかのパラメータでデフォルトでyesになっているはずです。なっていない場合は以下のコメントアウトを解除してください。

#PubkeyAuthentication yes

以下はパスワード認証を認める設定です。デフォルトでyesのはずです。

#PasswordAuthentication yes

参考文献

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?