CLOVER🍀

That was when it all began.

vagrant sshでSSHのオプションを指定する(extra ssh args/Xの転送サンプル付き)

これは、なにをしたくて書いたもの?

Vagrantsshコマンドを使う時に、SSHに追加のオプションを渡せないのかなと思って見ていたのですが、どうも--の後に
オプションをつければよいみたいです。

ということでメモしておきます。

vagrant ssh

vagrant ssh --helpを見るとOptionsに目が行くのですが、よく見ると後ろに-- extra ssh argsと書かれています。

$ vagrant ssh --help
Usage: vagrant ssh [options] [name|id] [-- extra ssh args]

Options:

    -c, --command COMMAND            Execute an SSH command directly
    -p, --plain                      Plain mode, leaves authentication up to user
    -t, --[no-]tty                   Enables tty when executing an ssh command (defaults to true)
        --[no-]color                 Enable or disable color output
        --machine-readable           Enable machine readable output
    -v, --version                    Display Vagrant version
        --debug                      Enable debug output
        --timestamp                  Enable timestamps on log output
        --debug-timestamp            Enable debug output with timestamps
        --no-tty                     Enable non-interactive output
    -h, --help                       Print this help

この部分ですね。

Usage: vagrant ssh [options] [name|id] [-- extra ssh args]

ドキュメントにも載ってはいますが、情報はヘルプとほぼ同等で特に説明があるわけではありません。

vagrant ssh - Command-Line Interface | Vagrant | HashiCorp Developer

-- extra ssh argsを使って、Vagrantで起動したUbuntu Linux 24.04 LTSの仮想マシンからXを転送するようにSSH
オプションを指定してみましょう。

環境

今回の環境はこちら。

Vagrant

$ vagrant version
Installed Version: 2.4.7
Latest Version: 2.4.7

You're running an up-to-date version of Vagrant!

使用するVagrant Box。

cloud-image/ubuntu-24.04

Ubuntu Linux 24.04 LTSの情報。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.2 LTS
Release:        24.04
Codename:       noble


$ uname -srvmpio
Linux 6.8.0-63-generic #66-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 13 20:25:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

準備

対象のUbuntu Linux 24.0.4 LTSには、デスクトップ環境をインストール済みとします。

$ sudo apt install ubuntu-desktop

この後、再起動しておきましょう。

また/etc/ssh/sshd_configX11Forwardingyesになっていることも確認しておきます。

$ grep X11Forwarding /etc/ssh/sshd_config
X11Forwarding yes
#       X11Forwarding no

vagrant sshにextra ssh argsを組み合わせる

では、vagrant sshにextra ssh argsを組み合わせてみましょう。

まずはなにも指定せずにvagrant sshで接続します。

ちなみに、このVagrant Boxはログインシェルがdashです。

$ echo $SHELL
/bin/sh
$ ls -l $SHELL
lrwxrwxrwx 1 root root 4  3月 31  2024 /bin/sh -> dash

なので、vagrant ssh後にbashを起動するか

$ bash

-cオプションでbashを起動するなどした方が便利でしょうかね。

$ vagrant ssh -c bash

本題に戻ります。この状態だと、SSHの設定を特に変更していないのでX転送ができません。

$ xeyes
Error: Can't open display:

ここで、--の後にsshコマンドに渡す追加のオプションを指定します。

$ vagrant ssh -- -CXY

今回は-CXYとしました。

すると、xeyesアプリケーションの描画をローカルに転送できます。

$ xeyes

これで、sshコマンドに追加のオプションを指定できていることが確認できました。