কীউএমইউ ব্যবহার করে হোস্ট থেকে অতিথি কীভাবে এসএসএইচ করবেন?


30

আমি কীমু ব্যবহার করে হোস্ট থেকে গেস্ট সেটআপ করব? আমি কোনও বিশেষ পরামিতি ছাড়াই ভিএম বুট করার সময় আমি পোর্ট পুনঃনির্দেশটি ব্যবহার করতে সক্ষম হয়েছি:

/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001

তবে যখন আমি নিম্নলিখিতটি ব্যবহার করে বুট করার চেষ্টা করি:

/usr/bin/qemu-system-x86_64 \
-m 1024 \
-name vserialtest \
-hda ubuntu1204 \
-chardev socket,host=localhost,port=7777,server,nowait,id=port1-char \
-device virtio-serial \
-device virtserialport,id=port1,chardev=port1-char,name=org.fedoraproject.port.0 \
-net user,hostfwd=tcp:7777::8001

আমি নিম্নলিখিত ত্রুটি পেয়েছি এবং ভিএম বুট করে না:

qemu-system-x86_64: -net user,hostfwd=tcp:7777::8001: invalid host
forwarding rule 'tcp:7777::8001'
qemu-system-x86_64: -net user,hostfwd=tcp:7777::8001: Device 'user'
could not be initialized

দয়া করে নোট করুন যে আমি -netকোনও সমস্যা ছাড়াই প্যারামিটার ছাড়াই ভিএম বুট করতে সক্ষম , তবে আমি হোস্ট থেকে অতিথির জন্য ssh সেটআপ করতে চাই। অতিথি থেকে হোস্টে ssh প্রত্যাশার মতো ঠিকঠাক কাজ করে।

সম্পাদন করা

আমি ব্যবহার করার চেষ্টা করেছি

-net user,hostfwd=tcp::7777-:8001

পাশাপাশি

-net user,hostfwd=tcp::7777:8001

তবে তবুও ত্রুটিটি স্থির থাকে এবং ভিএম বুট হয় না।


উত্তর:


37

আমি মনে করি যে ত্রুটিটি নেট বিবৃতি থেকে আসে নি, তবে থেকে:

-chardev socket,host=localhost,port=7777,server,nowait,id=port1-char

বিবৃতি ইতিমধ্যে 7777 বন্দর ব্যবহার করে uses পোর্ট ফরওয়ার্ডিংয়ের সাথে with

-net user,hostfwd=tcp::7777-:8001

ভার্টিও সিরিয়াল চ্যানেল সেট আপ না করার সময় এটি ঠিক কাজ করে।

যদি আমি সঠিকভাবে বুঝতে পারি তবে আপনি ইউনিক্স ডোমেন সকেট ব্যবহার করে হোস্ট থেকে ভিএম-তে যোগাযোগ করার জন্য একটি ভিরিটিও সিরিয়াল চ্যানেল সেট আপ করতে চান?

এই ক্ষেত্রে, নিম্নলিখিতটি কাজটি করতে পারে:

/usr/bin/qemu-system-x86_64 \
-m 1024 \
-name vserialtest \
-hda ubuntu1204 \
-chardev socket,path=/tmp/port1,server,nowait,id=port1-char \
-device virtio-serial \
-device virtserialport,id=port1,chardev=port1-char,name=org.fedoraproject.port.0 \
-net user,hostfwd=tcp::7777-:8001

সম্পাদনা করুন:

কীভাবে হোস্ট থেকে ভিএম-তে সংযোগ স্থাপনের একটি উদাহরণ:

-net user,hostfwd=tcp::10022-:22
-net nic

এই হোস্টফোরওয়ার্ডিং লোকালহোস্ট (হোস্ট) পোর্ট 10022 ভিএম-তে 22 পোর্টে ম্যাপ করে। একবার ভিএম এর শুরু করার পরে আপনি লোকালহোস্ট থেকে এটি নীচে অ্যাক্সেস করতে পারবেন:

ssh vmuser@localhost -p10022

-Net নিক কমান্ড একটি খুব বেসিক ভার্চুয়াল নেটওয়ার্ক ইন্টারফেস কার্ড শুরু করে।


হ্যাঁ, আপনি ঠিক বলেছেন, আমি হোস্ট থেকে অতিথির কাছে যোগাযোগ স্থাপনের জন্য ভাইরিও-সিরিয়ালটি ব্যবহার করার চেষ্টা করছি। ভিএম হোস্ট কনসোলে একটি সতর্কতা দেওয়ার চেষ্টা করেছে: Warning: vlan 0 with no nicsতবে আমি যখন ifconfigঅতিথির সাথে করি তখন আমি কেবল দেখতে পাই loএবং ssh: connect to host 10.0.2.15 port 22: Connection timed outযখন আমি এসএসএস করার চেষ্টা করি তখনও আমি পাই ; আমি যে আইপি ব্যবহার করেছি সেগুলি 10.0.2.15, যা man qemu-system-x86_64স্ট্যাটিক আইপি বরাদ্দ না করা থাকলে প্রথম ভিএম বুট করা আইপি নির্ধারিত হয়। এবং এখন অতিথির কোনও ইন্টারনেট সংযোগ নেই।
জবিন

আপনি যা করতে চাইতে পারেন তা হ'ল অন্য পোর্টে ssh এর জন্য ব্যবহৃত 22 পোর্টটি মানচিত্র করা এবং তারপরে ভিএম অ্যাক্সেস করার জন্য হোস্ট মেশিন থেকে এটিতে সংযোগ স্থাপন করুন। আমি আমার উত্তরটি একটি উদাহরণ দিয়ে সম্পাদনা করেছি।
মাস_কুর ১

সম্পাদিত উত্তর পুরোপুরি কাজ করে!
dbernard

19

আরম্ভ করার সময় এটি ব্যবহার করে দেখুন qemu -redir tcp:2222::22

$ ssh -p 2222 localhost

Tcp: 2222 :: qemu লঞ্চ কমান্ডের 22 টি পতাকাটি ভার্চুয়াল মেশিনে হোস্ট মেশিনের 2222 পোর্টকে 22 (ডিফল্ট ssh পোর্ট) পোর্ট করতে ম্যাপ করে।

তারপরে, কেবলমাত্র আপনার লোকালহোস্টের 2222 পোর্টে (হোস্ট মেশিন) শ্যাশিংয়ের ফলে ভার্চুয়াল মেশিনের যে কোনও ট্র্যাফিককে ssh 22 বন্দরে পুনর্নির্দেশ করা হবে, এটি আপনাকে অন্য কোনও মেশিনের মতোই সাধারণত স্ক্যাশ করার অনুমতি দেয়।


3
ইউনিক্স ও লিনাক্সে স্বাগতম! আমরা দীর্ঘ উত্তর খুঁজছি যা কিছু ব্যাখ্যা এবং প্রসঙ্গ সরবরাহ করে। শুধু "এটি চেষ্টা করুন ..." বলবেন না; আপনার উত্তর কেন সঠিক তা ব্যাখ্যা করুন, আদর্শভাবে উদ্ধৃতি দিয়ে। ব্যাখ্যাগুলি অন্তর্ভুক্ত না করে এমন উত্তরগুলি সরানো হতে পারে।
জি-ম্যান 5 'এ 22

3
আমি কেবল এটি বলার প্রয়োজন বোধ করছি যে এই উত্তরটি আমাকে উপরের অন্যান্য উত্তরগুলির চেয়ে আরও বেশি সাহায্য করেছে। কোনও অতিরিক্ত অতিরিক্ত তথ্য নয় এবং সর্বোপরি, এটি কাজ করে। কোনও গুগল-ক্যোয়ারী থেকে "অবতরণ করার সময় পারফেক্ট" আমি কীভাবে কেমুতে প্রবেশ করি "
জান

