วิธีการส่งต่อ X ผ่าน SSH เพื่อเรียกใช้แอปพลิเคชันกราฟิกจากระยะไกล


342

ฉันมีเครื่องที่ใช้ Ubuntu ซึ่งฉัน SSH ไปจากเครื่อง Fedora 14 ของฉัน ฉันต้องการส่งต่อ X จากเครื่อง Ubuntu กลับสู่ Fedora เพื่อให้สามารถเรียกใช้โปรแกรมกราฟิกจากระยะไกล เครื่องทั้งสองอยู่บน LAN

ฉันรู้ว่า-Xตัวเลือกเปิดใช้งานการส่งต่อ X11 ใน SSH แต่ฉันรู้สึกเหมือนว่าฉันพลาดขั้นตอนบางอย่างไป

ขั้นตอนที่จำเป็นในการส่งต่อ X จากเครื่อง Ubuntu ไปยัง Fedora ผ่าน SSH คืออะไร


6
ฉันรู้ว่านี่เป็นเรื่องธรรมดา แต่ฉันกำลังมีปัญหา คำตอบที่ชัดเจนสำหรับคำถามนี้จะเป็นประโยชน์สำหรับคนจำนวนมาก ตัวอย่างจำนวนมากรอบดูเหมือนจะละเว้นรายละเอียดที่สำคัญ
นาย Shickadance

คำตอบ:


411

การส่งต่อ X11 จำเป็นต้องเปิดใช้งานทั้งในฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์

ในด้านของลูกค้าที่-X(เมืองหลวง X) เลือกที่จะsshช่วยให้การส่ง X11 และคุณสามารถทำเรื่องนี้ให้เป็นค่าเริ่มต้น (สำหรับการเชื่อมต่อทั้งหมดหรือสำหรับ Conection เฉพาะ) ที่มีในForwardX11 yes~/.ssh/config

บนฝั่งเซิร์ฟเวอร์ , ต้องระบุไว้ในX11Forwarding yes /etc/ssh/sshd_configโปรดทราบว่าค่าเริ่มต้นจะไม่มีการส่งต่อ (การกระจายบางอย่างจะเปิดใช้งานในค่าเริ่มต้น/etc/ssh/sshd_config) และผู้ใช้ไม่สามารถแทนที่การตั้งค่านี้

xauthโปรแกรมจะต้องติดตั้งในฝั่งเซิร์ฟเวอร์ หากมีโปรแกรม X11 อยู่ที่นั่นเป็นไปได้มากว่าxauthจะมี ในกรณีที่ไม่น่าxauthได้รับการติดตั้งในตำแหน่งที่ไม่เป็นมาตรฐานสามารถเรียกผ่าน~/.ssh/rc(บนเซิร์ฟเวอร์!)

โปรดทราบว่าคุณไม่จำเป็นต้องตั้งค่าตัวแปรสภาพแวดล้อมใด ๆ บนเซิร์ฟเวอร์ DISPLAYและXAUTHORITYจะถูกตั้งค่าให้เหมาะสมโดยอัตโนมัติ หากคุณเรียกใช้ ssh และDISPLAYไม่ได้ตั้งค่าหมายความว่า ssh ไม่ได้ส่งต่อการเชื่อมต่อ X11

เพื่อยืนยันว่า ssh ส่งต่อ X11 ให้ตรวจสอบบรรทัดที่มีRequesting X11 forwardingอยู่ในssh -v -Xเอาต์พุต โปรดทราบว่าเซิร์ฟเวอร์จะไม่ตอบกลับด้วยวิธีใดวิธีหนึ่งเพื่อความปลอดภัยในการซ่อนรายละเอียดจากผู้โจมตี


