web-dev-qa-db-ja.com

リモートサーバーからのvagrant転送ssh

ホストOSでVMを実行するようにvagrantを設定しました。私がやりたいのは、他のマシンからvagrant vmに直接sshできることです(つまり、ホストにsshしてからvagrant sshなどをvagrant vmにすべきではありません)。

現在、ssh [email protected] -p 2222を使用してホストosからvagrant sshを使用せずにsshを実行できます。ただし、同じコマンド(127.0.0.1をホストのIPアドレスに置き換える)を実行すると、「ssh connect to Host XXXXX port 2222:Connection refused」というメッセージが表示されます。

独自のポート転送ルールをvagrantに追加してみました。

config.vm.network :forwarded_port, guest: 22, Host: 2222

ただし、ホストマシンまたはネットワーク内の他のマシンからのssh接続は許可されません。さらに、浮浪者のドキュメントで config.ssh を使用してしばらく過ごしました。私はそれらのパラメータのほとんどがvagrant vmがsshを実行しているポートを指定していると思います。

これはそれほど難しいことではないと思います。誰かが私が間違っている可能性があること、またはリモートサーバーからvagrant vmにsshするために何を別の方法で行うべきかを知っていますか?

23
Behram Mistree

ネットワークをパブリックに変更したくない場合は、次のようにしてsshのデフォルトのポート転送を上書きできます。

config.vm.network :forwarded_port, guest: 22, Host: 2222, Host_ip: "0.0.0.0", id: "ssh", auto_correct: true

これにより、ゲスト22ポートがホストマシンの2222に転送され、任意のIPから利用できるため、ローカルマシンの外部からアクセスできます。

35
TlmaK0

V1.2.3以降、Vagrantポート転送はデフォルトで127.0.0.1とバインドするため、ローカル接続のみが許可されます

ポート転送がネットワークインターフェース(eth0、wlan0など)にバインドされていなかったため、「接続が拒否されました」というメッセージが表示されました。ホストのポート2222は、同じネットワーク内のホストに対しても開かれていません(他のホストからアクセスできないループバックインターフェイス)。

(同じLAN内の)リモートホストからVagrant VM=に直接SSHで接続する場合は、パブリックネットワーク(VirtualBoxのブリッジネットワークモード)を使用するのが最も簡単な方法です。

以下をVagrantfileに追加し、vagrant reloadを実行します。

パブリックネットワークインターフェースの1つを介してブリッジする必要があります。VMが起動した後、その中にvagrant sshを実行し、ifconfig -aまたはip addrを実行してIPアドレスをsshに取得できるようになります。リモートホストから。

サンプルVagrantfile

<!-- language: lang-rb -->

config.vm.network :public_network # 2nd interface bridged mode

またはより高度な場合は、パブリックネットワークのデフォルトのネットワークインターフェイスを設定できます

<!-- language: lang-rb -->

config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'

もっと見る=> パブリックネットワーク

18
Terry Wang

次のように、Vagrantfileに別のルールを追加することもできます。

config.vm.network :forwarded_port, guest: 1234, Host: 22

デフォルトのポート(2222)でVagrantに接続し、/etc/ssh/sshd_configを編集してから、以前に 'guest'として構成されていたポートをPort 22の下に追加すると、次のようになります。

...
Port 22 #Uncomment this line if it's commented
Port 1234
....

最後に、sshデーモンを再起動するか、vagrant reloadを実行します(VMの実行中にVagrantfileを編集した場合は、再ロードする必要があります)。これで、Vagrantに接続できます。ホストコンピュータの外部から「ホスト」ポート(私の場合は22)を使用します。

起動時にVagrantがハングするため、デフォルトのポートを削除することはできません。

6
inorichi

vagrant share --sshを使用

Vagrantには、リモートSSHアクセス用のVagrant VMを自動的に登録するためのサービスがあります。

ここを参照してください: https://www.vagrantup.com/docs/share/ssh.html

vagrant share --sshを呼び出します。
これにより、SSHキー(暗号化され、パスワードで保護された)が生成され、Hashicorpサーバーにアップロードされ、愚かなグローバルボックス名が返されます(例: "rambunctious-deer-3496")。
そして、

  • hashicorpがある Atlasアカウント
  • ボックス名を知っている、
  • キーのパスワードを知っている、そして
  • vagrantがインストールされています(!)

vagrant connect --ssh BOXNAMEを介してボックスへのリモートSSHを実行できます。
Vagrantが舞台裏のすべての管理者の面倒を見てくれます(ここに 一部の詳細 があります)。

宣伝通りに動作します。
Iguessこれは、Vagrant Host(単なるVMではない)がNATの背後にある場合でも機能します。

制限:

  • vagrant shareセッションは期限切れになります( 現在8時間後
  • すべてのトラフィックが(おそらく)Altasサーバー経由でルーティングされるため、多少の遅延が予想されます
  • おそらく15分間使用しなかった後、リモート接続が(明確な理由なしに)閉じているのを見ました。
2
Lutz Prechelt