ssh: автоматически принимать ключи

Сначала откройте терминал, станьте root

sudo -i

Затем используйте следующие команды:

измените «старый» на старое имя пользователя, а «новый» на новый желаемое имя.

usermod -d /home/new -m old

sed -i -e 's_old_new_g' /etc/passwd

sed -i -e 's_old_new_g' /etc/group

sed -i -e 's_old_new_g' /etc/shadow

Первая команда перемещает ваш домашний каталог, см. man usermod

-d, --home HOME_DIR Новый каталог входа пользователя. Если задана опция -m, содержимое текущего домашнего каталога будет перемещено в новый домашний каталог, который создается, если он еще не существует.

Команда sed изменяет имя в /etc/{passwd,group,shadow}

Система в противном случае идентифицирует пользователей по номеру, а не по имени, поэтому ваше владение файлами и разрешения будут в порядке

[d9 ] Чтобы увидеть свой цифровой идентификатор, запустите команду

id
174
задан 18 April 2012 в 14:11

4 ответа

Используйте параметр StrictHostKeyChecking, например:

ssh -oStrictHostKeyChecking=no $h uptime

Эта опция также может быть добавлена ​​в ~ / .ssh / config, например:

Host somehost
    Hostname 10.0.0.1
    StrictHostKeyChecking no

Обратите внимание, что когда ключи хоста изменились, вы получите предупреждение даже с этой опцией:

$ ssh -oStrictHostKeyChecking=no somehost uptime
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
31:6f:2a:d5:76:c3:1e:74:f7:73:2f:96:16:12:e0:d8.
Please contact your system administrator.
Add correct host key in /home/peter/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/peter/.ssh/known_hosts:24
  remove with: ssh-keygen -f "/home/peter/.ssh/known_hosts" -R 10.0.0.1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
ash: uptime: not found

Если ваши хосты не часто переустанавливаются, вы можете сделать это менее безопасным (но более удобным для часто меняющегося ключи хоста) с опцией -oUserKnownHostsFile=/dev/null. Это отбрасывает все принятые ключи хоста, чтобы он никогда не генерировал предупреждение.

171
ответ дан 25 May 2018 в 12:35
  • 1
    Отличный ответ, спасибо! – Adam Matan 18 April 2012 в 15:11
  • 2
    Это не лучшее решение, поскольку оно обходит встроенные средства безопасности. ssh-keyscan является предпочтительным, если он доступен в вашей системе. – Stefan Lasiewski 11 November 2015 в 23:06
  • 3
    @StefanLasiewski Это позволяет человеку в середине атаки, если вы находитесь в ненадежных сетях. Для принятия новых ключей к фиксированным хостам подход ssh-keyscan более эффективен. Для локальных виртуальных машин и других хостов в надежных сетях с динамическими / повторно используемыми IP-адресами описанный подход достаточно хорош. – Lekensteyn 12 November 2015 в 02:49
  • 4
    Чтобы прояснить разницу между двумя решениями: решение ssh-keyscan только подвержено атаке «человек в середине», когда запускается один раз ssh-keyscan. Решение -oStrictHostKeyChecking=no подвержено атаке «человек-в-середине» каждый раз, когда выполняется ssh. – Erik Sjölund 25 August 2016 в 16:03

Вы можете использовать следующую команду для добавления отпечатка пальца для сервера к вашим известным_hosts

ssh-keyscan -H <ip-address> >> ~/.ssh/known_hosts
ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

ПРИМЕЧАНИЕ. Замените & lt; ip-address> и & lt; hostname> с именем IP и dns сервера, который вы хотите добавить.

Единственная проблема заключается в том, что в конечном итоге у вас будет несколько серверов в ваших known_hosts. Это не очень много, просто упомянуть. Чтобы убедиться, что дубликатов нет, вы можете сначала удалить все серверы, выполнив следующее:

ssh-keygen -R <ip-address>
ssh-keygen -R <hostname>

. Таким образом, вы можете запустить:

for h in $SERVER_LIST; do
    ip=$(dig +search +short $h)
    ssh-keygen -R $h
    ssh-keygen -R $ip
    ssh-keyscan -H $ip >> ~/.ssh/known_hosts
    ssh-keyscan -H $h >> ~/.ssh/known_hosts
done

ум при удалении только для повторного добавления, вы по существу устраняете безопасность проверки отпечатка пальца. Таким образом, вы не захотите запускать этот скрипт перед каждым исполнением вашего скрипта утилиты.

93
ответ дан 25 May 2018 в 12:35
  • 1
    запускать его через сортировку | uniq, а затем поиск дублирующего хоста с использованием awk после того, как скрипт сможет обнаруживать измененные хосты и предупреждать пользователей только о тех, поскольку тот же хост с разными ключами может означать проблемы – Lennart Rolland 21 May 2015 в 22:52
  • 2
    Возможно, вы захотите добавить примечание, что -H хеширует имена хостов и адреса. – David Cullen 7 October 2016 в 22:27

Я немного опоздал с этим ответом, но разумным способом было бы сделать ssh-keyscan на новом компьютере, прежде чем запускать сборку времени.

ssh-keyscan  <newhost> >> ~/.ssh/known_hosts

Отключение проверки работоспособности для удобства звучит как плохой план, даже если вы считаете, что полностью контролируете окружающую среду.

23
ответ дан 25 May 2018 в 12:35
  • 1
    На самом деле это то, что я искал. Благодарю. – user156516 31 May 2016 в 20:33
  • 2
    выполнение указанной выше команды, а не проверка ключей хоста на отпечатки пальцев, которые вы приобрели вне диапазона, уязвимы точно так же, как StrictHostKeyChecking no – code_monk 4 April 2017 в 23:17
  • 3
    @code_monk: нет, это не так. Я открываю одноразовую возможность для отказа (принятие ключа от неправильного хоста для добавления к известным хостам). StrictHostKeyChecking no позволит повторить прием для других машин. – tink 4 April 2017 в 23:20

Чтобы добавить список серверов автоматически, мы можем сделать ниже:

Добавить серверы IP в файловые серверы-список

IP-адреса должны быть добавлены в нижнем формате.

Вывод cat servers-list

123.1.2.3
124.1.2.4
123.1.2.5

Измените выше IP-адреса, заменив ваши.

Ниже команда добавит все серверы из списка.

0
ответ дан 25 May 2018 в 12:35

Другие вопросы по тегам:

Похожие вопросы: