다음을 사용하여 SSH를 통해 Firefox를 시작하려고합니다.
ssh -X user@hostname
그리고
firefox -no-remote
그러나 매우 느립니다.
이 문제를 어떻게 해결할 수 있습니까? 연결 문제입니까?
다음을 사용하여 SSH를 통해 Firefox를 시작하려고합니다.
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.
여기서 중요한 점은 다른 암호화 암호를 사용하는 것인데,이 경우 기본값보다 빠른 arcfour를 사용하고 전송중인 데이터를 압축합니다.
참고 : 나는 이것에 대해 전문가와 매우 멀리 떨어져 있습니다. 위의 명령은 블로그 게시물에서 찾은 후 사용하는 것으로 속도가 크게 향상되었습니다. 아래의 다양한 의견자가 자신이 말하는 내용을 알고 있으며 이러한 암호화 암호가 최선의 암호가 아닐 수도 있습니다. 이 답변의 유일한 부분은 -C
스위치를 사용하여 전송되는 데이터를 압축하는 것일 가능성이 큽니다 .
-4
여기에 정말 관련 (IPv4)를?
일부 X- 클라이언트를 원격으로 시작할 때 가장 큰 문제 중 하나는 X- 프로토콜입니다. X 프로토콜은 클라이언트와 서버 사이에 많은 핑퐁이 필요하므로 원격 응용 프로그램의 경우 성능을 절대적으로 저하시킵니다.
"x2go"(기본 설정으로 ssh를 거치는)와 같은 것을 시도해보십시오. 파이어 폭스는 비교할 때 "비행"합니다.
여러 배포판에서 x2go 패키지를 데비안 테스트 또는 Stable-Backport와 같이 기본적으로 제공합니다. 그러나 그렇지 않은 경우 http://wiki.x2go.org/doku.php/download:start를 참조 하십시오 . 많은 배포판에 사전 빌드 된 바이너리 패키지 / 리포지토리를 제공합니다. x2goclient (firefox를 '사용'하려는 컴퓨터에) 및 x2goserver (firefox를 실행해야하는 컴퓨터에)를 설치 한 다음 전체 데스크톱보기 등을 위해 단일 X 응용 프로그램에 대한 세션을 구성 할 수 있습니다. ssh를 통해 발생합니다. 정말 멋진 도구입니다 :)
이를 사용하려면 "x2goclient"를 실행하고 새 세션을 작성할 수있는 GUI를 시작합니다. 서버의 dns 이름, 포트, ssh 데이터 등을 제공 한 다음 "세션 유형"을 선택합니다. 예를 들어 완전한 원격 KDE 또는 그놈 데스크탑 또는 "단일 응용 프로그램"을 원하고 "firefox"를 입력합니다.
x2goserver
데비안 (또는 우분투) 에는 패키지 가없는 것 같습니다 . 또한 터널링을 허용하도록 구성 할 수 있습니까? 예를 들어 machineX를 사용하지만 machineY를 통해서만 ssh 할 수 있습니다. x2go가 그걸 다룰 수 있을까요?
~/.ssh/config
하고 x2go 세션에서 올바른 (터널링 된) 호스트 이름을 사용하는 것으로 충분할 것으로 기대합니다 .
.ssh/config
충분하지 않음을 확인할 수 있습니다. ssh machineB
실제로 터널을 통해 실행 되도록 설정 machineA
했지만 x2go가 보이지 않습니다.
ssh
터널을 사용하여 다른 컴퓨터를 통해 트래픽을 라우팅 하는 데 훨씬 더 나은 경험이 있습니다 . 어쨌든 ssh 액세스 권한이 있기 때문에 설정이 매우 쉽습니다. 컴퓨터의 터미널에 다음을 입력하십시오.
ssh -vv -ND 8080 user@yourserver
이 창을 열어두고 터널을 통해 흐르는 데이터에 대한 자세한 메시지를 전달하는 것을보십시오.
에서 firefox
설정> 고급 - - -> 네트워크> 연결, 환경 설정으로 이동합니다.
수동 프록시 구성을 선택 하고 SOCKS v5
프록시를 추가하십시오 .
SOCKS Host: localhost Port 8080
예를 들어 http://whatismyipaddress.com/ 으로 이동하여 새 IP를 확인 하십시오 .
foxy 프록시 와 같은 firefox 애드온을 사용하여 프록시 를 동적으로 전환 할 수 있습니다 .
Firefox는 최신 버전의 firefox로 여러 인스턴스를 허용하므로 SSH보다 속도가 느립니다. 대역폭 문제가있는 경우 dillo와 같은 가벼운 브라우저를 사용하면 연결 속도를 느끼지 못할 것입니다.
ssh를 통한 탐색을 향상시키는 또 다른 사항은 Firefox에서 파이프 라이닝을 활성화하는 것입니다. 열고 true로 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 포워딩을 수행중인 시스템 인보다 현실적인 시나리오에서 테스트 할 수 있습니다. 성능은 클라이언트의 성능 해독뿐만 아니라 호스트에도 의존하기 때문입니다.
원격 시스템으로 테스트하면 벤치 마크 과정에서 인터넷 연결 처리량이 변경되는 경우 노이즈가 발생하는 단점이 있습니다. 이 경우 각 암호가 테스트되는 횟수를 늘리고 싶을 수 있습니다.