1
এই উত্তরটি 99.9% মানুষ আসলে যা চায় তা করে। অর্থাত্ হোস্ট মেশিনটি স্কিপ বা অনুরূপ ব্যবহার করে ভার্চুয়াল মেশিনে এবং ফাইলগুলি অনুলিপি করার ক্ষমতা সহ ভার্চুয়াল মেশিনে এসএসএস অ্যাক্সেস পায়।
নাল ইউজার

1
উজ্জ্বল! আমার রাস্পবেরি পাই কমান্ডটি এখন দেখে মনে হচ্ছেqemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw console=ttyAMA0,115200" -hda 2014-01-07-wheezy-raspbian.img -nographic -redir tcp:2222::22
উত্সাহী

2
man qemu-system-x86_64২.০.০: দ্রষ্টব্য: উত্তরাধিকারের একা-থাকা বিকল্পগুলি -tftp, -butp, -smb এবং -redir এখনও প্রক্রিয়াভুক্ত এবং নেট ব্যবহারকারীকে প্রয়োগ করা হয়।
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

4

ওপেনএসএসএইচ কনফিগারেশন বিল্ড্রুট 2016.05, কিউইএমইউ 2.5.0, উবুন্টু 16.04 হোস্টে পরীক্ষিত

কিউইএমইউ নেটওয়ার্ক ফরোয়ার্ডিংয়ের পাশাপাশি আপনার এসএসএইচ সঠিকভাবে সেটআপ করা দরকার যা আমি এখানে কভার করব।

qemu_x86_64_defconfigওপেনশ প্যাকেজটি দিয়ে শুরু করুন এবং সক্ষম করুন:

make qemu_x86_64_defconfig
echo 'BR2_PACKAGE_OPENSSH=y' >> .config
make BR2_JLEVEL=$(nproc)

তারপরে কিউইএমইউ শুরু করুন:

qemu-system-x86_64 \
  -M pc \
  -append root=/dev/vda \
  -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
  -enable-kvm \
  -kernel output/images/bzImage \
  -m 512 \
  -net nic,model=virtio \
  -net user,hostfwd=tcp::2222-:22

তারপরে অতিথি:

vi /etc/ssh/sshd_config

নিম্নলিখিত সেটিংস সংশোধন করুন:

PermitRootLogin yes
PermitEmptyPasswords yes

এবং সার্ভারটি পুনরায় চালু করুন:

/etc/init.d/S50sshd restart

এই ফাইলটি বিদ্যমান কারণেই sshd ডিফল্টরূপে শুরু হয়, উত্সটি এখানে রয়েছে: https://github.com/buildroot/buildroot/blob/2018.02/package/openssh/S50sshd এবং মূল প্রারম্ভিক ক্রিয়াকলাপগুলি হ'ল :

/usr/bin/ssh-keygen -A
/usr/sbin/sshd
touch /var/lock/sshd

তারপরে হোস্ট থেকে:

ssh root@localhost -p 2222

ব্যর্থতার ক্ষেত্রে, প্রথম পরীক্ষা করুন যে নেটওয়ার্কিং ফরোয়ার্ডিং sshd এর চেয়ে নিম্ন স্তরের সরঞ্জামের সাথে কাজ করছে: যেমন nc -l এখানে বর্ণিত

অতিথিতে সার্ভার লগগুলিও পরীক্ষা করুন:

less /var/log/messages

তারপরে চূড়ান্ত সিস্টেমে আপনার সাথে লগ ফাইলটি তৈরিBR2_ROOTFS_OVERLAY বা স্বয়ংক্রিয়ভাবে তৈরি করা উচিত BR2_ROOTFS_POST_BUILD_SCRIPT: উত্পন্ন লক্ষ্য ফাইল সিস্টেমটি অনুকূলিতকরণ buildroot.org


-1

আমি বিশ্বাস করি আপনার ব্যবহার করা দরকার hostfwd=tcp::7777-:8001বাhostfwd=tcp::7777:8001

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.