มีวิธีดู (และควบคุม) เดสก์ท็อประยะไกลผ่าน SSH หรือไม่ ฉันจะไม่สามารถเข้าถึงเครื่องโฮสต์จากระยะไกลได้
มีวิธีดู (และควบคุม) เดสก์ท็อประยะไกลผ่าน SSH หรือไม่ ฉันจะไม่สามารถเข้าถึงเครื่องโฮสต์จากระยะไกลได้
คำตอบ:
สิ่งนี้สามารถทำได้กับเซิร์ฟเวอร์ vino vnc & remmina (ทั้งคู่มาเป็นค่าเริ่มต้นด้วย ubuntu; หากไม่ได้ติดตั้งโดยใช้sudo apt-get install remmina) จากนั้นเรียกใช้คำสั่งต่อไปนี้จากโลคัลคอมพิวเตอร์ในเทอร์มินัลพรอมต์:
ssh -Y gman@remote. ใช้การส่งต่อ X11 ที่เชื่อถือได้มิฉะนั้นจะไม่ทำงาน
vino-preferences. มันจะเปิดการตั้งค่า vino

คลิกยังconfigure network automatically to accept connectionด้วย แต่ไม่ต้องใส่รหัสผ่านใด ๆ base64 ของการเข้ารหัส จากนั้นคลิกปิด จากนั้นเรียกใช้:
sudo -s
export DISPLAY=:0.0
xhost +
/usr/lib/vino/vino-server &
มันจะเริ่มต้นเซิร์ฟเวอร์ vino
ออกจากระบบเซิร์ฟเวอร์:
xhost -
Press CTRL+C twice
exit
exit
จากนั้นเปิดremmina เลือกvncภายใต้โปรโตคอล
ภายใต้basicแท็บให้ใส่ที่อยู่เซิร์ฟเวอร์ในserverฟิลด์
บนแท็บ SSH enable ssh tunnelคลิก ภายใต้ssh authenticationอาจเป็นpasswordหรือpublic key:

