169

コマンドを使用してシェルスクリプト内でVagrantがVMにログインする方法を再現したいsshので、Vagrantインスタンスのエイリアスを作成します。

通常のsshコマンドを使用してアクセスするためのコマンド構文は何ですか?

4

16 に答える 16

183

すでに多くの回答がありますが、それらはすべて複雑すぎるように見えたり、質問者が抱えていなかった問題を解決したりします。

単に:

# save the config to a file
vagrant ssh-config > vagrant-ssh

# run ssh with the file.
ssh -F vagrant-ssh default
于 2014-05-15T17:58:37.417 に答える
114

-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
于 2012-10-17T16:04:39.413 に答える
20

パラメーターを使用して、全体vagrant ssh-configを構成ファイルとして渡すだけです。接続先のホスト エイリアスは、 の最初の行で定義されています。と接続できることを意味します。ssh-F configfilevagrant ssh-configHost defaultssh default

標準入力から構成ファイルを読み取るオプションが表示されなかったので、一時ファイル ルートを使用しました。$TMPDIR.vagrant-ssh-configこれは、後で一時ファイルをクリーンアップするワンライナーです。Vagrantfilevagrant ボックスが稼働中であると仮定すると、 と同じディレクトリで実行する必要があります。

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/使用します。

于 2013-01-03T16:26:22.777 に答える
7

stdinを使用する必要がない場合ssh(たとえば、コマンドを実行してログアウトしたい場合)、次を使用できます。

vagrant ssh-config --host default | ssh -F /dev/stdin default

この方法は、 Google グループに関する同様の質問への回答として提案されました。

残念ながら、bash プロセスの置換も機能しません (詳細については、unix.stackexchangeに関するこの質問を参照してください)。

インタラクティブなシェルが必要な場合の最良のオプションは、一時ファイルを作成し、それをssh -F使用するかawk、他の回答で提案されているように使用することです。

于 2013-12-20T11:50:45.197 に答える
5

最小限のコマンドでボックスに接続するだけの場合は、それが使用しているポート (実行時に出力される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

于 2016-06-25T23:45:04.203 に答える
4

他の多くの回答は、Vagrant がインストールされていることを前提としています。

Windows 10 に Vagrant をインストールしましたが、Vagrant がvagrant ssh受け入れない SSH クライアントとして PuTTy を使用しているため、インストールできません。

sshPATH にある実行可能ファイルは 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/ます。ファイルを書き出してから、それがうまくいく場合は変更することができると思います。

于 2017-02-24T04:19:27.663 に答える
0

私の環境。Win7 + Centos です。ほとんどの同意を得た答えは、私にはうまくいきません。試行後に失敗した後ssh -p [port] [usrname]@127.0.01、XShell を使用して vagrant ポートとユーザー名で新しいセッションを追加します。

できます。

多分Xshellが候補です。

于 2016-11-12T07:38:14.273 に答える