Файл known_hosts выглядит следующим образом:
[localhost]:8001 ssh-dss AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpU
[10.18.60.198]:8001 ssh-dss AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9
// key are trimmed at the end
Эти ключи добавляются через Eclipse IDE. Хотите узнать, какие еще есть способы добавить хосты (IP-адреса) и их ключи в файл ssh/known_hosts?
Конкретно:- Как добавитьssh-dssключ для любого хоста (IP) в файле known_hosts.
РЕДАКТИРОВАТЬ:-
Я использую JBoss BRMS, который использует git для проектов BRMS. Поэтому во время клонирования проекта BRMS в Eclipse IDE через Git возникает следующая ошибка:
Невозможно установить подлинность хоста 'localhost'.
Отпечаток ключа DSA — e2:2c:62 //trimmed.
Вы уверены, что хотите продолжить подключение?
Затем он автоматически добавляет ключ ssh-dss в файл known_hosts.
Так где же найти этот ключ и добавить его вручную в файл knownhosts?
решение1
Формат ~/.ssh/known_hosts
определяется OpenSSH. Другое программное обеспечение может либо вызывать OpenSSH (сшcommand) или может иметь собственные реализации, которые не обязательно на 100% совместимы.
Формат OpenSSH known_hosts описан вСтраница руководства sshd(8), в разделе "формат файла ssh_known_hosts". Там написано, что это текстовый файл с одной строкой на пару хост-ключ:
Каждая строка в этих файлах содержит следующие поля: маркеры (необязательно), имена хостов, тип ключа, ключ в кодировке base64, комментарий. Поля разделяются пробелами. […] Имена хостов — это список шаблонов, разделенных запятыми ('
*
' и '?
' действуют как подстановочные знаки); каждый шаблон в свою очередь сопоставляется с именем хоста. […] Имя хоста или адрес могут быть необязательно заключены в скобки '[
' и ']
', за которыми следует ':
' и нестандартный номер порта.
Чтобы автоматически добавить ключ для нового хоста, просто подключитесь к нему по SSH.
Чтобы вручную добавить ключ для нового хоста, 1) откройте файл known_hosts в текстовом редакторе и 2) добавьте ключ для нового хоста, следуя тому же формату. (Ключ должен соответствовать хосту, к которому вы подключаетесь. Вы можете запросить ключ у хоста, используя ssh-keyscan -t <type> <address>
.)
Чтобы добавить ключ длявсеhosts, используйте *
шаблон в качестве имени хоста, который будет соответствовать всем именам хостов и адресам. Чтобы добавить ключ для всех хостовна определенном порту, используйте [*]:8001
в качестве имени хоста.
решение2
Например, вам нужно добавить127.0.0.1в known_hosts:
ssh-keyscan -H 127.0.0.1 >> ~/.ssh/known_hosts
Для Docker-файла я использую:
RUN apt-get update \
&& apt-get install -y \
ssh \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p ~/.ssh/ \
&& ssh-keyscan -H 192.168.12.31 >> ~/.ssh/known_hosts
Где apt-get install -y ssh
- сделать возможным использованиеssh-keyscanв командной строке, затем rm -rf /var/lib/apt/lists/*
- очистка информации о загруженном пакете с помощью apt.
решение3
Попробуйте подключиться к целевой машине по SSH, а затем введите yes, когда система попросит сохранить ключ.