คลิกบันทึก จากนั้นคลิกสองครั้งที่ชื่อการเชื่อมต่อ (โฮมเดสก์ท็อปตามที่แสดงในรูปภาพ) เพื่อเริ่มการเรียกดูเดสก์ท็อประยะไกล
x11vncเป็นเซิร์ฟเวอร์ VNC ที่เรียบง่ายและคุณไม่ต้องวุ่นวายกับการตั้งค่า Gnome หรือไฟร์วอลล์ 500 เครื่องเพียงแค่ติดตั้งx11vncบนคอมพิวเตอร์ทุกเครื่องของคุณ (พร้อมหุ่นเชิดหรืออะไรก็ตามที่คุณใช้สำหรับการควบคุมจำนวนมาก)
จากนั้นใช้งานคอมพิวเตอร์ในพื้นที่ของคุณ:
ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"
เห็นได้ชัดว่าการสลับuser@hostชื่อผู้ใช้และชื่อโฮสต์ / IP ของคอมพิวเตอร์ระยะไกล
และจากนั้นใช้ไคลเอนต์ VNC localhost:5900ที่คุณเลือกที่จะเชื่อมต่อไปยัง คำสั่ง SSH เริ่มต้นเซิร์ฟเวอร์ vnc บนคอมพิวเตอร์ระยะไกลจากนั้นอุโมงค์กลับไปที่พอร์ตนั้นผ่าน SSH คุณไม่จำเป็นต้องเปิดพอร์ตใด ๆ (ตราบใดที่คุณสามารถ SSH ได้แล้ว)
หากคอมพิวเตอร์ของคุณมีการตั้งค่าการแสดงผลที่ตลกคุณอาจทำได้ดีกว่าที่จะออกจาก-display :0กลุ่มในคำสั่ง SSH x11vncจะพยายามค้นหาจอแสดงผลที่ถูกต้องโดยอัตโนมัติ
ที่มา: askubuntu
vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(บน Debian / Ubuntu ที่วิวเวอร์มาจาก tightvnc) หรือvncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(บน Red Hat / Fedora วิวเวอร์มาจาก tigervnc) ซึ่งระดับคุณภาพทั้ง Debian และ Redhat คือ ระหว่าง 0 ถึง 9 โดยที่ 9 ดีที่สุด แต่ต้องการการเชื่อมต่อที่รวดเร็ว
vncviewerการเชื่อมต่อที่ช้า ฉันเองอาจจะตั้งค่าQualityLevel=4 or 5เพราะ0 qualitylevel(ซึ่งก็คือ256 colorsฉันคิดว่า) มันน่าเบื่อเกินไปสำหรับฉัน
-auth guessและเรียกใช้เป็นรูต มีประโยชน์มากขอบคุณ!
สมมติว่าคุณได้ติดตั้งOpenSSH Serverบนเครื่องโฮสต์ของคุณแล้วคุณต้องเปิดใช้งานการควบคุมเดสก์ทอปบนเครื่องโฮสต์ของคุณ หากคุณสามารถเปิดใช้งานการควบคุมเดสก์ท็อปบนเครื่องโฮสต์ของคุณก่อนจากนั้นไปที่ 1a หากคุณต้องเปิดใช้งานการควบคุมเดสก์ท็อปบนเครื่องโฮสต์ของคุณจากระยะไกลให้ไปที่ 1b
ถัดไปสร้างโปรไฟล์ไคลเอนต์เดสก์ท็อประยะไกลบนเครื่องไคลเอนต์ของคุณเพื่อเชื่อมต่อกับเครื่องโฮสต์ผ่านอุโมงค์ SSH และดูและควบคุมเดสก์ท็อปของเครื่องโฮสต์ผ่านอุโมงค์ SSH ในที่สุด
ทำสิ่งต่อไปนี้บนเครื่องโฮสต์:
vino-preferences
vino-preferences ยังอยู่ใน Dash ภายใต้ Desktop Sharing
Allow other users to view your desktopAllow other users to control your desktopRequire the user to enter this passwordทำสิ่งต่อไปนี้บนเครื่องไคลเอนต์แทนที่123.123.12.3ด้วยที่อยู่ IP ของเครื่องโฮสต์ของคุณ:
ssh -Y 123.123.12.3
vino-preferences
vino-preferences ยังอยู่ใน Dash ภายใต้ Desktop Sharing
Allow other users to view your desktopAllow other users to control your desktopRequire the user to enter this passwordทำสิ่งต่อไปนี้บนเครื่องไคลเอ็นต์:
remmina
Remmina Remote Desktop ClientCtrl+ Nหรือการเชื่อมต่อ> ใหม่

