Arch Linux インストール日記9

そうだ SSH 接続で遠隔操作してみよう(公開鍵暗号方式)

というわけで、やってみました

参考にしたサイトは下記のとおりです
Arch Linux における OpenSSH の設定
https://qiita.com/tacbooon/items/02fcff8ae35c318776a0

SSH サーバのインストール,設定(Ubuntu 上)
https://www.kkaneko.jp/tools/server/pubkey.html

ArchLinux公式wiki OpenSSH
https://wiki.archlinux.jp/index.php/OpenSSH

ArchLinux公式wiki SSH 鍵
https://wiki.archlinux.jp/index.php/SSH_%E9%8D%B5

例によってブログの仕様により、何故か半角だと保存を受け付けないため全角文字を使用している箇所があります

では、始まります

◆◆◆◆ 作業をする環境 ◆◆◆◆

接続元( 接続をしたい側の PC 等 クライアント)
    ->    Windows11 PC
接続先( 接続を受け入れる側の PC 等 SSHサーバー)
    ->    ArchLinux PC / Raspberry Pi


◆◆◆◆ 事前にしておくこと(接続先) ArchLinux ◆◆◆

ファイアウォールの設定(当日記2等により設定してください)
Arch Linux インストール日記 2
◆◆◆◆ インストール、サービス起動・有効化(接続先) ArchLinux ◆◆◆◆ インストール $ sudo pacman -S openssh 起動 $ systemctl start sshd.service 有効化 $ systemctl enable sshd.service ◆◆◆◆ SSH サービスの設定ファイルに変更を加える(接続先) ArchLinux ◆◆◆◆ $ sudo nano /etc/ssh/sshd_config ※最後が全角になってますが、本当は半角の g です 使用するポート # を外す #Port 22 -> Port 22 使用する鍵の種類 # を外す #HostKey /etc/ssh/ssh_host_ed25519_key -> HostKey /etc/ssh/ssh_host_ed25519_key root によるログインを拒否 #PermitRootLogin prohibit-password の直下に追記 PermitRootLogin no ログインの試行回数 #MaxAuthTries 6 -> MaxAuthTries 4 ログインに鍵を使用する # を外す #PubkeyAuthentication yes -> PubkeyAuthentication yes 空のパスワードによるログインを拒否 PermitEmptyPasswords no ※これ以外にも設定項目がありますが、最後の最後で行います ◆◆◆◆ ファイアウォール iptables.rules で SSH で使用するポートを許可(接続先) ArchLinux ◆◆◆◆ 方法1 $ sudo nano /etc/iptables/iptables.rules -A TCP -p tcp --dport 22 -j ACCEPT ※ COMMIT の真上に追記します 方法2 ※ >> で追記となります > は上書きになるので使ってはダメ! # iptables -A TCP -p tcp --dport 22 -j ACCEPT # iptables-save >> /etc/iptables/iptables.rules ◆◆◆◆ 鍵の作成(接続元) Windows11 ◆◆◆◆ Windows アイコンを右クリックして、ターミナル(管理者)の項目を選択 以下、ターミナルによる作業 秘密鍵・公開鍵を作成 PS C:\Users\username> ssh-keygen -t ed25519 -m PEM -C 'コメント欄' ※コメント欄は入れなくても OK ですが、自分に分かりやすい何かを書いていた方がいいかも(通常見ることはありませんが、読み進めていくと登場します) 例)hpc-win-11 Generating public/private ed25519 key pair. Enter file in which to save the key (C:\Users\username/.ssh/id_ed25519): が表示されるので、そのままエンターキーを押す 恐らく、別の場所に保存したい場合に設定する為のものと思われますが、デフォで行きます Enter passphrase (empty for no passphrase): が次に現れますので、鍵のパスワードを入力します Enter same passphrase again: が最後に現れますので、同じパスワードを入力します そして、下記のようなものが表示されたら作成成功です Your identification has been saved in C:\Users\username/.ssh/id_ed25519 Your public key has been saved in C:\Users\username/.ssh/id_ed25519.pub The key fingerprint is: SHA256:8rRfxa7gxHsOzlPxGWIHMtap5oYtp4bjCd01z9yvvBI hpc-win-11 The key's randomart image is: +--[ED25519 256]--+ | ..*o .| | =..= | | ..++| | . ..+o+| | . S. .=. =| | o =.+ *...| | o.. =++o | | +.=.GE..| | ..+ o.KB.| +-----[SHA256]----+ 本当に出来ているか、フォルダを開けて確認して下さい なお、隠しファイルを表示するようにしていないと見れません コマンドでは下記のとおり cd /Users/username cd .ssh dir または ls ◆◆◆◆ サーバに接続(接続元) Windows11 ◆◆◆◆ 接続先のユーザー名:raspi5 接続先の IP アドレス:192.168.10.7 とします ご自身の環境に読み替えて下さい なお、接続先の IP アドレスの確認ですが $ ip a で確認できます(※接続先での作業) ルーターで固定化しておくと常に同一 IPアドレス での接続が可能となります 作成した鍵の場所に移動します PS C:\Users\username> cd .ssh 鍵のあるディレクトリに移動したら、接続先に公開鍵をコピーしていきますが、接続先に既に .ssh ディレクトリが存在してるか存在してないかでコマンドが次のように変わります 接続先に .ssh ディレクトリが既にある場合 PS C:\Users\username> type id_ed25519.pub | ssh [email protected] "cat >> /home/raspi5/.ssh/authorized_keys" 接続先に .ssh ディレクトリが無い場合 PS C:\Users\username> type id_ed25519.pub | ssh [email protected] "mkdir /home/raspi5/.ssh; cat >> /home/username/.ssh/authorized_keys" 初めて接続する場合は Are you sure you want to continue connecting (yes/no/[fingerprint])? と聞かれますので yes と入力してリターンキーを押します なお、 y では通りません その後でパスワードを聞かれますので、入力してリターンキーを押します ※ この時点では鍵のやり取りはしてませんので接続先ユーザーのパスワードです 特にエラーが出てなければ成功しているはずなので、普通にログインしてみます PS C:\Users\username> ssh [email protected] ※ 成功していれば Enter passphrase for key 'C:\Users\username/.ssh/id_ed25519': と表記が変わります ここで、初めて鍵のパスワードを入力します そして、成功すれば [raspi5@raspi5hpc ~]$ と表示されます 試しに、本当に鍵が登録されているか確認します $ cd .ssh $ ls authorized_keys $ nano authorized_keys ssh-ed25519 ~中略~ hpc-win-11 authorized_keys に自分が設定したコメントの箇所がありました これで登録されたことが確認出来ました Ctrl+x で保存せずに終了します これで、終了・・・ではありません! 次に進みます ◆◆◆◆ 鍵以外ではログインできないようにします (接続元) Windows11 SSH接続済 ◆◆◆ ※ これを設定しないと、最終的に普通のパスワードでのログインが出来てしまいます $ sudo nano /etc/ssh/sshd_config ※最後のgは本当は半角の g です 以下の場所の下に、追記をします #PasswordAuthentication yes PasswordAuthentication no これが、パスワードでのログイン自体を拒否するものになります 保存・終了した後、sshd のサービスを再起動させます $ su Password: root パスワード # systemctl restart sshd.service これで本当の終了となりますが、ポート番号を標準の22でいいの? という意見もあるかもしれないので、次で説明を加えておきます ◆◆◆◆ 任意 そうだ、ポート番号を 4444 に変えよう (接続元) Windows11 SSH接続済 ◆◆◆◆ ※ 既にログイン状態とします ※ tacbooon さんのサイト https://qiita.com/tacbooon/items/02fcff8ae35c318776a0 によると、1024-32767 の範囲内に設定とありますので、それに合わせたほうがいいでしょう root で作業します $ su Password: root パスワード iptables.rules の設定の変更 # nano /etc/iptables/iptables.rules -A TCP -p tcp --dport 22 -j ACCEPT -> -A TCP -p tcp --dport 4444 -j ACCEPT # systemctl restart iptables.service # systemctl status iptables.service sshd_config の設定の変更 # nano /etc/ssh/sshd_config ※ 最後のgは半角の g です(何度目? Port 22 -> #Port 22 -> Port 4444 # systemctl restart sshd.service # systemctl status sshd.service ログアウトします # exit $ exit ログインしてみます PS C:\Users\username> ssh [email protected] ※入れなくなっているはずです ポート番号4444でログインする方法 PS C:\Users\username> ssh -p 4444 [email protected] これでエラーが表示されずに入れたら OK です 基本的に自分の家の中だけで接続する場合は必要ないと思いますが、外部から接続する場合は変えておいた方がいいかも知れません なお、当然外部から接続するためにはルーターでポートの開放が必要になりますが、ここでは説明しません

では、よい 遠隔操作ライフを
(/・ω・)/ コロコロコロ =〇

Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です