SSH и SCP без ввода пароля на openSSH
В этой статье я объясню, как выполнять ssh и scp без ввода пароля с помощью проверки подлинности SSH Public Key с SSH Agent на openSSH
В проверке подлинности ключей SSH есть два уровня безопасности. Для того, чтобы войти, вам нужен как частный ключ, так и пароль. Даже если один из них скомпрометирован, злоумышленник все равно не может войти в вашу учетную запись, так как оба они необходимы для входа в систему. Это гораздо лучше, чем типичная аутентификация на основе пароля, где, если пароль скомпрометирован, злоумышленник может получить доступ к системе.
Есть два способа выполнить ssh и scp без ввода пароля:
- Нет фразы. При создании ключевой пары оставьте фразу пустой. Используйте эту опцию для автоматической обработки пакетов. например, если вы работаете Cron работу по копированию файлов между машинами это подходящий вариант.
- Используйте passphrase и SSH Agent. Если вы используете ssh и scp интерактивно из командной строки, и вы не хотите использовать пароль каждый раз, когда вы выполняете ssh или scp, я не рекомендую предыдущую опцию (без фразы), так как вы устранили один уровень безопасности в ssh ключевой аутентификации. Вместо этого используйте пароль при создании ключевой пары и используйте SSH Agent для выполнения ssh и scp без необходимости вводить пароль каждый раз, как это объясняется в шагах ниже.
Следующие 8 шагов объясняет, как выполнять SSH и SCP от локального хоста до удаленного хоста без ввода пароля в системе openSSH
1. Убедитесь, что локальный хост и удаленный хост работает openSSH
[local-host]$ ssh -V OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006 [remote-host]$ ssh -V OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006
2. Создание ключевой пары на локальном хосте с помощью ssh-keygen
[local-host]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):<Hit enter> Enter passphrase (empty for no passphrase): <Enter your passphrase here> Enter same passphrase again:<Enter your passphrase again> Your identification has been saved in /home/jsmith/.ssh/id_rsa. Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub. The key fingerprint is: 31:3a:5d:dc:bc:81:81:71:be:31:2b:11:b8:e8:39:a0 [email protected]
Публичный ключ и частный ключ, как правило, хранятся в папке .ssh под домашним каталогом. В этом примере он находится под /home/jsmith/.sshd. Вы не должны делиться личным ключом ни с кем.
По умолчанию ssh-keygen на openSSH генерирует ключевую пару RSA. Вы также можете создать ключевую пару DSA, используя: ssh-keygen-t dsa команду.
3. Установка общедоступного ключа на удаленном хосте.
Скопируйте содержимое общедоступного ключа у местного хоста и вставьте его в /home/jsmith/.ssh/authorized_keys на удаленном хосте. Если /home/jsmith/.ssh/authorized_keys уже есть другой публичный ключ, вы можете придать этому конец. Если каталога .ssh под домашним каталогом на удаленном хосте не существует, пожалуйста, создайте его.
[remote-host]$ vi ~/.ssh/authorized_keys
ssh-rsa ABIwAAAQEAzRPh9rWfjZ1+7Q369zsBEa7wS1RxzWR [email protected]
Простыми словами, скопируйте local-host:/home/jsmith/.ssh/id_rsa.pub to remote-host:/home/jsmith/.ssh/authorized_keys
4. Дайте соответствующее разрешение каталогу .ssh на удаленном хосте.
[remote-host]$ chmod 755 ~/.ssh
[remote-host]$ chmod 644 ~/.ssh/authorized_keys
5. Войти из локального хоста в удаленный хост с помощью проверки подлинности клавиш SSH, чтобы проверить, работает ли он должным образом.
[local-host]$ <You are on local-host here> [local-host]$ ssh -l jsmith remote-host
Enter passphrase for key '/home/jsmith/.ssh/id_rsa': <Enter your passphrase here>
Last login: Sat Jun 07 2008 23:03:04 -0700 from 192.168.1.102
No mail. [remote-host]$ <You are on remote-host here>
6. Запустите SSH Agent на локальном хосте, чтобы выполнить ssh и scp без необходимости вводить passphrase несколько раз.
Проявите, работает ли агент SSH, если не запустите его, как показано ниже.
[local-host]$ ps -ef | grep ssh-agent
511 9789 9425 0 00:05 pts/1 00:00:00 grep ssh-agent
[local-host]$ ssh-agent $SHELL
[local-host]$ ps -ef | grep ssh-agent
511 9791 9790 0 00:05 ? 00:00:00 ssh-agent /bin/bash
511 9793 9790 0 00:05 pts/1 00:00:00 grep ssh-agent
7. Загрузите частный ключ к агенту SSH на локальном хосте.
[local-host]$ ssh-add
Enter passphrase for /home/jsmith/.ssh/id_rsa: <Enter your passphrase here>
Identity added: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa)
Ниже приведены различные варианты, доступные в ssh-добавить:
- ssh-add <key-file-name>: Load a specific key file.
- ssh-add -l: List all the key loaded in the ssh agent.
- ssh-add -d <key-file-name>: Delete a specificy key from the ssh agent
- ssh-add -D: Delete all key
8. Выполните SSH или SCP удаленного home от локального хоста без ввода пароля.
[local-host]$<You are on local-host here> [local-host]$ ssh -l jsmith remote-host
Last login: Sat Jun 07 2008 23:03:04 -0700 from 192.168.1.102
No mail. <ssh did not ask for passphrase this time> [remote-host]$ <You are on remote-host here>