Translation(s): English - Italiano - Русский
Переименование компьютера
Эта страница объясняет, как изменить hostname системы (т.е. переименовать компьютер/сервер)
Смотрите также: hostname(1).
Contents
Базовые сетевые настройки
Обновить /etc/hostname
Обновить /etc/hosts, так локальный адрес(адреса) разрешается с новым именем системы.
- Перезагрузить конфигурацию сети. У вас есть два варианта:
- Обновить конфигурационные файлы
Это временно отключит вашу систему от сети (ssh, обычно, удерживает связь при кратковременных разъединениях)
Это может окончательно отсоединить вашу систему от сети потому что сеть может не восстановить соединение; для гарантированного применения настроек лучше перезагрузить систему, это больше даст гарантии от возможных ошибок.
- Обновить конфигурационные файлы
invoke-rc.d hostname.sh start invoke-rc.d networking force-reload invoke-rc.d network-manager force-reload
ToDo: is it useful to reload network-manager?
или ленивый способ: Перезагрузить систему.
systemd
В версиях Debian с установленным systemd, можно использовать команду "hostnamectl set-hostname mymachine". Этот инструмент зависит от dbus поэтому обязательно установите его в первую очередь.
Специфические приложения
avahi
Avahi использует так называемые публикации (объявления) локальным службам. Если вы изменяли файлы /etc/avahi/* вы должны выполнить:
invoke-rc.d avahi-daemon force-reload
CUPS
CUPS это Common Unix Printing System.
Нужно настроить файл /etc/printcap.
Вы должны поменять hostname в любой такой линии: Kyocera_TASKalfa_3050ci|Kyocera TASKalfa 3050ci:rm=debian:rp=Kyocera_TASKalfa_3050ci:
Вы должны перезапустить службу, чтобы изменения вступили в силу.
ejabberd
Обратитесь к оф. документации https://docs.ejabberd.im/.
Exim
Перенастроить Exim (это затронет /etc/exim4/update-exim4.conf.conf и /etc/mailname):
dpkg-reconfigure exim4-config
Или настроить вручную /etc/exim4/update-exim4.conf.conf (hostname=). После этого надо перезапустить службу.
Mailname
Перенастроить Exim (см. выше) или настроить вручную /etc/mailname. После этого не надо перезапускать службу.
Сообщение дня
Настроить /etc/motd. После этого не надо перезапускать службу.
OpenSSH
Настроить /etc/ssh/ssh_host_rsa_key.pub, /etc/ssh/ssh_host_dsa_key.pub, /etc/ssh/ssh_host_ed25519_key.pub и /etc/ssh/ssh_host_ecdsa_key.pub (root@hostname в конце). После этого надо перезапустить службу.
Самоподписанный SSL сертификат
Пересоздать самоподписанный сертификат, созданный пакетом the ssl-cert используя правильный hostname вашего компьютера.
make-ssl-cert generate-default-snakeoil --force-overwrite
После этого надо перезапустить службу использующие это, например apache2.
ssmtp
Легковесная программа Ssmtp, для отправки только через SMTP.
Настроить /etc/ssmtp/ssmtp.conf (hostname=, и т. д.). После этого не надо перезапускать службу.
sysklogd
Перезапустите службу sysklogd.
fail2ban
fail2ban scan logs to detect connection failures and can ban IP on too many failures.
The hostname may be in the sender mail address in /etc/fail2ban/jail.local. You need to reload the service.
lvm
Logical Volume Manager (LVM) is a device mapper target that provides logical volume management.
Hostname появляется в резервной копии конфигурационного файла /etc/lvm/backup/<your Volume Group>.
Скрипт, который может вам помочь
Опасный скрипт
Вы должны понимать, что данный скрипт может быть опасен для вашей системы. Вы должны проверить наличие всех файлов grep -rl "$old" /etc, которые должны быть модифицированы перед запуском этого скрипта:
Улучшенный вариант скрипта
Этот скрипт будет делать тоже самое, что и скрипт выше, но он будет спрашивать о каждом файле, который надо изменить, прежде чем он отредактирует файл.
1 #!/bin/bash
2 #
3
4 # Fetching new and old hostname
5 OLD_HOSTNAME=$(hostname)
6 NEW_HOSTNAME=$1
7
8 WHIPTAIL_TITLE="Changing hostname"
9 WHIPTAIL_BACKTITLE="ShrimpDev <dev@csoellinger.at>"
10 WHIPTAIL_TEXT="Below you will find a checklist with all files where we found your old hostname \"${OLD_HOSTNAME}\" inside /etc\n\nPlease check which files we should update to your new hostname \"${NEW_HOSTNAME}\""
11
12 not_root() {
13 echo "ERROR: You have to be root to execute this script"
14 exit 1
15 }
16
17 usage() {
18 echo "usage : $0 <new hostname> [Optional:--backup/Set backup mode on] [Optional:--debug/Set debug mode on]"
19 exit 1
20 }
21
22 # Check if user is root
23 [ $EUID != 0 ] && not_root
24
25 # Check if we have at least one parameter
26 [ "$1" ] || usage
27
28 [ "$1" == "--backup" ] && usage
29 [ "$1" == "--debug" ] && usage
30
31 DEBUG="NO"
32 BACKUP="NO"
33
34 if [ "$2" == "--debug" ] || [ "$3" == "--debug" ]; then
35 DEBUG="YES"
36 fi
37
38 if [ "$2" == "--backup" ] || [ "$3" == "--backup" ]; then
39 BACKUP="YES"
40 fi
41
42 [ "$DEBUG" == "YES" ] && echo "DEBUG (NO FILES WILL BE CHANGED)"
43 [ "$BACKUP" == "YES" ] && echo "BACKUP MODE ON"
44
45 # Grep all possible targets
46 TARGETS=($(grep "$OLD_HOSTNAME" /etc/ -rl))
47 let TARGETSLENGTH=${#TARGETS[@]}
48
49 CHECKLIST=()
50 for ((i=0; i<${#TARGETS[@]}; i++)); do
51 CHECKLIST+=("${TARGETS[$i]}" "" "ON")
52 done
53
54 CHECKLIST_RESULT=$(whiptail --clear --fb --title "$WHIPTAIL_TITLE" --backtitle "$WHIPTAIL_BACKTITLE" --checklist "$WHIPTAIL_TEXT" 30 80 $TARGETSLENGTH "${CHECKLIST[@]}" 3>&2 2>&1 1>&3)
55 CHECKLIST_RESULT=${CHECKLIST_RESULT//\"/}
56 CHECKLIST_RESULT_ARR=(`echo $CHECKLIST_RESULT | tr ' ' '\n'`)
57
58 clear
59
60 for CHECKLIST_ITEM in "${CHECKLIST_RESULT_ARR[@]}"; do
61 echo "sed \"s:${OLD_HOSTNAME}:${NEW_HOSTNAME}:g\" \"${CHECKLIST_ITEM}\" > \"${CHECKLIST_ITEM}.tmp\""
62 [ "$DEBUG" == "NO" ] && sed "s:$OLD_HOSTNAME:$NEW_HOSTNAME:g" "$CHECKLIST_ITEM" > "$CHECKLIST_ITEM.tmp"
63
64 if [ "$2" == "--backup" ]; then
65 echo "cp \"${CHECKLIST_ITEM}\" \"${CHECKLIST_ITEM}.BCK\""
66 [ "$DEBUG" == "NO" ] && cp "$CHECKLIST_ITEM" "$CHECKLIST_ITEM.BCK"
67 fi
68
69 echo "mv -f \"${CHECKLIST_ITEM}.tmp\" \"${CHECKLIST_ITEM}\""
70 [ "$DEBUG" == "NO" ] && mv -f "$CHECKLIST_ITEM.tmp" "$CHECKLIST_ITEM"
71
72 echo ""
73 done
74
75 exit 0
Другой вариант скрипта
#!/bin/bash # usage() { echo "usage : $0 <new hostname>" exit 1 } [ "$1" ] || usage old=$(hostname) new=$1 for file in \ /etc/exim4/update-exim4.conf.conf \ /etc/printcap \ /etc/hostname \ /etc/hosts \ /etc/ssh/ssh_host_rsa_key.pub \ /etc/ssh/ssh_host_dsa_key.pub \ /etc/motd \ /etc/ssmtp/ssmtp.conf do [ -f $file ] && sed -i.old -e "s:$old:$new:g" $file done