ServerSSHแท็บ
Enable SSH TunnelSSH Authentication <username>และโหมดของคุณบนเครื่องไคลเอนต์เมื่อถูกถาม<username>รหัสผ่านให้ป้อนเพื่อสร้างอุโมงค์ SSH เมื่อถามถึงรหัสผ่าน VNC ให้ป้อนวลีรหัสผ่านที่คุณป้อนก่อนหน้านี้ลงในเครื่องโฮสต์
หากประสบความสำเร็จในขั้นตอนนี้คุณควรดูและควบคุมเดสก์ท็อปของเครื่องโฮสต์จากเครื่องไคลเอนต์ของคุณผ่านอุโมงค์ SSH
ฉันสามารถตั้งค่าการติดตั้ง Ubuntu 16.04 ใหม่จากการเชื่อมต่อ ssh ระยะไกลด้วยสคริปต์ต่อไปนี้:
#! / bin / ทุบตี ส่งออก DISPLAY =: 0 อ่าน -e -p "รหัสผ่าน VNC: รหัสผ่าน" -i "ubuntu" dconf write / org / gnome / desktop / remote-access / enabled จริง dconf write / org / gnome / desktop / remote-access / prompt-enabled false dconf write / org / gnome / desktop / remote-access / authentication-methods "['vnc']" dconf เขียน / org / gnome / desktop / remote-access / require-encryption เท็จ dconf เขียน / org / gnome / desktop / remote-access / vnc-password \ "\ '$ (echo -n $ รหัสผ่าน | base64) \' \" dconf dump / org / gnome / desktop / remote-access / sudo service lightdm ทำการรีสตาร์ท
การอ้างอิงเป็นสิ่งสำคัญสำหรับการตั้งค่าสตริงใด ๆ (เห็บเดียวภายในเครื่องหมายคำพูด) สำหรับ dconf เพื่อให้สามารถเขียนได้จำเป็นต้องเข้าถึง XWindows ดังนั้นจึงจำเป็นต้องมีส่วนส่งออก DISPLAY ฉันคิดว่าคุณยังต้องเข้าสู่เดสก์ท็อปบนเครื่อง Ubuntu จริงเพื่อเชื่อมต่อกับ VNC หลังจากนี้ คำสั่ง dump นั้นอยู่ที่นั่นเพื่อยืนยันการตั้งค่าทั้งหมดที่คุณมีคุณไม่ต้องการ
เป็นทางเลือกคุณอาจต้องการทำสิ่งนี้หากคุณต้องการให้จอแสดงผลอยู่ตลอดเวลา:
dconf write / org / gnome / desktop / screensaver / lock-enabled false dconf write / org / gnome / desktop / screensaver / ubuntu-lock-on-suspend false dconf write / org / gnome / desktop / session / idle-delay "uint32 0"
Xnestกับ X11 สำหรับการอ้างอิงเพื่อเริ่มเซสชันจากระยะไกลและส่งต่อไปยังคอมพิวเตอร์ปัจจุบันของคุณ (ฉันทำสิ่งนี้เป็นครั้งคราวกับ pi ของฉัน) man pageฉันใช้Xnestอย่างนั้น:
Xnest :1 -ac &DISPLAY=:1 . /etc/X11/Xsessionวิธีเริ่มเซิร์ฟเวอร์ Vino จากระยะไกลโดยไม่ต้องส่งต่อ X (บรรทัดคำสั่งเท่านั้น)
เข้าสู่ระบบคอมพิวเตอร์ระยะไกลในฐานะผู้ใช้ที่จะแชร์เดสก์ท็อปและพอร์ตส่งต่อ 5900 ไปยังพอร์ตเดียวกันบนโลคอลโฮสต์ ด้วย PuTTY การเปลี่ยนเส้นทางถูกตั้งค่าใน Connection / SSH / Tunnels ด้วยบรรทัดคำสั่งให้ใช้:
ssh -L 5900:localhost:5900 user@remote-computer
ติดตั้งvino-serverหากยังไม่ได้ติดตั้ง ตัวอย่างเช่น:
sudo apt install vino
เปิดใช้งานการแชร์เดสก์ท็อป (จับคู่หมายเลขที่แสดงในบรรทัดที่ 1 และ 2):
echo $DISPLAY
export DISPLAY=:0
dbus-launch --exit-with-session gsettings set org.gnome.Vino enabled true
dbus-launch --exit-with-session gsettings set org.gnome.Vino prompt-enabled false
dbus-launch --exit-with-session gsettings set org.gnome.Vino require-encryption false
/usr/lib/vino/vino-server
เริ่มโปรแกรมดู VNC และเชื่อมต่อกับlocalhostที่อยู่เซิร์ฟเวอร์ VNC
No protocol specified Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Could not connect: Connection refused Cannot open display: Run 'vino-server --help' to see a full list of available command line options
จาก @Khurshid Alam คำตอบฉันขอนำเสนอตัวอย่างต่อไปนี้:
ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost
มันเป็นคำสั่งเดียวที่ไม่ต้องการการโต้ตอบใด ๆ
มันสร้างอุโมงค์ SSH ด้วยการส่งต่อพอร์ตเริ่มต้นx11vncด้วยวิธีที่ปลอดภัยและเปิดใช้งานและเชื่อมต่อกับวิวเวอร์ VNC
มันต้องการ x11vnc บนโฮสต์เป้าหมาย แต่ไม่มีการกำหนดค่าเพิ่มเติม
ในเซิร์ฟเวอร์พีซี
ในไคลเอนต์พีซี (จากตำแหน่งที่คุณต้องการควบคุม UI ของเซิร์ฟเวอร์)
ผิดพลาด