31
@user: xhost +ไม่มีคุณไม่จำเป็นต้อง xhostมาจากยุคที่มีความอ่อนโยนเมื่อมีการเชื่อมต่อเครื่องกับเครือข่ายหมายความว่าคุณเชื่อถือได้ xhost +หมายความว่าทุกคนที่สามารถหลอกลวง IP ของคุณสามารถควบคุมเซสชันเซิร์ฟเวอร์ X ของคุณได้ ssh -Xจะตั้งค่าการอนุญาตที่จำเป็นทั้งหมด หากการส่งต่อ X11 ถูกปิดใช้งานในการกำหนดค่าเซิร์ฟเวอร์ให้พูดคุยกับผู้ดูแลระบบของคุณ ถ้าไม่ได้ทำงานให้ดูที่การส่งต่อ X11 ผ่าน SSH ถ้าการกำหนดค่าเซิร์ฟเวอร์ไม่อนุญาตให้มัน
Gilles

6
ขอบคุณที่พูดถึง xauth! การขาดสิ่งนั้นบนเซิร์ฟเวอร์เปล่าก็ทำให้ฉันเดือดร้อน
vasi

5
+1 สำหรับการสร้างความแตกต่างระหว่าง~/.ssh/configและ/etc/ssh/sshd_configในที่เดียวกัน ฉันไม่สามารถบอกได้ว่าพวกเขาเป็นไฟล์ที่แตกต่างกันหรือเพียงแค่การเปลี่ยนแปลงในระบบการตั้งชื่อ
puk

1
@KhurshidAlam มันไม่สำคัญว่าเซิร์ฟเวอร์จะใช้สภาพแวดล้อมแบบ GUI หรือไม่ ตรวจสอบการอนุญาตใน.Xauthorityไฟล์ หากใช้ Red Hat หรือระบบอื่นที่มี SELinux ให้ตรวจสอบบริบท SELinux ดูที่unix.stackexchange.com/questions/36540/…
Gilles

8
หลังจากssh -Xรันxterm &เพื่อรับเทอร์มินัลกราฟิกเป็นการทดสอบขั้นสุดท้ายเพื่อดูว่าทำงานหรือไม่
Alexander Taylor

87

ในการทำให้ X11 ส่งต่อทำงานกับ ssh คุณต้องมี 3 สิ่ง

  1. ลูกค้าของคุณจะต้องตั้งค่าเพื่อส่งต่อ X11
  2. เซิร์ฟเวอร์ของคุณจะต้องตั้งค่าให้อนุญาตการส่งต่อ X11
  3. เซิร์ฟเวอร์ของคุณต้องสามารถตั้งค่าการตรวจสอบความถูกต้อง X11

หากคุณมีทั้ง # 1 และ # 2 แต่ไม่มี # 3 อยู่คุณจะพบกับตัวแปรสภาพแวดล้อม DISPLAY ที่ว่างเปล่า

Soup-to-nuts นี่คือวิธีการส่งต่อ X11 ที่ทำงาน

  1. บนเซิร์ฟเวอร์ของคุณตรวจสอบให้แน่ใจว่า / etc / ssh / sshd_config มี:

    X11Forwarding yes
    X11DisplayOffset 10
    

    คุณอาจต้อง SIGHUP sshd เพื่อรับการเปลี่ยนแปลงเหล่านี้

    cat /var/run/sshd.pid | xargs kill -1
    
  2. บนเซิร์ฟเวอร์ของคุณตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง xauth

    belden@skretting:~$ which xauth
    /usr/bin/xauth
    

    หากคุณไม่ได้ติดตั้ง xauth คุณจะพบปัญหา "ตัวแปรสภาพแวดล้อม DISPLAY ว่างเปล่า"

  3. บนไคลเอนต์ของคุณเชื่อมต่อกับเซิร์ฟเวอร์ของคุณ โปรดบอกให้ ssh อนุญาตให้ส่งต่อ X11 ได้ ฉันชอบ

    belden@skretting:~$ ssh -X blyman@the-server
    

แต่คุณอาจชอบ

    belden@skretting:~$ ssh -o ForwardX11=yes blyman@the-server

หรือคุณสามารถตั้งค่านี้ใน ~ / .ssh / config ของคุณ


ฉันกำลังทำงานในตัวแปรสภาพแวดล้อม DISPLAY ที่ว่างเปล่าก่อนหน้านี้ในวันนี้เมื่อกำลังเข้าสู่เซิร์ฟเวอร์ใหม่ที่ฉันไม่ได้ดูแล การติดตามส่วน xauth ที่หายไปเป็นเรื่องสนุก นี่คือสิ่งที่ฉันทำและสิ่งที่คุณสามารถทำได้เช่นกัน

