コマンドを使用してシェルスクリプト内でVagrantがVMにログインする方法を再現したいssh
ので、Vagrantインスタンスのエイリアスを作成します。
通常のssh
コマンドを使用してアクセスするためのコマンド構文は何ですか?
コマンドを使用してシェルスクリプト内でVagrantがVMにログインする方法を再現したいssh
ので、Vagrantインスタンスのエイリアスを作成します。
通常のssh
コマンドを使用してアクセスするためのコマンド構文は何ですか?
すでに多くの回答がありますが、それらはすべて複雑すぎるように見えたり、質問者が抱えていなかった問題を解決したりします。
単に:
# save the config to a file
vagrant ssh-config > vagrant-ssh
# run ssh with the file.
ssh -F vagrant-ssh default
-c
オプションが引数を適切に渡さなかったため、「vagrant ssh」を再実装する必要がありました。これは基本的にそれが行うことです(もっとあるかもしれませんが、この方法でうまくいきます)
#!/bin/sh
PORT=$(vagrant ssh-config | grep Port | grep -o '[0-9]\+')
ssh -q \
-o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \
-i ~/.vagrant.d/insecure_private_key \
vagrant@localhost \
-p $PORT \
"$@"
ワンライナーとして(kgadekに感謝):
ssh $(vagrant ssh-config | awk 'NR>1 {print " -o "$1"="$2}') localhost
複数の vagrant ホストがある場合に対処するために、これにより目的のホストが選択され、構成から空白行が削除されます (sed を使用):
HOST=name-of-my-host
ssh $(vagrant ssh-config $HOST | sed '/^[[:space:]]*$/d' | awk 'NR>1 {print " -o "$1"="$2}') localhost
パラメーターを使用して、全体vagrant ssh-config
を構成ファイルとして渡すだけです。接続先のホスト エイリアスは、 の最初の行で定義されています。と接続できることを意味します。ssh
-F configfile
vagrant ssh-config
Host default
ssh default
標準入力から構成ファイルを読み取るオプションが表示されなかったので、一時ファイル ルートを使用しました。$TMPDIR.vagrant-ssh-config
これは、後で一時ファイルをクリーンアップするワンライナーです。Vagrantfile
vagrant ボックスが稼働中であると仮定すると、 と同じディレクトリで実行する必要があります。
vagrant ssh-config > $TMPDIR.vagrant-ssh-config && ssh default -F $TMPDIR.vagrant-ssh-config ; rm $TMPDIR.vagrant-ssh-config
注: 私の Mac OSX システムでは、 (今のところ)に$TMPDIR
展開されます。システムに設定されていない場合は、別の変数または別のフォルダーを/var/folders/46/yltlhtgx8m5cg68_w95wgvy41324gn/T/
使用します。
stdinを使用する必要がない場合ssh
(たとえば、コマンドを実行してログアウトしたい場合)、次を使用できます。
vagrant ssh-config --host default | ssh -F /dev/stdin default
この方法は、 Google グループに関する同様の質問への回答として提案されました。
残念ながら、bash プロセスの置換も機能しません (詳細については、unix.stackexchangeに関するこの質問を参照してください)。
インタラクティブなシェルが必要な場合の最良のオプションは、一時ファイルを作成し、それをssh -F
使用するかawk
、他の回答で提案されているように使用することです。
最小限のコマンドでボックスに接続するだけの場合は、それが使用しているポート (実行時に出力されるvagrant up
か、実行時に表示されるvagrant ssh-config
) と秘密 SSH キーの場所 (実行時にも表示されるvagrant ssh-config
)を知る必要があります。
次に、キーとポートを提供するだけです。
ssh -p 2222 -i $HOME/vagrantenv/.vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1
他の多くの回答は、Vagrant がインストールされていることを前提としています。
Windows 10 に Vagrant をインストールしましたが、Vagrant がvagrant ssh
受け入れない SSH クライアントとして PuTTy を使用しているため、インストールできません。
ssh
PATH にある実行可能ファイルは PuTTY Link SSH クライアントです。Vagrant は、OpenSSH SSH クライアントとのみ互換性があります。
ただし、Windows 10 には、Windows 上の Ubuntu 上の Bash もあります。したがって、次のコマンドでそれを使用します。
ssh vagrant@127.0.0.1 -p2222 -i .vagrant/machines/default/virtualbox/private_key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=Fatal
Win10-Ubuntu に Vagrant をインストールするのは簡単ですが、何らかの理由で Virtualbox をインストールする必要もあります。
NB私はそのssh default -F vagrant-ssh-config
方法で試しましたが、私はただ得ます
許可が拒否されました (公開鍵、パスワード)。
これは、パスが Windows パスであるためだと推測していIdentityFile
ますが、Bash では . で始まる必要があり/mnt/c/
ます。ファイルを書き出してから、それがうまくいく場合は変更することができると思います。
私の環境。Win7 + Centos です。ほとんどの同意を得た答えは、私にはうまくいきません。試行後に失敗した後ssh -p [port] [usrname]@127.0.01
、XShell を使用して vagrant ポートとユーザー名で新しいセッションを追加します。
できます。
多分Xshellが候補です。