これは、なにをしたくて書いたもの?
Vagrantのsshコマンドを使う時に、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 version Installed Version: 2.4.7 Latest Version: 2.4.7 You're running an up-to-date version of Vagrant!
使用するVagrant Box。
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_configでX11Forwardingがyesになっていることも確認しておきます。
$ grep X11Forwarding /etc/ssh/sshd_config X11Forwarding yes # X11Forwarding no
vagrant sshにextra ssh argsを組み合わせる
では、vagrant sshにextra ssh argsを組み合わせてみましょう。
ちなみに、このVagrant Boxはログインシェルがdashです。
$ echo $SHELL /bin/sh $ ls -l $SHELL lrwxrwxrwx 1 root root 4 3月 31 2024 /bin/sh -> dash
$ bash
-cオプションでbashを起動するなどした方が便利でしょうかね。
$ vagrant ssh -c bash
本題に戻ります。この状態だと、SSHの設定を特に変更していないのでX転送ができません。
$ xeyes Error: Can't open display:
ここで、--の後にsshコマンドに渡す追加のオプションを指定します。
$ vagrant ssh -- -CXY
今回は-CXYとしました。
すると、xeyesアプリケーションの描画をローカルに転送できます。
$ xeyes

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