Linux: смена языка и кодировки системы
Содержание:
- Раскладка клавиатуры для консоли
- Примечание 3 (настройка мс)
- 2. Check which system locales are enabled
- Red Hat / CentOS
- Risoluzione dei problemi
- Navigation menu
- Configuración del locale de todo el sistema
- 5. Changing your locale manually
- Impostare il locale a livello di sistema
- Локали в Windows
- Navigation menu
- Impostare il collation
- Установка локали
- Добавить новую локаль
- Сетевые настройки
- Локаль Системы По Умолчанию
- Удаленный доступ к консоли
- Warning Message
- Solución de problemas
- Set Default System Locale
- Сессии в консоли
Раскладка клавиатуры для консоли
OpenRC
Раскладка клавиатуры, используемая консолью, устанавливается в файле /etc/conf.d/keymaps с помощью переменной keymap. Допустимые значения можно найти в каталоге /usr/share/keymaps/YOUR_ARCH/. Каталог архитектуры i386 содержит подкаталоги, соответствующие различным раскладкам (qwerty/, azerty/ и так далее). У некоторых языков есть несколько вариантов — поэкспериментируйте с ними, чтобы определить более подходящий.
Файл Установка раскладки клавиатуры для консоли
keymap="de" #keymap="de-latin1" #keymap="de-latin1-nodeadkeys"
systemd
В systemd раскладка для консоли может быть установлена с помощью команды localectl. Сперва проверьте доступные раскладки:
Далее установите необходимую раскладку для консоли:
В конце проверьте, что раскладка для консоли была установлена правильно:
VC Keymap: it
Примечание 3 (настройка мс)
Яркие синие цвета в mc некоторым уже могли надоесть. Чтобы изменить цвета нужно закрыть mc (чтобы настройка не затёрлась самим мс ). Папка .mc создаётся в домашней директории вашего пользователя при первом запуске mc.
sed -i 's/^base_color=.*/base_color=normal=cyan,default::selected=black,cyan:directory=cyan,default:marked=brightgreen,default:errors=red,default:marked=yellow,default:executable=brightred,default:marked=brightgreen,default:link=grey,default:marked=brightgreen,default:device=brightmagenta,default:marked=brightgreen,default:menuhot=black,cyan:menusel=cyan,black:menuhotsel=gray,black:menu=black,cyan:helpnormal=cyan,black:editnormal=cyan,black:editbold=yellow,black:editmarked=cyan,black/; s/^confirm_delete=1*/confirm_delete=0/; s/^confirm_exit=1.*/confirm_exit=0/' /root/.mc/ini
2. Check which system locales are enabled
By using the command you can see which locales are currently being used for your active terminal session. In the output above the system locale is set to .
Before setting up a different system locale you can first check which locales are enabled and ready to use on your Debian 9 VPS. You can use the following command for that purpose:
locale -a
The output should be similar to the one below:
# locale -a C C.UTF-8 POSIX en_US.utf8
3. Generate a system locale for the region you need
If you don’t have the locale that you need to be enabled on your system, it can simply be generated by using the command. Just run the following command to generate a locale for the region you need:
dpkg-reconfigure locales
Select the locale that you want to be enabled and press . On the image below you can see that we selected .
debian set locale
Once you press you should see the following output:
Generating locales (this might take a while)... en_GB.UTF-8... done en_US.UTF-8... done Generation complete.
Red Hat / CentOS
Включение системных средств локализации в Red Hat Linux (а, следовательно, и в других дистрибутивах, основанных на Red Hat) осуществляется из файла /etc/profile.d/lang.sh.
Как известно, при старте любого shell-а сначала выполняется /etc/profile. В Red Hat в /etc/profile прописаны команды, благодаря которым на исполнение вызываются также все файлы /etc/profile.d/*.sh
Значения переменных локализации в файлах lang.sh задаются путем вызова на выполнение файла /etc/sysconfig/i18n.
# nano /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
Правда, это верно только для случая, когда вы имеете права суперпользователя root. Но даже если вы простой пользователь Linux-системы и не можете редактировать файл /etc/sysconfig/i18n, то вы все же можете включить локализацию для себя, но несколько иным способом. А именно, поместите в свой файл $HOME/.profile (или в любой файл, который исполняется в процессе логирования пользователя: $HOME/.Xclients, $HOME/.xinitrc или другой) следующие строки: /etc/profile или $HOME/.bash_profile
#export LANG=ru_UA.utf8 #export LINGUAS=ru_RU:en #export LC_ALL="ru_UA.utf8" export LANG="en_US.UTF-8" export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"
Чтобы изменения принялись нужно перезайти в консоль или выполнить команду source для файла в котором вы прописали export
$ source ~.profile
Risoluzione dei problemi
Il mio terminale non supporta UTF-8
Sfortunatamente alcuni terminali non supportano UTF-8. In questo caso dovreste utilizzare un terminale differente. Questa è una lista di alcuni terminali che hanno il supporto per UTF-8:
- vte-based terminals
- gnustep-terminal
- konsole
- mlterm
- rxvt-unicode
- xterm
Gnome-terminal o rxvt-unicode non supportano UTF-8
È necessario avviare queste applicazioni da un locale UTF-8 o cadrà il supporto ad UTF-8. Abilitare il locale (o il vostro locale UTF-8 alternativo) come spiegato precedentemente e impostarlo come la lingua predefinita, quindi riavviare.
Our experts are sharingtheir knowledge with you.
Categories
▼ Server Hardware
► Hard Disk Drives
no subcategories
► HBAs
no subcategories
► Intel
no subcategories
▼ Modular Server
► Modular Server Ethernet Switch
no subcategories
▼ Motherboards
► BIOS Settings
no subcategories
▼ RAID Controllers
► 3ware
no subcategories
▼ Adaptec
► Adaptec SmartRAID
no subcategories
► LSI
no subcategories
▼ Server
► Backplanes
no subcategories
► LES
no subcategories
▼ SSDs
► Intel SSDs
no subcategories
▼ Server Software
▼ Linux
► Debian
no subcategories
► Linux Basics
no subcategories
► Linux Networking
no subcategories
▼ Linux Performance
► Fio
no subcategories
► TKperf
no subcategories
► Linux Software RAID
no subcategories
▼ Linux-Storage
► LVM
no subcategories
► Smartmontools
no subcategories
► Ubuntu
no subcategories
▼ Windows
► Windows Server 2012
no subcategories
► Windows Server 2016
no subcategories
► Windows Server 2019
no subcategories
▼ Storage
► FreeNAS
no subcategories
▼ Virtualization
► Hyper-V
no subcategories
► Proxmox
no subcategories
► VirtualBox
no subcategories
▼ VMware
▼ VMware
▼ VMware
► VMware
► VMware vSphere 5
► VMware vSphere 5.1
► VMware vSphere 5.5
► VMware vSphere 6.0
► VMware vSphere 6.5
► VMware vSphere 6.7
► VMware vSphere 5
no subcategories
► VMware vSphere 5.1
no subcategories
► VMware vSphere 5.5
no subcategories
► VMware vSphere 6.0
no subcategories
► VMware vSphere 6.5
no subcategories
► VMware vSphere 6.7
no subcategories
► VMware vSphere 5
no subcategories
► VMware vSphere 5.1
no subcategories
► VMware vSphere 5.5
no subcategories
► VMware vSphere 6.0
no subcategories
► VMware vSphere 6.5
no subcategories
► VMware vSphere 6.7
no subcategories
▼ Focus Topics
► Git
no subcategories
► UEFI
no subcategories
▼ Network+Accessories
► Load Balancer
no subcategories
► Monitoring
no subcategories
▼ OPNsense
► OPNsense Business Edition
no subcategories
▼ Remote Management
► IPMI
no subcategories
► TKmon
no subcategories
▼ Archive
► AMD
no subcategories
► Areca
no subcategories
► Fusion-io
no subcategories
► News
no subcategories
► Server Hardware Archive
no subcategories
► STEC
no subcategories
Configuración del locale de todo el sistema
Para definir la configuración regional de todo el sistema, establezca la variable en .
El contenido de es una lista de líneas separadas que definen las variables del entorno: además de , es compatible con todas las variables , con excepción de .
Nota: El archivo no existe por defecto, hay que crearlo manualmente.
Sugerencia: Si la salida de durante la instalación es de su agrado, puede guardarla haciendo: mientras se encuentra en el entorno chroot.
/etc/locale.conf
LANG="es_ES.UTF-8"
He aquí un ejemplo de configuración avanzada:
/etc/locale.conf
# Habilitar UTF-8 con valores españoles. LANG="es_ES.UTF-8" # Mantener el orden predeterminado (por ejemplo, los archivos que comienzan con un '.' (punto) # se mostrarán al principio en un listado del contenido del directorio). LC_COLLATE="C" # Establecer la fecha al formato DD-MM-YYYY (comprobación con «date +%c») LC_TIME="es_ES.UTF-8"
Puede establecer la configuración regional («locale») por defecto en o bien usando , por ejemplo:
# localectl set-locale LANG="es_ES.UTF-8"
Consulte y para más detalles.
La configuración regional de todo el sistema estará completamente actualizada después de reiniciar y quedará establecida para las sesiones individuales iniciadas.
5. Changing your locale manually
Editing the locale file is very easy. You can use your favorite text editor to edit the file. If this file does not exist, then no locale is currently set for your system. You can create one manually and enable a locale for your system. The output below shows how the file should look like:
cat /etc/default/locale # File generated by update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
Replace with the locale you wish to have active on your system and save the file. Once you save the file, log out from your current session and then log back in, or open a new terminal, and your newly chosen locale will be active.
NOTE: This example file only sets the variable for your system, which covers the locale for all parts of the system.
Impostare il locale a livello di sistema
Per definire il locale a livello di sistema utilizzato sul sistema, impostare la variabile in :
contiene un elenco per l’assegnazione delle variabile di ambiente in una nuova linea separata: oltre , supporta tutte le variabili , con l’eccezione di .
Nota: non esiste per impostazione predefinita e va creato manualmente.
Suggerimento: Se l’output del locale è di vostro gradimento durante l’installazione, è possibile salvare un po ‘di tempo eseguendo : mentre si è ancora in ambiente chroot.
/etc/locale.conf
LANG="it_IT.UTF-8"
Ecco un esempio di configurazione avanzata:
/etc/locale.conf
# Abilitare UTF-8 con impostazioni Italiane. LANG="it_IT.UTF-8" # Mantenere l'ordine predefinito (ad esempio i file che iniziano con un '.' # dovrebbe apparire all'inizio di un elenco di directory). LC_COLLATE="C" # Impostare la data (test con "date +%c") LC_TIME="it_IT.UTF-8"
È possibile impostare la lingua di default in anche usando , per esempio:
# localectl set-locale LANG="it_IT.UTF8"
Si veda e per maggiori dettagli.
Queste modifiche avranno effetto dopo il riavvio del sistema e sarà impostato per le singole sessioni di login .
Локали в Windows
Для того, чтобы узнать, какие локали доступны в Windows, нужно зайти в панель управления, «Язык и региональные стандарты».
На вкладке «Дополнительно», в разделе «Кодовые страницы таблиц преобразования» показан список всех возможных локалей для Windows, которые можно использовать в PHP. Кодовые страницы, которые отмечены в списке, из PHP могут быть использованы по их номеру. В общем случае, использование выглядит по следующей схеме: Для России это может выглядеть как (cp1251) или (KOI8-R). Для Украины — (cp1251). Вместо длинных названий можно использовать сокращённые , , и так далее. При этом кодовая страница выставится с учётом региональных настроек, для России и Украины — 1251, для Америки — 1252. |
Единственная кодировка, с которой у меня возникли проблемы, как ни странно, оказалась UTF-8. При попытке выставить эту кодировку, выставляются все категории локалей, кроме основной. Вывод локализованных сообщений при этом идёт в cp1251.
Пример - установка локали UTF-8 на Windows |
<? // Кодировка страницы windows-1251 header('Content-Type: text/html; charset=utf-8'); echo '<pre>'; // Локаль устанавливаем UTF-8 echo setlocale(LC_ALL, 'Russian_Russia.65001'), PHP_EOL; // Но данные будут выводиться всё равно в cp1251 :((( echo strftime('%A'), PHP_EOL; ?> LC_COLLATE=Russian_Russia.65001;LC_CTYPE=Russian_Russia.1251; LC_MONETARY=Russian_Russia.65001;LC_NUMERIC=Russian_Russia.65001; LC_TIME=Russian_Russia.65001 пятница |
Пока это можно списать на внутренний механизм PHP работы со строками. С шестой версии PHP вся обработка строк должна будет вестись в UTF-8, но до тех пор надо просто знать об этом и делать поправку.
Ещё одной странностью при работе с локалями в PHP на Windows является неправильная работа с категориями локалей. Так, например, я выставляю локаль на функции времени KOI8-R, , но почему-то выставляется cp1251 на все категории. Суть проблемы я так и не понял, возможно, это просто баг (проверялось на PHP 5.2.3), а возможно, что внутренний механизм Windows просто не позволяет этого делать. Хотя по мне, так это чистой воды баг.
В общем-то, на этом можно и закончить разговор о локалях на Windows. Главное, запомнить, что локали, которые портированы из UNIX, под WIndows работают только для «галочки». Шаг влево, шаг вправо и результат будет непредсказуемым. Безопасно можно использовать только cp1251 (windows-1251) и KOI8-R, и только для .
Код — установка локали на Windows
<?php // Устновка локалей для Windows
// Кодировка Windows-1251
setlocale(LC_ALL, ‘Russian_Russia.1251’);
// Кодировка KOI8-R
setlocale(LC_ALL, ‘Russian_Russia.20866’);
// Кодировка UTF-8 (использовать осторожно)
setlocale(LC_ALL, ‘Russian_Russia.65001’);
?>
Our experts are sharingtheir knowledge with you.
Categories
▼ Server Hardware
► Hard Disk Drives
no subcategories
► HBAs
no subcategories
► Intel
no subcategories
▼ Modular Server
► Modular Server Ethernet Switch
no subcategories
▼ Motherboards
► BIOS Settings
no subcategories
▼ RAID Controllers
► 3ware
no subcategories
▼ Adaptec
► Adaptec SmartRAID
no subcategories
► LSI
no subcategories
▼ Server
► Backplanes
no subcategories
► LES
no subcategories
▼ SSDs
► Intel SSDs
no subcategories
▼ Server Software
▼ Linux
► Debian
no subcategories
► Linux Basics
no subcategories
► Linux Networking
no subcategories
▼ Linux Performance
► Fio
no subcategories
► TKperf
no subcategories
► Linux Software RAID
no subcategories
▼ Linux-Storage
► LVM
no subcategories
► Smartmontools
no subcategories
► Ubuntu
no subcategories
▼ Windows
► Windows Server 2012
no subcategories
► Windows Server 2016
no subcategories
► Windows Server 2019
no subcategories
▼ Storage
► FreeNAS
no subcategories
▼ Virtualization
► Hyper-V
no subcategories
► Proxmox
no subcategories
► VirtualBox
no subcategories
▼ VMware
▼ VMware
▼ VMware
► VMware
► VMware vSphere 5
► VMware vSphere 5.1
► VMware vSphere 5.5
► VMware vSphere 6.0
► VMware vSphere 6.5
► VMware vSphere 6.7
► VMware vSphere 5
no subcategories
► VMware vSphere 5.1
no subcategories
► VMware vSphere 5.5
no subcategories
► VMware vSphere 6.0
no subcategories
► VMware vSphere 6.5
no subcategories
► VMware vSphere 6.7
no subcategories
► VMware vSphere 5
no subcategories
► VMware vSphere 5.1
no subcategories
► VMware vSphere 5.5
no subcategories
► VMware vSphere 6.0
no subcategories
► VMware vSphere 6.5
no subcategories
► VMware vSphere 6.7
no subcategories
▼ Focus Topics
► Git
no subcategories
► UEFI
no subcategories
▼ Network+Accessories
► Load Balancer
no subcategories
► Monitoring
no subcategories
▼ OPNsense
► OPNsense Business Edition
no subcategories
▼ Remote Management
► IPMI
no subcategories
► TKmon
no subcategories
▼ Archive
► AMD
no subcategories
► Areca
no subcategories
► Fusion-io
no subcategories
► News
no subcategories
► Server Hardware Archive
no subcategories
► STEC
no subcategories
Impostare il collation
L’ordinamento (collation), è un po ‘diverso. L’ordinamento è una stupida bestia poiché i vari locale si comportano in modo diverso. Per ovviare a potenziali problemi, Arch utilizza impostare in . Tuttavia, questo metodo è obsoleto. Per abilitare questo comportamento, è sufficiente aggiungere la seguente variabile in :
LC_COLLATE="C"
Ora il comando ordinerà i dotfile per primi, seguito da nomi di file che iniziano con maiuscole e minuscole. Si noti che senza una opzione , le applicazioni ripiegano sul valore di locale specificato da o , ma l’impostazione di verranno sovrascritti se è impostato. Se ciò crea dei problemi, assicurarsi che LC_ALL non sia impostato aggiungendo quanto segue in :
export LC_ALL=
Si noti che LC_ALL è l’unica variabile LC che non deve essere impostata in .
Установка локали
Чтобы отобразить текущую локаль и связанные с ней переменные окружения, наберите:
$ locale
Используемая локаль, выбранная среди сгенерированных в системе, устанавливается в файлах , каждый из которых должен содержать список переменных окружения, например:
locale.conf
LANG=en_AU.UTF-8 LC_COLLATE=C LC_TIME=en_DK.UTF-8
Системная локаль устанавливается в файле /etc/locale.conf. Вы можете установить ее также при помощи localectl:
-
# localectl set-locale LANG=en_US.UTF-8
- Подробнее смотрите на man-странице .
- Совет: Во время установки системы, если вас устраивает вывод команды locale, вы можете просто сохранить его в файл командой (в сеансе arch-chroot).
Системная локаль может переопределяться в каждом пользовательском сеансе с помощью файла ~/.config/locale.conf (или, в общем случае, $XDG_CONFIG_HOME/locale.conf либо $HOME/.config/locale.conf).
-
Совет:
- Это позволяет вести системные логи в на английском, при использовании местного языке в рабочей среде пользователя.
- Вы можете создать файл , тогда для всех новых пользователей, добавленных командой useradd с опцией сразу будет автоматически сгенерирован файл .
Приоритет файлов определяется в .
Смотрите , man-страницу и связанные страницы для получения подробной информации.
После внесения изменений в файлы , они вступят в силу после перезагрузки системы, и для отдельных сеансов пользователей — при входе. Чтобы принудительно обновить локаль в текущем окружении без перезагрузки, выполните:
$ source /etc/profile.d/locale.sh
Добавить новую локаль
Смотрим список всех поддерживаемых (доступных для установки) локалей:
$ cat /etc/locale.gen
# This file lists locales that you wish to have built. You can find a list # of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add # user defined locales to /usr/local/share/i18n/SUPPORTED. If you change # this file, you need to rerun locale-gen. # aa_DJ ISO-8859-1 # aa_DJ.UTF-8 UTF-8 # .......... # en_US.ISO-8859-15 ISO-8859-15 # en_US.UTF-8 UTF-8 # en_ZA ISO-8859-1 # .......... # ru_RU.KOI8-R KOI8-R # ru_RU.UTF-8 UTF-8 # ru_UA KOI8-U # .......... # zu_ZA ISO-8859-1 # zu_ZA.UTF-8 UTF-8
Устанавливаем нужные локали — и :
$ sudo locale-gen en_US.UTF-8 ru_RU.UTF-8 Generating locales (this might take a while)... en_US.UTF-8... done ru_RU.UTF-8... done Generation complete.
Второй способ установить локали — расскомментровать нужные строки в файле
# This file lists locales that you wish to have built. You can find a list # of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add # user defined locales to /usr/local/share/i18n/SUPPORTED. If you change # this file, you need to rerun locale-gen. # aa_DJ ISO-8859-1 # aa_DJ.UTF-8 UTF-8 # .......... # en_US.ISO-8859-15 ISO-8859-15 en_US.UTF-8 UTF-8 # en_ZA ISO-8859-1 # .......... # ru_RU.KOI8-R KOI8-R ru_RU.UTF-8 UTF-8 # ru_UA KOI8-U # .......... # zu_ZA ISO-8859-1 # zu_ZA.UTF-8 UTF-8
И просто выполнить команду без указания локалей:
$ sudo locale-gen
Сетевые настройки
Базовая настройка
Этот метод настройки является самым гибким и функциональным, но требует ручной правки конфигурационных файлов.
Если Debian устанавливался по сети, то настройки будут перенесены из установщика в установленную систему, т.е. ничего настраивать уже не нужно.
Ищем нашу сетевую карту в списке:
# ifconfig -a
Для более детальной информации о сетевых картах можно воспользоваться специальными
Открываем файл конфигурации сети:
# nano /etc/network/interfaces
Строки, начинающиеся со слова «auto», используются для идентификации физических интерфейсов при их подьеме во время запуска ifup с опцией -a. (Эта опция используется сценариями загрузки системы.) Имена физических интерфейсов должны следовать за словом «auto» в той же строке. Может быть несколько строф «auto». ifup поднимет названные интерфейсы в порядке их перечисления.
Строки, начинающиеся с «allow-«, используются для идентификации интерфейсов, которые должны быть подняты автоматически различными подсистемами. Это может быть сделано, например, с использованием команды «ifup —allow=hotplug eth0 eth1», которая будет поднимать только eth0 или eth1, если они перечислены в строке «allow-hotplug». Учтите, что «allow-auto» и «auto» — синонимы.
Если настройки статические, тогда, к примеру, заполняем так:
auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.94 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1
Если настройки сети раздаются через DHCP, тогда, к примеру, заполняем по-другому:
auto eth0 allow-hotplug eth0 iface eth0 inet dhcp
Если необходимо использовать одновременно несколько IP адресов на одной сетевой карте, тогда, к примеру, добавляем строки:
auto eth0:1 iface eth0:1 inet static address 192.168.0.94 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255
Для настройки DNS нужно редактировать файл /etc/resolv.conf
Статичный DNS, например:
nameserver 10.30.1.11 212.45.2.5 search gspk domain bober.gspk
Динамический DNS по DHCP вносится в /etc/resolv.conf автоматически.
Настройка в консольном интерфейсе wicd-curses
wicd — cлужба управления проводными и беспроводными сетями для Linux с Qt, GTK+ и curses интерфейсами. Эта служба наиболее удобна, если часто возникает необходимость в быстром подключении к различным сетям.
После первого запуска wicd автоматические переключает все настройки сети на DHCP.
Для управления службой в консоли необходим curses клиент wicd-curses.
# aptitude install wicd-curses
Запускам настройку:
# wicd-curses
Для применения настроек необходимо нажать «Shift+C»
Локаль Системы По Умолчанию
Дельный Совет: Создайте потрясающий ASCII баннер из командной строки в Linux и вставьте его в предупреждающее сообщение, которое будет появляться при подключении по SSH! Читать далее →
Выполните следующие действия для смены системной локали по умолчанию (для всех пользователей).
Поддерживаемые релизы: Ubuntu-15.04, 15.10, 16.04, 16.10, 18.04.
Ubuntu-14.04
Поддерживаемые релизы: Ubuntu-9.10, 10.04, 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10.
Откройте файл с настройками локали по умолчанию:
/etc/default/locale
Переопределите значение переменной :
LANG="en_US.utf8"
CentOS-6
Откройте файл с настройками локали по умолчанию:
/etc/sysconfig/i18n
Переопределите значение переменной :
LANG="en_US.utf8"
Необходима перезагрузка: Изменения системных настроек вступит в силу только после перезагрузки.
Удаленный доступ к консоли
Устанавливаем ssh: — комплекс программ, позволяющих соединяться с удалёнными машинами по защищённому каналу и выполнять команды в консоли:
# aptitude install ssh
Этот метапакет содержит программу клиента ssh и службу sshd, обрабатывающую входящие ssh подключения к вашему компьютеру.
Авторизация по ключам
Генерация ключей
Вариaнт 1 (подходит для putty и native ssh клиентов Linux)
Выбираем пользователя на сервере под которым будем логиниться в ssh. Например это будет «user». Входим с его правами в консоль. Далее генерируем ключи, при желании указываем пароль на создаваемый ключ.
ssh-keygen -t rsa -b 2048 -C "комментрий к ключу" -f /user/.ssh/newserver.key
В итоге получаем в «/user/.ssh/» два файла «newserver.key» и «newserver.key.pub»
Вариaнт 2 (для всех + проприетарный Bitvise Tunnelier)
К сожалению, я не нашёл способа сконвертировать OpenSSH ключи в понятный Tunnelier-у формат. Поэтому действовать будем от обратного.
На Windows машине запускаем Bitvise Tunnelier. На вклaдке «Login» выбираем раздел «Authentickation» —> «Use keypair manager». В новом окне жмём «Generate New …», выставляем опции на свой вкус —> «Generate». Далее выбираем «Export» и сохраняем любым удобным способом публичный ключ в формате OpenSSH в файл /user/.ssh/newserver.key.pub на ssh сервере.
Для использования в других ssh клиентах аналогично экспортируем и закрытый ключ. В итоге получаем в «/user/.ssh/» два файла «newserver.key» и «newserver.key.pub»
Настройка сервера
Перемещаем открытый ключ в список разрешённых ключей Например так
mv /user/.ssh/newserver.key.pub /user/.ssh/authorized_keys
Правим конфигурацию сервера
nano /etc/ssh/sshd_config # Разрешаем авторизацию по парам ключей PubkeyAuthentication yes # Путь к списку отпечатков открытых ключей AuthorizedKeysFile %h/.ssh/authorized_keys
Проверяем права доступа, должно быть так
root@gtw:~# ls -g .ssh итого 4 -rw------- 1 root 392 Мар 24 20:03 authorized_keys
Если права доступа отличаются, то выставляем правильные:
chmod 600 -R .ssh && chown root:root .ssh/authorized_keys
Перезапускаем сервер
/etc/init.d/ssh restart
При появлении проблем доступа смотрим лог
cat /var/log/auth.log | tail
Настройка клиента
Выбираем пользователя на клиенте под которым будем логиниться в ssh. Например это будет «user». Логинимся по юзером. Любым удобным способом копируем сгенерированный ранее файл newserver.key в папку /home/user/.ssh. Если хочется, чтобы ssh клиент подхватывал ключ автоматически, сохраняем ключ с новыми именем «id_dsa»
Выставляем права доступа, иначе ssh клиент проигнорирует ключ.
cd /home/user chmod 700 ./.ssh chmod 600 ./.ssh/newserver.key
Запускаем ssh клиента.
ssh -i /home/user/.ssh/newserver.key user@192.168.0.1
Всё должно работать.
Настройка Putty
К сожалению, Putty не понимает ключи в формате OpenSSH. Поэтому загружаем latest development snapshot Puttygen. Обычный Puttygen нам не подойдёт.
Скармливаем проге наш newserver.key (Conversions —> Import key), если нужно вводим пароль для доступа ключу. Получаем окно
Если надо меняем комментарий и пароль доступа к ключу. В разделе «Parameters» рекомендую выбрать SSH-2 RSA и 2048 bits. Далее жмём «Save private key» и получаем ключ в формате ppk, пригодный для скармливания обычному Putty в разделе Сonnection —> SSH —> Auth
Усиленные настройки безопасности
Рекомендую следующие настройки
nano /etc/ssh/sshd_config #Запрещаем вход под root PermitRootLogin no # Меняем порт по умолчанию - может помочь против поверхностного сканирования портов Port 17854 # Указываем на каком IP слушать порт ListenAddress 192.168.0.1 # Запрещаем вход по паролям, усложняет брутфорс PasswordAuthentication no # Запрещаем пустые пароли PermitEmptyPasswords no # Только root может авторизоваться по ssh AllowUsers root # Меняем стандартный порт, но мне больше нравится реализовывать это через port mapping # Port 4422
Warning Message
The warning message during the installation of Perl applications will appear as follows:
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
This problem may arise when packages are being added. The following example will show a corresponding output:
8000050000:~# apt-get install multipath-tools Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: dmsetup kpartx libaio1 Suggested packages: multipath-tools-boot The following NEW packages will be installed: dmsetup kpartx libaio1 multipath-tools 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 266kB of archives. After this operation, 950kB of additional disk space will be used. Do you want to continue [Y/n]? y Get:1 http://ftp.de.debian.org lenny/main dmsetup 2:1.02.27-4 Get:2 http://ftp.de.debian.org lenny/main kpartx 0.4.8-14+lenny2 Get:3 http://ftp.de.debian.org lenny/main libaio1 0.3.107-3 Get:4 http://ftp.de.debian.org lenny/main multipath-tools 0.4.8-14+lenny2 Fetched 266kB in 1s (154kB/s) perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory Selecting previously deselected package dmsetup. (Reading database ... 27499 files and directories currently installed.) Unpacking dmsetup (from .../dmsetup_2%3a1.02.27-4_amd64.deb) ... Selecting previously deselected package kpartx. Unpacking kpartx (from .../kpartx_0.4.8-14+lenny2_amd64.deb) ... Selecting previously deselected package libaio1. Unpacking libaio1 (from .../libaio1_0.3.107-3_amd64.deb) ... Selecting previously deselected package multipath-tools. Unpacking multipath-tools (from .../multipath-tools_0.4.8-14+lenny2_amd64.deb) ... Processing triggers for man-db ... perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). /usr/bin/mandb: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct Setting up dmsetup (2:1.02.27-4) ... Setting up kpartx (0.4.8-14+lenny2) ... Setting up libaio1 (0.3.107-3) ... Setting up multipath-tools (0.4.8-14+lenny2) ... perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). Starting multipath daemon: multipathd. perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). 8000050000:~#
Solución de problemas
Mi terminal no es compatible con UTF-8
Desafortunadamente, algunos terminales no son compatibles con UTF-8. En este caso, usted tiene que utilizar un terminal diferente. Aquí tiene una lista con algunos terminales que tienen soporte para UTF-8:
- vte-based terminals
- gnustep-terminal
- konsole
- mlterm
- rxvt-unicode
- xterm
Gnome-terminal o rxvt-unicode no es compatible con UTF-8
Es necesario poner en marcha estas aplicaciones desde una localización UTF-8 o caerá el soporte UTF-8. Activar el locale (o su locale UTF-8 alternativo) como se explicó anteriormente, y establézcalo como el idioma por defecto, reiniciando, a continuación, el sistema.
Set Default System Locale
Cool Tip: Create the awesome ASCII banners from the Linux command line and decorate your SSH warning messages! Read more →
Perform the following steps to permanently change the system locale (for the all users).
Supported releases: Ubuntu-15.04, 15.10, 16.04, 16.10, 18.04.
Ubuntu-14.04
Supported releases: Ubuntu-9.10, 10.04, 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10.
Edit the file with default locale settings:
/etc/default/locale
Set the variable:
LANG="en_US.utf8"
CentOS-6
Edit the file with default locale settings:
/etc/sysconfig/i18n
Set the variable:
LANG="en_US.utf8"
Reboot is required: Note that the above settings will take effect after reboot only.
Сессии в консоли
Screen
Устанавливаем screen: — утилиту-мультиплексор, предоставляющую пользователю доступ к нескольким консолям в рамках одной сессии.:
# aptitude install screen
Далее настраиваем:
nano /etc/screenrc # Отключаем приветствие startup_message off # Производить отключение сессии при разрыве связи с терминалом autodetach on # Включаем строку состояния hardstatus on # Параметры строки состояния hardstatus alwayslastline "%{+b wk} %c $LOGNAME@%H %= "
или одной командой:
sed -i 's/^#startup_message.*/startup_message off/; s/^#autodetach.*/autodetach on/; s/^hardstatus off.*/hardstatus on/; s/^hardstatus string.*/hardstatus alwayslastline "%{+b wk} %c $LOGNAME@%H %= "/' /etc/screenrc