2
0

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標準のsshではじめてのssh-keygen、パスワードレスなログイン

Last updated at Posted at 2024-11-09

Windows標準のsshを触ってみよう

以前はssh接続といえば、PuTTYやTeraTermを使ったものがほとんどでしたが、現在はWindows PowerShellの一部としてsshが含まれ、Windows PowerShellのみで他のアプリに頼ることなくssh接続ができるようになりました。今回はssh接続に使う鍵の作り方と、パスワードなくリモートへログインする方法をご紹介します。

目標は "パスワードレスログイン"!!

「パスワードを聞かれることなく、WindowsからUbuntuにログインしたい」 (下図)

2024-11-09 (5).png

作業手順

Ubuntuにsshdをインストールする

まず、リモートとなるUbuntuがssh接続を受けられるよう、サーバをインストールします。

### Ubuntu上での操作
$ sudo apt install openssh-server -y
... openssh-serverがインストールされます
$ sudo systemctl start sshd
... sshdのサービスを開始します
$ sudo systemctl enable sshd
... OS起動時に自動的にsshdのサービスが開始されるよう設定します
$ systemctl status sshd
... SSHDが起動していることを確認します
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
   Active: active (running) since Sat 2024-11-09 17:39:04 JST; 51min ago
 Main PID: 937 (sshd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/ssh.service
           └─937 /usr/sbin/sshd -D

WindowsにWinSCPをインストールし、ssh接続を確認する

Windowsへ WinSCP をインストールし、IPアドレス、ユーザー名、パスワードの組でログインできることを確認します。ここではユーザー名 shino でログインしてみました。

2024-11-09 (6).png

Ubuntu上にsshの公開鍵を登録するファイル/ディレクトリを作る

続いてUbuntu上にsshの鍵情報を保存するディレクトリとファイルを作成します。ここでchmodによりファイルやディレクトリのアクセス権限(パーミッション)を細かく設定していますが、この手順は非常に重要です。パーミッションが違うとssh接続時に鍵情報をサーバ側が正しく読みだせず、普通のパスワードログイン画面が出てしまいます。

### Ubuntu上での操作
$ mkdir -p /home/shino/.ssh
$ touch /home/shino/.ssh/authorized_keys
$ sudo chmod 700 /home/shino/.ssh
$ sudo chmod 640 /home/shino/.ssh/authorized_keys

パーミッションについてはこちらの記事を参考にしました。

Windows上でSSHの秘密鍵/公開鍵のペアを作成する

今回はパスフレーズなしの秘密鍵/公開鍵のペアを作成します。Windows PowerShellを起動して、ホームディレクトリへ移動し、ssh-keygenコマンドを実行しましょう。この例ではユーザー"ixiv2"で作業しています。

### Windows上での操作
$ cd ~
$ mkdir .ssh
$ cd .ssh
$ pwd
C:\Users\ixiv2\.ssh
$ ssh-keygen.exe -q -t rsa -C '""' -N '""' -f id_rsa
... パスフレーズを持たない秘密鍵/公開鍵のペアを作成します
$ ls 
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/11/09     18:53           2578 id_rsa
-a----        2024/11/09     18:53            555 id_rsa.pub

2024-11-09 (8).png

今回紹介する簡単ログインは、ここで作成した公開鍵「id_rsa.pub」の中身をUbuntuに格納し、秘密鍵「id_rsa」を持っているクライアントからログインが来た時に認証を通す、という仕組みです。

なお、パスフレーズなしの鍵の作り方は下記の記事を参考にしました。

Windows上にsshサーバ情報ファイルを作成する

次にサーバ名を指定したときに、そのサーバがどのアドレスで、なんというユーザでログインするか、という設定を含んだ設定ファイルをWindows上に作成します。作成位置は「~/.ssh/config」です(拡張子無)。

### Windows上での操作
$ cd ~
$ cd ./.ssh
$ notepad config
... 新規ファイルを作成するか聞かれるのでYES
... 以下内容を入力する
...   Ubu18サーバにshinoでログインする
...   サーバのIPアドレスを指定
...   サーバとの接続に使う秘密鍵を指定
Host Ubu18
	HostName 192.168.10.134
	User shino
	IdentityFile ~/.ssh/id_rsa 

Ubuntu上のauthorized_keysに公開鍵を書き込む

WinSCPでWindowsからUbuntuへログインし、authorized_keysに公開鍵を書き込みます。

### Ubuntu上での操作
$ vi /home/shino/.ssh/authorized_keys
... 公開鍵を書き込む
$ cat /home/shino/.ssh/authorized_keys
(例) ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC916d8N7J6Sbb1jB3ifnNSqtiqiPEhxVoye5f+KiAhyxGtQPhswdsWyzs2VbeDtE6EthfhBefdN2gi1Euju5h9wKdLKXNeUfsDBa5a6l7loFsDz4fwRT4zCCrMU0Jly2pCMDCV1+YvjkE/ogglQcGAL104KuWMEZJptucoQ9hHZ2tdjY/c3wvwmeoKVRlYfPLneTb7ublAN0xIC8hsKjVUFXyLJ2Smops0/xs0fjvln28I19KrXrAp2poO0IFMSQUb0HAlsFHI7J+ApXUvmFkGQdQbJlhUINmWoxWgX0dFK2+FNa5Qq1DGTmywsySaS44zQke+CqaCUi4re+MJgcfwp7AM8zkqejc/CeEOa8oMmH/DXObWh9kf0MY+Jtgod21VMISeGZyXaa04AID6Lpq/9aWlofj9ATpO0eJCEwyuV7wqMGMDcUm6ojKmjV++njwFwaPqqkM7IRE7+AKd3Bl8D0cGfKxlVgj7843xIfvG/cuYFq5ar2yZTBDmAgbS8qE=

以上で設定完了です。

WindowsからUbuntuへログインする

最後にWindows上からSSHコマンドを実行します。初回の接続では、不明なホストに本当に接続してよいか(Are you sure you want to continue connecting (yes/no/[fingerprint])?)聞かれますので、yesと入力してください。これでパスフレーズ不要のログインは成功です。

### Windows上での操作
$ ssh Ubu18
...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
...
Your Hardware Enablement Stack (HWE) is supported until April 2023.
Last login: Sat Nov  9 18:02:45 2024 from 192.168.10.115
shino@shino-Ubu18:~$ <<-- Ubuntu上にログインできた
shino@shino-Ubu18:~$ exit
ログアウト
Connection to 192.168.10.134 closed.
PS C:\Users\ixiv2\.ssh>

image.png

実はリモート開発の下準備でした

実は、今回の記事はVisual Studio Codeを使う下準備でした。Windows標準のSSHが利用できると、Visual Studio Codeの「Remote Development」拡張機能を使ってGPUをごっそり積んだUbuntuサーバ上で動くPythonコードをリモートから開発できてしまうそうです…!楽しみですね!

2024-11-09 (10).png

2
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?