บนเวิร์กสเตชันในพื้นที่ของฉันซึ่งฉันเป็นผู้ดูแลระบบฉันตรวจสอบว่า / etc / ssh / sshd_config ตั้งค่าเพื่อส่งต่อ X11 เมื่อฉันกลับไปที่ localhost ฉันจะตั้งค่า DISPLAY ของฉันให้ถูกต้อง

การบังคับให้ DISPLAY รับการ unset นั้นไม่ยากเกินไป ฉันแค่ต้องดูว่า sshd และ ssh กำลังทำอะไรเพื่อให้มันถูกต้อง นี่คือผลลัพธ์เต็มของทุกสิ่งที่ฉันทำระหว่างทาง

    blyman@skretting:~$ mkdir ~/dummy-sshd
    blyman@skretting:~$ cp -r /etc/ssh/* ~/dummy-sshd/
    cp: cannot open `/etc/ssh/ssh_host_dsa_key' for reading: Permission denied
    cp: cannot open `/etc/ssh/ssh_host_rsa_key' for reading: Permission denied

แทนที่จะใช้ sudo เพื่อบังคับให้คัดลอกไฟล์ ssh_host_ {dsa, rsa} _key ของฉันฉันใช้ ssh-keygen เพื่อสร้างไฟล์จำลองด้วยตัวเอง

    blyman@skretting:~$ ssh-keygen -t rsa -f ~/dummy-sshd/ssh_host_rsa_key
    Generating public/private rsa key pair.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/blyman/dummy-sshd/ssh_host_rsa_key.
    Your public key has been saved in /home/blyman/dummy-sshd/ssh_host_rsa_key.pub.

ล้างและยกเลิกด้วย -t dsa:

    blyman@skretting:~$ ssh-keygen -t dsa -f ~/dummy-sshd/ssh_host_dsa_key
    # I bet you can visually copy-paste the above output down here

แก้ไข ~ / dummy-sshd / sshd_config เพื่อชี้ไปยังไฟล์คีย์ ssh_host ใหม่ที่ถูกต้อง

    # before
    blyman@skretting:~$ grep ssh_host /home/blyman/dummy-sshd/sshd_config 
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key

    # after
    blyman@skretting:~$ grep ssh_host /home/blyman/dummy-sshd/sshd_config 
    HostKey /home/blyman/dummy-sshd/ssh_host_rsa_key
    HostKey /home/blyman/dummy-sshd/ssh_host_dsa_key

เปิดไฟ sshd บนพอร์ตใหม่ในโหมดที่ไม่แยกออก:

    blyman@skretting:~$ sshd -p 50505 -f ~/dummy-sshd/sshd_config -d
    sshd re-exec requires execution with an absolute path

อ๊ะดีกว่าแก้ไขเส้นทางนั้น:

    blyman@skretting:~$ /usr/sbin/sshd -p 50505 -f ~/dummy-sshd/sshd_config -d
    debug1: sshd version OpenSSH_5.5p1 Debian-4ubuntu6
    debug1: read PEM private key done: type RSA
    debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
    debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
    debug1: private host key: #0 type 1 RSA
    debug1: read PEM private key done: type DSA
    debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024
    debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024
    debug1: private host key: #1 type 2 DSA
    debug1: setgroups() failed: Operation not permitted
    debug1: rexec_argv[0]='/usr/sbin/sshd'
    debug1: rexec_argv[1]='-p'
    debug1: rexec_argv[2]='50505'
    debug1: rexec_argv[3]='-f'
    debug1: rexec_argv[4]='/home/blyman/dummy-sshd/sshd_config'
    debug1: rexec_argv[5]='-d'
    Set /proc/self/oom_adj from 0 to -17
    debug1: Bind to port 50505 on 0.0.0.0.
    Server listening on 0.0.0.0 port 50505.
    debug1: Bind to port 50505 on ::.
    Server listening on :: port 50505.

เปิดเทอร์มินัลใหม่และ ssh ใน localhost บนพอร์ต 50505:

    blyman@skretting:~$ ssh -p 50505 localhost
    The authenticity of host '[localhost]:50505 ([::1]:50505)' can't be established.
    RSA key fingerprint is 81:36:a5:ff:a3:5a:45:a6:90:d3:cc:54:6b:52:d0:61.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '[localhost]:50505' (RSA) to the list of known hosts.
    Linux skretting 2.6.35-32-generic #67-Ubuntu SMP Mon Mar 5 19:39:49 UTC 2012 x86_64 GNU/Linux
    Ubuntu 10.10

    Welcome to Ubuntu!
     * Documentation:  https://help.ubuntu.com/

    1 package can be updated.
    0 updates are security updates.

    Last login: Thu Aug 16 15:41:58 2012 from 10.0.65.153
    Environment:
      LANG=en_US.UTF-8
      USER=blyman
      LOGNAME=blyman
      HOME=/home/blyman
      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
      MAIL=/var/mail/blyman
      SHELL=/bin/bash
      SSH_CLIENT=::1 43599 50505
      SSH_CONNECTION=::1 43599 ::1 50505
      SSH_TTY=/dev/pts/16
      TERM=xterm
      DISPLAY=localhost:10.0
    Running /usr/bin/xauth remove unix:10.0
    /usr/bin/xauth add unix:10.0 MIT-MAGIC-COOKIE-1 79aa9275ced418dd445d9798b115d393

ดูสามบรรทัดสุดท้ายที่นั่น ฉันบังเอิญได้ตั้งค่า DISPLAY และมีสองบรรทัดที่ดูดีจาก / usr / bin / xauth

จากที่นั่นคือการเล่นของเด็ก ๆ เพื่อย้าย / usr / bin / xauth ของฉันไปที่ /usr/bin/xauth.old ปลดการเชื่อมต่อจาก ssh และหยุด sshd จากนั้นเปิด sshd และ ssh กลับไปที่ localhost

เมื่อ / usr / bin / xauth หายไปฉันไม่เห็น DISPLAY สะท้อนในสภาพแวดล้อมของฉัน


ไม่มีอะไรยอดเยี่ยมเกิดขึ้นที่นี่ ส่วนใหญ่ฉันโชคดีที่เลือกวิธีที่มีสติเพื่อลองทำสิ่งนี้บนเครื่องท้องถิ่นของฉัน


1
ว้าวขอบคุณมากสำหรับแอนwerของคุณ ฉันทำทุกอย่างดียกเว้นexport DISPLAY=:10. ฉันไม่เคยคาดเดาจำนวนที่แสดง
erm3nda

มันชดเชยการแสดงผลของ 10! : D
41754

33

ทำให้เเน่นอน:

  • คุณxauthติดตั้งบนเซิร์ฟเวอร์แล้ว (ดู: xauth info/ xauth list)
  • บนเซิร์ฟเวอร์/etc/ssh/sshd_configไฟล์ของคุณมีบรรทัดเหล่านี้:

    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost no
    
  • ในฝั่งไคลเอ็นต์~/.ssh/configไฟล์ของคุณมีบรรทัดเหล่านี้:

    Host *
      ForwardAgent yes
      ForwardX11 yes
    
  • ในฝั่งไคลเอ็นต์คุณได้ติดตั้ง X server (เช่น macOS: XQuartz; Windows: Xming)


จากนั้นในการทำการส่งต่อ X11 โดยใช้ SSH คุณจะต้องเพิ่ม-Xsshคำสั่งของคุณเช่น

ssh -v -X user@host

แล้วตรวจสอบว่าคุณDISPLAYเป็นไม่ว่างเปล่าโดย:

echo $DISPLAY

ถ้าเป็นเช่นนั้นมีพารามิเตอร์ verbose สำหรับ ssh ( -v) ตรวจสอบคำเตือนใด ๆ เช่น

debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated

ในกรณีที่คุณไม่น่าเชื่อถือ X11ดังที่แสดงไว้ด้านบนให้ลอง-Yตั้งค่าสถานะแทน (หากคุณเชื่อถือโฮสต์):

ssh -v -Y user@host

โปรดดูที่: “ คำเตือน: การตั้งค่าการส่งต่อ X11 ที่ไม่น่าเชื่อถือล้มเหลว: ข้อมูลคีย์ xauth ไม่ได้สร้างขึ้น” หมายความว่าเมื่อ ssh'ing ด้วย -X


ในกรณีที่คุณได้รับคำเตือน: ไม่มีข้อมูล xauthคุณอาจลองสร้าง.Xauthorityไฟล์ใหม่เช่น

xauth generate :0 . trusted
xauth list

โปรดดู: สร้าง / สร้างไฟล์. Xauthority ใหม่


หากคุณมีคำเตือนที่แตกต่างไปจากข้างต้นให้ทำตามคำใบ้เพิ่มเติม



1
คู่มือการแตกหัก: การกำหนดค่าในฝั่งไคลเอ็นต์ทำเครื่องหมายความแตกต่าง
user2928048

2
และ X11UseLocalhost ไม่มีทางฝั่งเซิร์ฟเวอร์
2928048

17

การแก้ไขคือการเพิ่มบรรทัดนี้ใน/etc/ssh/sshd_config:

X11UseLocalhost no

https://joshua.hoblitt.com/rtfm/2013/04/how_to_fix_x11_forwarding_request_failed_on_channel_0/


ฉันมีเซิร์ฟเวอร์ Ubuntu 2 ตัว ในอันที่ฉันต้องการมันตั้งค่าเป็นใช่ในที่อื่น ๆ มันจะต้องไม่ ฉันแน่ใจว่ามีคำอธิบาย แต่ควรลองทั้งสองอย่าง
alfonx

1
การแก้ไขนี้ใช้งานได้สำหรับฉัน !!
rigon

3
โปรดชี้แจงหากคุณต้องการตั้งค่านี้บนเซิร์ฟเวอร์หรือลูกค้า
Klik

5

ปล่อยให้ Ubuntu ทุบตีใน Windows 10 ssh -X เพื่อรับสภาพแวดล้อม GUI บนเซิร์ฟเวอร์ระยะไกล

  • เป็นครั้งแรก

ติดตั้งทั้งหมดต่อไปนี้ Xmingบนหน้าต่างติดตั้ง บน Ubuntu ทุบตีใช้ในการติดตั้งsudo apt installssh xauth xorg

sudo apt install ssh xauth xorg
  • ที่สอง

ไปที่โฟลเดอร์ที่มีไฟล์ฉันเป็นssh_config/etc/ssh

  • ที่สาม

แก้ไขssh_configในฐานะผู้ดูแลระบบ (USE sudo) ภายในssh_configเอากัญชา#ในบรรทัดForwardAgent, ForwardX11, และตั้งข้อโต้แย้งที่สอดคล้องกันในการForwardX11Trustedyes

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
  • ออกมา

ในssh_configไฟล์ให้ลบแฮชด้านหน้า#ก่อนPort 22และProtocol 2และต่อท้ายบรรทัดใหม่ท้ายไฟล์เพื่อระบุตำแหน่งไฟล์ xauth XauthLocaion /usr/bin/xauthอย่าลืมเขียนพา ธ ของไฟล์ xauth ของคุณเอง

# /etc/ssh/ssh_config

#   IdentifyFile ...
    Port 22
    Protocol 2
#   Cipher 3des
#   ...
#   ...
    ...
    ...
    GSSAPIDelegateCredentials no
    XauthLocaion /usr/bin/xauth
  • ที่ห้า

ตอนนี้เนื่องจากเราแก้ไขssh_configไฟล์เสร็จแล้วให้บันทึกเมื่อเราออกจากโปรแกรมแก้ไข ตอนนี้ไปที่โฟลเดอร์~หรือ$HOMEเพิ่มไฟล์export DISPLAY=localhost:0ของคุณ.bashrcและบันทึก

# ~/.bashrc
...
...
export DISPLAY=localhost:0
  • ล่าสุด

เราเกือบเสร็จแล้ว รีสตาร์ทเปลือกทุบตีของคุณเปิดของโปรแกรมและการใช้งานXming ssh -X yourusername@yourhostจากนั้นเพลิดเพลินกับสภาพแวดล้อม GUI

ssh -X yourusername@yourhost

ปัญหาก็คือในระบบย่อย Ubuntu บน Windows และลิงค์อยู่ที่

https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776


3

เพิ่มX11UseLocalhost noไป/etc/ssh/sshd_configและรีสตาร์ทเซิร์ฟเวอร์ SSH

หากคุณไม่ได้รับจอแสดงผลให้ตรวจสอบว่าติดตั้ง xauth อย่างถูกต้องแล้วลองอีกครั้ง

RHE / CEnt ไม่มีปัญหานี้นี่คือสิ่งที่อูบุนตู!


1

สำหรับฉันปัญหาอยู่ในตัวเลือกnodev mount สำหรับระบบไฟล์ / tmp X11 ต้องการไฟล์พิเศษที่จะสร้างขึ้นในนั้น

ดังนั้นตรวจสอบสิ่งที่เป็นตัวเลือกการเมานต์สำหรับระบบไฟล์ / tmp หากคุณใช้พาร์ติชันหรือดิสก์แยกต่างหาก


1
ฉันคิดว่าคุณอาจต้องการเห็นคำตอบอื่น ๆ สำหรับคำถามต้นฉบับและใช้เวลาสักครู่ในการคิดว่าคำตอบของคุณจะดีขึ้นอย่างไร
Sami Laine

1

เพื่อเพิ่มคำตอบที่ยอดเยี่ยมก่อนหน้านี้ (การตั้งค่า~/.ssh/configและการตรวจสอบเพื่อดูว่าDISPLAYตัวแปรสภาพแวดล้อมถูกตั้งค่าบนไคลเอนต์, การตั้งค่า/etc/ssh/sshd_configและติดตั้งxauthบนเซิร์ฟเวอร์), ตรวจสอบให้แน่ใจว่าxtermติดตั้งบนไคลเอนต์เช่น

sudo apt-get install xterm

1

xauth สามารถล็อคได้

   -b      This  option  indicates  that  xauth  should  attempt to break any authority file locks before proceeding.  Use this
           option only to clean up stale locks.

การใช้

xauth -b

บนเครื่องที่ผมพยายามที่จะเข้าไปปลดล็อคบนssh xauthออกจากระบบของsshเซสชั่นหลังจากออกแล้วเข้าสู่ระบบกลับมาในที่สุดก็อนุญาตให้ฉันประสบความสำเร็จxauth -b echo $DISPLAYลองทำสิ่งนี้ก่อนที่จะสร้างใหม่.Xauthority


0

X11Forwardingต้องตั้งค่าบนเซิร์ฟเวอร์ SSH (ในกรณีของคุณคือกล่อง Ubuntu) sshd_configและคุณต้องอนุญาตให้ X11 ส่งต่อสำหรับไคลเอ็นต์ SSH (กล่อง Fedora ของคุณ) โดยผ่าน-Xตัวเลือกหรือแก้ไขssh_configไฟล์เพื่อเพิ่มForwardX11ค่าเริ่มต้น


1
คุณต้องxauthติดตั้งบนเครื่องระยะไกลมิฉะนั้นสิ่ง x Authority จะไม่ทำงาน
Faheem Mitha

แล้วการตั้งค่าDISPLAYล่ะ
Mr. Shickadance

1
ssh จะถูกตั้งค่าโดยอัตโนมัติ$DISPLAYหากX11Forwardingเปิดใช้งานและxauthมีอยู่ในระบบไคลเอ็นต์
Shadur

1
@ Shadur ไม่ใช่สำหรับฉัน มันทำงานได้เมื่อฉันexport DISPLAY=:10.0แต่ไม่เป็นอย่างอื่น :0มิฉะนั้นจะบ่นว่ามันไม่สามารถหา บางทีอาจจำเป็นต้องมีอย่างอื่นเพื่อให้สิ่งนี้เกิดขึ้นโดยอัตโนมัติ
cfr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.