[SFTP][SSH]鍵認証方式でWindowsPCからRaspberry Piに接続を行う。

SFTP接続にはパスワード認証と、鍵認証方式があります。

通常SSHでアクセスする際に

ssh ユーザー名@IPアドレス

でログインすると、パスワードが聞かれると思います。これがパスワード認証です。

そうではなく、今回は秘密鍵と公開鍵を利用した認証を適用します。

鍵認証方式を使用すると、上記のSSHコマンドを実行した際に、パスワードを入れることなくログインが可能になります。

前提条件:Raspberry Pi の SSH接続機能をONにする

SFTPは名前から、FTPの派生かと思いますが、SSHの派生です。

ラズパイでSFTPを受け入れるには、SSHを有効にします。

Preferences → Raspberry Pi Configurationの順に進みます。

PC側の操作:公開鍵認証のための鍵を作成する

公開鍵:アクセスしたいコンピュータに事前に知らせる鍵

秘密鍵:自身が持っておく鍵(絶対に他人に教えてはいけない)

事前にアクセス先に錠前を持ってもらって、自身が秘密鍵で鍵を開けるイメージです。

鍵が合っていないと錠前は開きません。

鍵を作るには自分のパソコン上のターミナルでコマンドを打つ必要があります。

パソコンでターミナルを開きます。

以下のコマンドで公開鍵と秘密鍵を生成します。

$ ssh-keygen -t rsa 

実行すると、以下のようなメッセージが出てきます。

Enter file in which to save the key(***): 

「鍵を保存する場所を教えて」とのことなのですが、特にこだわりがなければ何も入力せずにEnterで大丈夫です。

その場合は (***) に書かれている通り、デフォルトの場所(.sshという隠しフォルダ)に鍵が生成されます。

その後パスフレーズの設定を求められますが、何も入力しないままEnterでOKです。

これはSSH接続時に入力するフレーズでパスワードみたいなものです。

入力が終われば、公開鍵と秘密鍵を作ることができます。

C:\Users\<ユーザー名>\.ssh

に「id_rsa」と「id_rsa.pub」というファイルが作られています。

id_rsaが秘密鍵、.pubの拡張子付きのファイルが公開鍵です。

ラズパイ側の設定:公開鍵を登録する

次はRaspberry Piに先ほど生成した公開鍵 id_rsa.pub の内容を登録していきます。

ラズパイにログイン後、ホームディレトリにて、mkdir コマンドで ssh という隠しフォルダを作ります。

Raspberry Pi OSをインストールした際には、デフォルトで存在していると思います。

$ mkdir .ssh 

フォルダが作れたら、鍵の登録先になる authorized_keys というファイルを .ssh フォルダの中に作ります。

$ touch .ssh/authorized_keys 

 .sshフォルダと authorized_keys の権限設定をします。

設定する権限は以下の通りです。

  • .ssh → 所有者のみが読み込み(read)、書き込み(write)、実行(execute)可能
  • authorized_keys → 所有者のみが読み込み(read)、書き込み(write) 可能

chmod コマンドを使って次のように設定していきます。

chmod 700 .ssh
chmod 600 .ssh/authorized_keys 

最後に、authorized_keys に公開鍵を書き込みます。

ファイルの末尾に1行追記の形でOKです。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAA...

ファイルをまるごと持ってきている場合、以下のcatコマンドでファイル内容の追記が行えます。

cat コマンドで authorized_keys にid_rsa.pubの内容を追記します。

$ cat id_rsa.pub >> .ssh/authorized_keys

以上で公開鍵認証の設定は完了です。

公開鍵認証でSSH接続できるか確認

最後に公開鍵認証でSSH接続できるかを確認します。

自分の パソコン上でターミナルを開いて、ssh コマンドで公開鍵認証でSSH接続します。

ssh ユーザー名@IPアドレス -i .ssh/id_rsa

パスワード認証のときとは違い、-i 以下で秘密鍵を指定しています。

これでSSH接続が無事にできれば成功です。

FileZillaで接続

FileZillaで接続する場合の一例です。

ホスト名にラズパイのIPアドレス

ポート:空白でOK(ポート22を必要に応じて解放)

ログオンタイプ:鍵ファイル

ユーザー名:pi

鍵ファイル:自身で生成した秘密鍵ファイルを指定

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする