Yabancı karakterler SSH'de görüntülenmiyor


17

Kullanmayla ilgili bazı sorunlar yaşıyorum sshve uzak bir sunucu (yönetici erişimim yok) - Özellikle, Korece ve Kiril metinleri olan birkaç klasör var.

Üst klasör içeriğini ile görüntülediğimde ls, karakterler "?" Olarak çıkar. Belki de Korece karakterlerin orada olması gereken karakter sayısından çok daha fazla kaçtığı görülüyor .

Kullandığım terminal programının karakterleri sftpgörüntüleyebildiğini biliyorum , çünkü kullanmak onları mükemmel gösteriyor. Sorun denedim tüm terminaller oluşur.

Makinelerin özeti

Yerel makine:

  • Linux 2.6.32-5-686, i686
  • Debian GNU / Linux 6.0.2 (sıkıştır)
  • Yönetici erişimine sahip olun

Uzak sunucu:

  • Linux 2.6.32-bpo.5-amd64, x86_64
  • Debian GNU / Linux 5.0.8 (lenny)
  • Yönetici erişiminiz veya fiziksel erişiminiz yok

Muhtemelen başka hayati istatistiği veya biraz bilgiyi kaçırdım, bu durumda özür dilerim. Bilgi işlemin tüm Windows olmayan tarafında oldukça yeniyim, bu yüzden burada ne yaptığımı neredeyse bilmiyorum.


2
çıktı gönderebilir localeve locale -ahem yerel hem de uzaktan komutları, lütfen
enzotib

Thanks @enzotib - Yorumunuz bana sunulan yerliler yerel ve uzaktan aynı olmayabilir fikri üzerine dalladı.
ChemicalRascal

Yanıtlar:


20

Sizin yerel bilgi sunucusu makinesinde doğru ayarlanmamış. Özellikle, LC_CTYPEterminaldeki karakterlerin kodlamasını gösteren değişken doğru ayarlanmamıştır (veya hiç şüphelenmiyorum).

Yerel terminalinizde, localeyerel ayarlarınızı görmek için çalıştırın . Muhtemelen (diğer satırların yanı sıra) bir şey göreceksiniz LC_CTYPE=en_US.UTF-8; Burada önemli .UTF-8olan UTF-8 kodlamasını gösteren kısımdır . Bu unix dünyasında (ve ötesinde) çok dilli metin için fiili standart kodlamadır.

Bu bilgileri sunucuya iletmeniz gerekir. Çalışırsa, en iyi yol ssh bağlantısı üzerinden yerel bilgi göndermektir. Bunun için, sonuna aşağıdaki satırları ekleyin ~/.ssh/config:

Host *
SendEnv LC_* LANG

Bu AcceptEnv, sunucu yapılandırmasında ( /etc/ssh/sshd_config) uygun bir yönerge bulunmasını gerektirir (varsayılan olarak Debian'dadır).

Bu çalışma etmez ve her zaman UTF-8 terminalden sunucuya giriş yapıyorsanız, satır ekleyin export LC_CTYPE=en_US.UTF-8adresinden Müşteri ~/.bashrcsunucusu (veya üzerinde ~/.zshrcya da her türlü dosya kabuk kullanımlarını). Yerel ayar adı (ör. en_US.UTF-8) Tarafından sunulan adlardan biri locale -aolmalı ve .UTF-8( .utf8veya bazı veya önemsiz değişiklikler) olmalıdır.


1
Ah! Sorun şu olurdu: Ben zaten sunucuya (veya en azından localeeşleşen çıkışları) iletilmiş gibi görünüyordu yerel olarak en_AU.utf8 "kullanın" . Ancak, locale -auzaktan yalnızca en_GB.utf8 ve en_US.utf8 vermiştir. Teşekkürler!
ChemicalRascal

1
Geçerli yerel locale charmap

Benim /etc/ssh/ssh_configgerekli de gönderme LANG( SendEnv LANG LC_*)
Shammel Lee 15:17

Ve sunucu tarafında export LC_CTYPE=en_US.UTF-8benim eklemek gerekiyordu ~/.profile. Bunu eklemenin bir ~/.bashrcetkisi yok gibi görünüyordu.
Datka
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.