ホスト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するために何を別の方法で行うべきかを知っていますか?
ネットワークをパブリックに変更したくない場合は、次のようにしてsshのデフォルトのポート転送を上書きできます。
config.vm.network :forwarded_port, guest: 22, Host: 2222, Host_ip: "0.0.0.0", id: "ssh", auto_correct: true
これにより、ゲスト22ポートがホストマシンの2222に転送され、任意のIPから利用できるため、ローカルマシンの外部からアクセスできます。
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)'
もっと見る=> パブリックネットワーク
次のように、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がハングするため、デフォルトのポートを削除することはできません。
vagrant share --ssh
を使用Vagrantには、リモートSSHアクセス用のVagrant VMを自動的に登録するためのサービスがあります。
ここを参照してください: https://www.vagrantup.com/docs/share/ssh.html
vagrant share --ssh
を呼び出します。
これにより、SSHキー(暗号化され、パスワードで保護された)が生成され、Hashicorpサーバーにアップロードされ、愚かなグローバルボックス名が返されます(例: "rambunctious-deer-3496")。
そして、
vagrant connect --ssh BOXNAME
を介してボックスへのリモートSSHを実行できます。
Vagrantが舞台裏のすべての管理者の面倒を見てくれます(ここに 一部の詳細 があります)。
宣伝通りに動作します。
Iguessこれは、Vagrant Host(単なるVMではない)がNATの背後にある場合でも機能します。
制限:
vagrant share
セッションは期限切れになります( 現在8時間後 )