मैं SSH के उपयोग से फ़ायरफ़ॉक्स को लॉन्च करने की कोशिश करता हूं, उपयोग करते हुए
ssh -X user@hostname
और फिर
firefox -no-remote
लेकिन यह बहुत धीमा है।
मैं इसे कैसे ठीक करूं? क्या यह एक कनेक्शन समस्या है?
मैं SSH के उपयोग से फ़ायरफ़ॉक्स को लॉन्च करने की कोशिश करता हूं, उपयोग करते हुए
ssh -X user@hostname
और फिर
firefox -no-remote
लेकिन यह बहुत धीमा है।
मैं इसे कैसे ठीक करूं? क्या यह एक कनेक्शन समस्या है?
जवाबों:
डिफ़ॉल्ट ssh सेटिंग्स एक बहुत धीमी गति से कनेक्शन के लिए बनाते हैं। इसके बजाय निम्नलिखित प्रयास करें:
ssh -YC4c arcfour,blowfish-cbc user@hostname firefox -no-remote
उपयोग किए गए विकल्प हैं:
-Y Enables trusted X11 forwarding. Trusted X11 forwardings are not
subjected to the X11 SECURITY extension controls.
-C Requests compression of all data (including stdin, stdout,
stderr, and data for forwarded X11 and TCP connections). The
compression algorithm is the same used by gzip(1), and the
“level” can be controlled by the CompressionLevel option for pro‐
tocol version 1. Compression is desirable on modem lines and
other slow connections, but will only slow down things on fast
networks. The default value can be set on a host-by-host basis
in the configuration files; see the Compression option.
-4 Forces ssh to use IPv4 addresses only.
-c cipher_spec
Selects the cipher specification for encrypting the session.
For protocol version 2, cipher_spec is a comma-separated list of
ciphers listed in order of preference. See the Ciphers keyword
in ssh_config(5) for more information.
यहां मुख्य बिंदु एक अलग एन्क्रिप्शन साइबरफ़ॉर्म का उपयोग करना है, इस मामले में आर्कफॉर जो डिफ़ॉल्ट से तेज है, और स्थानांतरित किए गए डेटा को संपीड़ित करना है।
नोट: मैं बहुत, इस पर एक विशेषज्ञ से बहुत दूर हूं। ऊपर दिए गए आदेश का उपयोग मैं कहीं ब्लॉग पोस्ट पर खोजने के बाद करता हूं और मैंने गति में भारी सुधार देखा है। मुझे यकीन है कि नीचे दिए गए विभिन्न टिप्पणीकारों को पता है कि वे किस बारे में बात कर रहे हैं और ये एन्क्रिप्शन साइबर सबसे अच्छे नहीं हो सकते हैं। यह बहुत संभावना है कि इस उत्तर का एकमात्र बिट जो वास्तव में प्रासंगिक है -C
, डेटा को स्थानांतरित करने के लिए स्विच का उपयोग कर रहा है।
-4
(IPv4) वास्तव में यहाँ प्रासंगिक है?
कुछ एक्स-क्लाइंट को दूरस्थ रूप से लॉन्च करते समय सबसे बड़े मुद्दों में से एक एक्स-प्रोटोकॉल है, इतना एसएचएस ओवरहेड नहीं! एक्स-प्रोटोकॉल को क्लाइंट और सर्वर के बीच बहुत सारे पिंग-पॉन्गिंग की आवश्यकता होती है जो दूरस्थ अनुप्रयोगों के मामले में प्रदर्शन को बिल्कुल मार देता है।
"X2go" (जो डिफ़ॉल्ट सेटअपों के साथ ssh पर भी चला जाता है) की तरह कुछ आज़माएँ! आप ध्यान देंगे कि तुलना में फ़ायरफ़ॉक्स "मक्खियों" है!
कई वितरण x2go पैकेज को बॉक्स से बाहर करते हैं, उदाहरण के लिए डेबियन परीक्षण, या स्थिर-बैकपोर्ट में। लेकिन यदि नहीं, तो http://wiki.x2go.org/doku.php/download:start देखें , वे कई वितरणों के लिए पूर्वनिर्मित बाइनरी पैकेज / रिपॉजिटरी प्रदान करते हैं। आपको x2goclient स्थापित करना चाहिए (उस कंप्यूटर पर जहां आप 'फ़ायरफ़ॉक्स' का उपयोग करना चाहते हैं) और x2goserver (कंप्यूटर में जहां फ़ायरफ़ॉक्स चल रहा होना चाहिए), आप तब पूर्ण डेस्कटॉप दृश्यों के लिए एकल एक्स अनुप्रयोगों के लिए अपने सत्र को कॉन्फ़िगर कर सकते हैं आदि - कनेक्शन ही। ssh पर होता है। यह वास्तव में एक अद्भुत उपकरण है :)
इसका उपयोग करने के लिए, आप "x2goclient" चलाते हैं, यह एक GUI शुरू करता है जहां आप एक नया सत्र बना सकते हैं: आप सर्वर, पोर्ट, ssh डेटा आदि का dns नाम प्रदान करते हैं, और फिर आप "सत्र प्रकार" का चयन करते हैं, अर्थात यदि आप उदाहरण के लिए एक पूर्ण दूरस्थ केडीई या गनोम डेस्कटॉप चाहते हैं, या सिर्फ एक "एकल अनुप्रयोग" और वहां आप "फ़ायरफ़ॉक्स" दर्ज करते हैं।
x2goserver
डेबियन (या उबंटू) पर कोई पैकेज नहीं है । इसके अलावा, क्या इसे टनलिंग की अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है? उदाहरण के लिए, मैं machineX का उपयोग करता हूं, लेकिन मैं केवल मशीन के माध्यम से इसे ssh कर सकता हूं। क्या x2go इससे निपट सकता है?
~/.ssh/config
और अपने x2go सत्र में सही (टनल) होस्टनाम का उपयोग करने के लिए पर्याप्त होना चाहिए ।
.ssh/config
पर्याप्त नहीं है। मेरे पास यह सेटअप है ताकि ssh machineB
वास्तव में एक सुरंग के माध्यम से चलता है machineA
लेकिन x2go इसे देखने के लिए नहीं लगता है।
मेरे पास एक ssh
अन्य मशीन के माध्यम से ट्रैफ़िक को रूट करने के लिए सुरंग का उपयोग करने का बेहतर अनुभव है । वैसे भी सेट अप करना बहुत आसान है। आपके कंप्यूटर पर एक टर्मिनल में, टाइप करें
ssh -vv -ND 8080 user@yourserver
इस विंडो को खुला रखें और इसे सुरंग के माध्यम से बहने वाले डेटा के बारे में कुछ क्रिया संदेश देने के लिए देखें।
में firefox
, वरीयताएँ -> उन्नत -> नेटवर्क -> कनेक्शन: सेटिंग्स पर जाएं।
मैन्युअल प्रॉक्सी कॉन्फ़िगरेशन चुनें और एक SOCKS v5
प्रॉक्सी जोड़ें :
SOCKS Host: localhost Port 8080
उदाहरण के लिए http://whatismyipaddress.com/ पर नेविगेट करके अपने नए आईपी की जाँच करें ।
आप प्रॉक्सी को गतिशील रूप से स्विच करने के लिए फ़ॉक्सी प्रॉक्सी की तरह एक फ़ायरफ़ॉक्स ऐड-ऑन का उपयोग कर सकते हैं ।
फ़ायरफ़ॉक्स SSH पर इतना धीमा है क्योंकि फ़ायरफ़ॉक्स के नए निर्माण कई उदाहरणों की अनुमति देते हैं। यदि आपको बैंडविड्थ की समस्या है, तो डिलो जैसे हल्के ब्राउज़र का उपयोग करें और आप कनेक्शन की गति को भी नहीं देखेंगे।
एक और चीज जो ssh पर आपके ब्राउजिंग को बेहतर बनाएगी वह है फ़ायरफ़ॉक्स में पाइपलाइनिंग को सक्षम करना। खोलें about:configऔर network.http.pipeliningसत्य में बदलें ।
आपको यह देखने के लिए प्रयोग करना होगा कि आपकी विशिष्ट बाधाओं से क्या मदद मिलती है।
मेरे लिए, संपीड़न ( -C
) को सक्षम करने से जवाबदेही में सुधार हुआ जो अनुपयोगी से सिर्फ ध्यान देने योग्य अंतराल तक है।
सिफर की पसंद का भी प्रभाव हो सकता है, इसके विपरीत कुछ लोगों ने क्या कहा। आप बेंचमार्क साझा करने वाले लोगों को ऑनलाइन पा सकते हैं, लेकिन यह मत मानिए कि आपके परिणाम समान होंगे। आपके लिए कौन सा सिफर सबसे अच्छा है हार्डवेयर निर्भर है। मेरे लिए मेरा डिफ़ॉल्ट सिफर (chacha20-poly1305@openssh.com) पहले से ही सबसे तेजी से बंधा हुआ था।
मैंने कुछ वास्तविक स्थितियों के तहत प्रासंगिक सिफर को बेंचमार्क करने के लिए एक त्वरित स्क्रिप्ट लिखी। टिप्पणियों में स्पष्टीकरण:
#!/usr/bin/bash
# Ciphers available to you depends on the intersection of ciphers compiled
# into your client and the ciphers compiled into your host.
# Should be manually copied from "Ciphers:" section in your `man ssh_config`
# The script will try all ciphers specified here and will gracefully skip
# ciphers unavailable in the host.
#ciphers=""
# Example:
ciphers="3des-cbc aes128-cbc aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr aes128-gcm@openssh.com aes256-gcm@openssh.com chacha20-poly1305@openssh.com"
tmp_file=tmp.bin
# Recommend to use an identity file without a passphrase.
# That way you won't have to retype the password at each iteration.
ssh_identity_file=~/.ssh/tmp_id_no_passphrase
ssh_host="user@host"
# Size of test file, before encryption.
test_file_size_megabytes=8
# Only create test file if it doesn't yet exists.
# Doesn't check if relevant variables changed, so you'll have to delete
# the $tmp_file to regenerate it.
if test ! -f $tmp_file; then
echo "Creating random data file" \
"(size $test_file_size_megabytes MB): $tmp_file"
# Not the same format as the ssh ciphers.
# Can be left as is, unless this cipher is not supported by your openssl.
tmp_file_cipher=aes-128-cbc
# The purpose of encrypting the $tmp_file is to make it uncompressable.
# I do not know if that is a concern in this scenario,
# but better safe than sorry.
dd if=/dev/zero bs=1M count=$test_file_size_megabytes \
| openssl enc -$tmp_file_cipher -pass pass:123 \
> $tmp_file
fi
for cipher in $ciphers ; do
# Benchmark each $cipher multiple times
for i in 1 2 3 ; do
echo
echo "Cipher: $cipher (try $i)"
# Time piping the $tmp_file via SSH to $ssh_host using $cipher.
# At destination received data is discarded.
cat $tmp_file \
| /usr/bin/time -p \
ssh -i $ssh_identity_file -c "$cipher" $ssh_host 'cat > /dev/null'
done
done
# Sample output:
# Creating random data file (size 8 MB): tmp.bin
# *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better. 8+0 records in
# 8+0 records out
# 8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.0567188 s, 148 MB/s
## [redacted]
# Cipher: aes256-cbc (try 3)
# Unable to negotiate with 192.168.99.99 port 22: no matching cipher found. Their offer: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
# real 0.12
# user 0.03
# sys 0.03
# Cipher: aes128-ctr (try 1)
# real 9.68
# user 0.28
# sys 0.51
# Cipher: aes128-ctr (try 2)
# real 10.85
# user 0.26
# sys 0.29
## [redacted]
आप SSH कनेक्शन के साथ परीक्षण करना चुन सकते हैं जहाँ ग्राहक और होस्ट एक ही मशीन हैं, या आप अधिक यथार्थवादी परिदृश्य में परीक्षण कर सकते हैं, जहाँ होस्ट वह मशीन है जिससे आप X11 अग्रेषित कर रहे हैं, जो अधिक उपयोगी होना चाहिए क्योंकि प्रदर्शन न केवल ग्राहक के प्रदर्शन पर निर्भर करता है, बल्कि मेजबान का भी।
यदि आपके इंटरनेट कनेक्शन का थ्रूपुट मानदंड के पाठ्यक्रम में बदल जाता है, तो रिमोट मशीन के साथ परीक्षण करने से शोर को शुरू करने का नुकसान हो सकता है। उस स्थिति में, हो सकता है कि प्रत्येक सिफर का परीक्षण करने के समय की संख्या बढ़ जाए।