Hyper-Vなどの仮想マシンに入れたArch Linuxを、コンソール画面ではなく手元のターミナルから操作したいときは、SSHで接続できるようにします。Arch LinuxでOpenSSHのサーバー(sshd)を動かし、Windowsなどから接続し、公開鍵認証と~/.ssh/configの設定まで進めると、コマンドのコピー&ペーストもパスワードなしのログインもできるようになります。
Arch LinuxにOpenSSHを入れてsshdを起動する
openssh パッケージを入れる
sudo pacman -S opensshArch Linuxでは、SSHのクライアント(ssh)とサーバー(sshd)のどちらも openssh パッケージに入っています(ArchWiki「OpenSSH」)。
sshdを起動し、PCを起動したときにも動くようにする
sudo systemctl enable --now sshdenableに--nowを付けると、自動起動の設定と同時にsshdを起動します(systemctl(1))。sshdの設定ファイルは/etc/ssh/sshd_configで、sshdはsshd.serviceとして動きます(ArchWiki「OpenSSH」)。
sshdが動いているか確かめる
systemctl status sshdActive:の行がactive (running)になっていれば、sshdは動いています(systemctl(1)の表示例)。
IPアドレスを調べて、WindowsからSSHで接続する
Arch Linux側でIPアドレスを調べる
ip address show仮想マシンのコンソールで実行し、lo(ループバック。ネットワークの接続には使わない)以外のインターフェースに付いたIPv4アドレスを控えます(ArchWiki「Network configuration」)。ip address showは、ネットワークの各インターフェースに付いたアドレスを一覧にします(ip-address(8))。
WindowsにOpenSSHクライアントが入っているか確かめる
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'管理者として開いたPowerShellで実行します。OpenSSH.ClientのStateがInstalledでなければ、次のコマンドで入れます。対象はWindows 10(ビルド1809)以降・Windows Server 2019以降です(Microsoft「Get started with OpenSSH for Windows」)。
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0ssh コマンドで接続する
ssh ユーザー名@192.0.2.10WindowsのPowerShell、macOSやLinuxのターミナルで実行し、Arch Linuxのユーザーのパスワードを入力します。sshdの待ち受けポートは、変えていなければ22です(sshd_config(5))。
初めて接続したときの確認メッセージ
cd /etc/ssh
ssh-keygen -l -f ssh_host_ed25519_key.pub初めて接続するサーバーでは、サーバーの公開鍵のフィンガープリントが表示され、接続を続けるか聞かれます。Arch Linuxのコンソールで上の2行を実行してフィンガープリントを表示し、同じであればyesと入力します。受け入れた鍵は、接続した側の~/.ssh/known_hostsに保存されます(ssh(1))。
ssh-keygenで鍵を作り、公開鍵認証で接続する
接続する側のPCで鍵を作る
ssh-keygen -t ed25519接続する側(Windows・macOS・Linux)で実行します。保存先を聞かれたらEnterで既定の場所(~/.ssh/id_ed25519、WindowsではC:\Users\ユーザー名\.ssh\id_ed25519)を使い、パスフレーズを2回入力します。秘密鍵がid_ed25519、公開鍵がid_ed25519.pubです(ssh-keygen(1)、Windowsの場所はMicrosoft「Key-based authentication in OpenSSH for Windows」)。
Linuxなどから公開鍵を登録する(ssh-copy-id)
ssh-copy-id ユーザー名@192.0.2.10接続する側にssh-copy-idがある場合に使えます(Arch Linuxでは openssh パッケージに入っています)。パスワードを入力すると、公開鍵がArch Linuxのユーザーの~/.ssh/authorized_keysに追加されます(ssh-copy-id(1))。
Windowsから公開鍵を登録する(scpで送ってから追加)
scp $env:USERPROFILE\.ssh\id_ed25519.pub ユーザー名@192.0.2.10:PowerShellで実行し、公開鍵をArch Linuxのホームディレクトリに送ります。最後の:を忘れないでください。続けてArch Linuxにパスワードで接続し、次のコマンドでauthorized_keysに追加します(ArchWiki「SSH keys」)。
install -dm700 ~/.ssh
cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys
rm ~/id_ed25519.pub
chmod 600 ~/.ssh/authorized_keysinstall -dm700で~/.sshを自分だけが読み書き・実行できるフォルダーとして作り、chmod 600でauthorized_keysを自分だけが読み書きできる権限にします(chmod(1))。ほかのユーザーが書き込める状態だと、sshdは初期設定(StrictModes yes)ではこのファイルを使いません(sshd(8)、sshd_config(5))。
鍵で接続できるか確かめる
ssh ユーザー名@192.0.2.10ユーザーのパスワードを聞かれずにログインできれば、公開鍵認証で接続できています(ssh(1))。鍵にパスフレーズを付けた場合は、鍵のパスフレーズを入力します。
~/.ssh/configで接続先に名前を付ける
Host arch-vm
HostName 192.0.2.10
User ユーザー名
Port 22接続する側のPCで~/.ssh/config(Windowsでは%userprofile%\.ssh\config)に書きます(Microsoft「OpenSSH Server configuration for Windows」)。Hostの後ろが接続するときに使う名前、HostNameが実際の接続先です(ssh_config(5))。
ssh arch-vmこれでssh ユーザー名@192.0.2.10と同じ接続になります。鍵の場所を~/.ssh/id_ed25519から変えていなければ、IdentityFileを書かなくてもその鍵が使われます(ssh_config(5))。
sshd_configでパスワードでのログインを止める
PasswordAuthentication no
AuthenticationMethods publickeyArch Linux側で、/etc/ssh/sshd_config.dフォルダーに、この名前のファイルをsudoで作ります。PasswordAuthenticationの既定はyesなので、書かないとパスワードでもログインできます(sshd_config(5))。ファイル名と中身はArchWikiの例のとおりです(ArchWiki「OpenSSH」)。
sudo sshd -t設定ファイルに誤りがないか確かめます。何も表示されなければ問題ありません(ArchWiki「OpenSSH」)。
sudo systemctl restart sshdsshdを再起動して設定を反映し、別のターミナルからssh arch-vmで接続できるか確かめます。
sshd_configは、同じ項目が何度も出てきたときに最初の値を使います(sshd_config(5))。sshd_config.dフォルダーの.confファイルは、Arch Linuxのsshd_configにあるIncludeで読み込まれ(ArchWiki「OpenSSH」)、ファイル名の順に処理されます(sshd_config(5))。rootでのログインは、既定のPermitRootLogin prohibit-passwordでパスワードとキーボード対話式の認証ができなくなっています(sshd_config(5))。
SSHで接続できないときに確かめること
接続の途中経過を表示する
ssh -v ユーザー名@192.0.2.10-vを付けると、接続・認証・設定のどこで止まっているかが表示されます。-vv、-vvvと増やすとさらに詳しくなります(ssh(1))。
鍵が使われないときは権限を直す
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ls -ld ~Arch Linux側で実行します。1行目と2行目で、~/.sshを700、authorized_keysを600にします(chmod(1))。3行目でホームディレクトリの権限を確かめます(ls(1))。表示の左から6文字目(グループ)か9文字目(ほかのユーザー)がwなら、ほかのユーザーが書き込める状態です(POSIX「ls」)。ホームディレクトリ、~/.ssh、authorized_keysのどれかがほかのユーザーに書き込める状態だと、sshdは初期設定(StrictModes yes)ではauthorized_keysを使いません(sshd(8)、sshd_config(5)、ArchWiki「SSH keys」)。
「REMOTE HOST IDENTIFICATION HAS CHANGED」と出たとき
ssh-keygen -R 192.0.2.10サーバーの鍵が前に接続したときと変わると、sshは警告を出してパスワード認証を止めます(ssh(1))。仮想マシンを作り直したなど、鍵が変わった理由がはっきりしているときだけ、接続する側で上のコマンドを実行して古い鍵をknown_hostsから消します(ssh-keygen(1))。そのあと、初めて接続したときと同じようにフィンガープリントを確かめます。
GitHubへのSSH接続で「Permission denied (publickey)」と出るときは、「GitHubでgit cloneが認証エラーになるときの直し方」を見てください。家の外からSSHで接続したいときのルーターの設定は「ポートフォワードとは?」にあります。
古い情報から変わったSSHの鍵の扱い(2026年10月20日時点)
2026年10月20日時点で、OpenSSHの最新版は10.6(2026年10月6日公開)です(OpenSSH)。古い記事の手順を使うときは、次の変更に注意してください(OpenSSH Release Notes)。
- ssh-keygenの既定はEd25519:OpenSSH 9.5(2023年10月4日)から、
-tを付けずに実行するとEd25519の鍵を作ります。RSAの鍵を作る場合の既定の長さは3072ビットです(ssh-keygen(1)) - RSAのSHA-1署名(ssh-rsa)は既定で無効:OpenSSH 8.8(2021年9月26日)から、SHA-1を使うRSA署名が既定で使えなくなりました。多くの場合、RSAの鍵そのものを作り直す必要はなく、今あるRSAの鍵は使える場合にSHA-256・SHA-512の署名を自動で使います
- DSAの鍵はOpenSSH 10.0以降で使えない:OpenSSH 10.0(2025年4月9日)以降では、DSAの署名方式が削除されています(2015年から既定では無効)。DSAの鍵(
id_dsa)を使っている場合は、Ed25519などで鍵を作り直して登録し直します
参考
- OpenSSH
- OpenSSH Release Notes
- ssh(1)
- sshd(8)
- ssh_config(5)
- sshd_config(5)
- ssh-keygen(1)
- ArchWiki「OpenSSH」
- ArchWiki「SSH keys」
- ssh-copy-id(1)
- ip-address(8)
- systemctl(1)
- chmod(1)
- ls(1)
- Get started with OpenSSH for Windows(Microsoft Learn)
- Key-based authentication in OpenSSH for Windows(Microsoft Learn)
- OpenSSH Server configuration for Windows(Microsoft Learn)

コメント