У меня есть два сервера. Оба сервера находятся в CentOS 5.6. Я хочу SSH с Сервера 1 на Сервер 2, используя свой закрытый ключ (OpenSSH SSH-2 Private Key).
Я не знаю, как сделать это через Unix. Но то, что я сделал в Windows, используя Putty, это передал свой закрытый ключ OpenSSH в putty-gen и сгенерировал закрытый ключ в формате PPK.
Тем не менее, я буду создавать сценарий bash с сервера 1, который будет выполнять некоторые команды на сервере 2 через SSH.
Как мне подключиться по SSH к серверу 2, используя файл личного ключа с сервера 1?
ssh-copy-id user@machine
Ответы:
Вам нужен ваш открытый ключ SSH, и вам нужен ваш личный ключ ssh. Ключи могут быть сгенерированы с
ssh_keygen
. Закрытый ключ должен храниться на сервере 1, а открытый ключ должен храниться на сервере 2.Это полностью описано на странице openssh, поэтому я процитирую многое из этого. Вам следует прочитать раздел «Аутентификация». Также руководство openSSH должно быть действительно полезным: http://www.openssh.org/manual.html
Пожалуйста, будьте осторожны с ssh, потому что это влияет на безопасность вашего сервера.
От
man ssh
:Это означает, что вы можете хранить свой закрытый ключ в своем домашнем каталоге в .ssh. Другая возможность - указать ssh через
-i
параметр switch использовать специальный файл идентификации. Также изman ssh
:Это для закрытого ключа. Теперь вам нужно ввести ваш открытый ключ на сервере 2. Снова цитата из
man ssh
:Самый простой способ добиться этого - скопировать файл на сервер 2 и добавить его в файл authorized_keys:
Для демона ssh должна быть разрешена авторизация через открытый ключ, см
man ssh_config
. Обычно это можно сделать, добавив следующую инструкцию в файл конфигурации:источник
ssh -i keyfile
Спасибо!ssh-copy-id
:ssh-copy-id -i ~/.ssh/foo.id_rsa remote.example.com
.ssh-add
после создания ключа на компьютере, с которого вы подключаетесь. это то, что вызывает головную боль у большинства людей.$ ssh -i ~/.ssh/id_rsa myuser@ssh.myhost.com
я получаю сообщение об ошибке:myuser@ssh.myhost.com: Permission denied (publickey).
у меня создан ключ, добавлен локально с использованиемssh-add
и добавлен в качестве авторизованного ключа на удаленном сервере.Я использовал ssh с опцией -i, чтобы добавить ваш ключ здесь.
Если вы хотите передать arg1, arg2 с файлом .sh, просто передайте его после файла .sh и используйте пробел для его разделения.
ssh -i home/avr/new.pem ar@231.221.54.8 "/var/www/beta/betatolive.sh mmin 30"
источник
chmod 600 home/avr/new.pem
Первое, что вам нужно сделать, это убедиться, что вы запустили команду keygen для генерации ключей:
Затем используйте эту команду, чтобы передать ключ на удаленный сервер, изменив его в соответствии с именем вашего сервера.
источник
ssh-copy-id user@hostname
вместо этого позвонимДобавьте открытый ключ (
id_[rd]sa.pub
) для вашего исходного компьютера (откуда вы используете sshing) в~/.ssh/authorized_keys
файл сервера назначения для имени пользователя, в который вы хотите войти в ssh. Если вы потеряли открытый ключ, вы можете создать новый с помощьюssh-keygen
. Использование аргументов по умолчанию для этого должно быть приемлемым для большинства целей. Если вам нужны более подробные инструкции, есть тысячи учебников, которые вы можете найти в Google.источник
Используйте
ssh-copy-id
на сервере 1, предполагая, что у вас есть пара ключей (сгенерированная с помощьюssh-keygen
):Теперь вы должны иметь возможность подключиться к ssh на сервере 2 с помощью закрытого ключа.
Действительно, если вы проверите
cat ~/.ssh/authorized_keys
на сервере 2, вы увидите, что открытый ключ добавлен для вас.источник