Как я сказал ранее, к аутентификации по публичным ключам нужно подходить ответственно. Ставить пустой passphrase грозит компрометацией ваших удалённых хостов. А каждый раз вводить passphrase не всегда возможно. Для того, чтобы достигнуть разумного компромиса, используется
Генерируем ключ (для простоты я предварительно удалил все ключи, так как некоторые были без passphrase). Будем использовать DSA, любители RSA могут посмотреть разницу в предыдущей статье. Обязательно указываем хорошую passphrase:
$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/Users/ctrld/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/ctrld/.ssh/id_dsa. Your public key has been saved in /Users/ctrld/.ssh/id_dsa.pub. The key fingerprint is: 12:1b:02:27:8b:70:44:0b:2c:3f:9c:4b:d0:ef:d9:5e ctrld@129-149-179-94.pool.ukrtel.net The key's randomart image is: +--[ DSA 1024]----+ |++* . | |+=.* | |o+oo. o | | * .. + | | . + oo S | | . o ..E | | . . | | . | | | +-----------------+
Делаем по аналогии с предыдущей статьёй.
Копируем ключ
$ cat ~/.ssh/id_dsa.pub ssh-dss AAAAB3...60QnQ== ctrld@hostname.local
Идём на удалённую машину и записываем этот публичный ключ в ~/.ssh/authorized_keys2 (желательно удалить из него ваши старые ключи):
$ vi ~/.ssh/authorized_keys2 $ chmod 600 ~/.ssh/authorized_keys2
Выходим, проверяем работу. А вот теперь удивляемся :-) ssh-agent и так запущен на Mac OS X, и мы получаем окошко, в котором вводим ключ, причём его можно запомнить в keychain:
Теперь, несмотря на то, что ваш ключ использует passphrase, она не будет запрашиваться. Я не могу сейчас ответить, сколько именно времени он не будет запрашиваться.
Если же вы уходите, но по какой-то причине даёте поработать кому-то на вашем Маке, да ещё под вашим account’ом (ладно, пример неудачный, этот кто-то может попытаться посмотреть ваш keychain, и если он не запаролен, то узнает ваш ключ), то можете заблокировать доступ к ssh-agent, и при попытке соединения будет снова запрашиваться passphrase.
Блокировка (нужно указать любой пароль):
$ ssh-add -x Enter lock password: Again: Agent locked.
Разблокировка (с запросом установленного пароля)
$ ssh-add -X Enter lock password: Agent unlocked.
Если вдруг ssh-agent не запущен, то его можно запустить самому (детальнее – в “
$ eval `ssh-agent`
Перечень всех добавленных ключей:
$ ssh-add -l 1024 12:1b:02:27:8b:70:44:0b:2c:3f:9c:4b:d0:ef:d9:5e /Users/ctrld/.ssh/id_dsa (DSA)
Ручное добавление ключей из ~/.ssh:
$ ssh-add Enter passphrase for /Users/ctrld/.ssh/id_dsa: Identity added: /Users/ctrld/.ssh/id_dsa (/Users/ctrld/.ssh/id_dsa)