- Easiest way to copy ssh keys to another machine?
- 8 Answers 8
- Как конвертировать ключи SSH из формата PuTTY в формат OpenSSH
- Как извлечь ключи SSH из .ppk
- Как установить PuTTY в Linux
- Как конвертировать ключи PuTTY (.ppk) в формат OpenSSH
- Извлечение приватного ключа с помощью PuTTYgen в графическом пользовательском интерфейсе
- How to export my SSH’s public key?
- 3 Answers 3
Easiest way to copy ssh keys to another machine?
I am lazy at home and use password authentication for my home machines. I am ready to move to key based authentication. There are many options on the web on how to do this, including catting then sshing the key over, scping the key over directly, etc. I am looking for the easiest and recommended way to copy a key over, hopefully there is a convenience wrapper somewhere in the Ubuntu ssh package? I’m already aware on how to shut off password logins.
8 Answers 8
The ssh-copy-id command (in the openssh-client package and installed by default) does exactly this:
ssh-copy-id user@hostname.example.com
copies the public key of your default identity (use -i identity_file for other identities) to the remote host.
The default identity is your «standard» ssh key. It consists of two files (public and private key) in your ~/.ssh directory, normally named identity , id_rsa , id_dsa , id_ecdsa or id_ed25519 (and the same with .pub ), depending on the type of key. If you did not create more than one ssh key, you do not have to worry about specifying the identity, ssh-copy-id will just pick it automatically.
In case you do not have an identity, you can generate one with the tool ssh-keygen .
In addition, if the server uses a port different from the default one ( 22 ) you should use quotation marks in this way (source):
ssh-copy-id "user@hostname.example.com -p "
Как конвертировать ключи SSH из формата PuTTY в формат OpenSSH
PuTTY — это популярная программа для подключения к удалённым компьютерам по протоколам Telnet, SSH, Rlogin, Serial и Raw. Особенно широко эта программа распространена на Windows, так как раньше ей не было альтернатив на этой ОС.
В пакет PuTTY входит программа PuTTYgen, которая позволяет генерировать пару публичный и приватный ключ SSH. Для чего нужны эти ключи и как ими пользоваться смотрите в разделе «Вход в SSH без пароля (с использованием файлов ключей)».
Файлы, сгенерированные в PuTTYgen, имеют расширение .ppk и примерно следующую структуру:
Как извлечь ключи SSH из .ppk
Может понадобится извлечь приватный ключ, или публичный ключ или сразу оба ключа из файла .ppk. Это можно сделать в командной строке с помощью улиты PuTTYgen или в графическом интерфейсе. Данная инструкция покажет как это сделать. Описанные способы применимы для Windows и Linux.
Начать нужно с установки PuTTY, если вы ещё этого не сделали
Как установить PuTTY в Linux
В Debian, Linux Mint, Kali Linux, Ubuntu и их производные выполните команду:
В дистрибутивах на основе RPM:
В Arch Llinux, BlackArch и их производных:
Установите Homebrew, затем выполните:
Как конвертировать ключи PuTTY (.ppk) в формат OpenSSH
Поместите свои ключи в какой-нибудь каталог, например ваша домашняя папка. Теперь преобразуйте ключи PPK в пары ключей SSH.
Чтобы сгенерировать закрытый (приватный) ключ:
cd ~ puttygen id_dsa.ppk -O private-openssh -o id_rsa
и чтобы сгенерировать открытый (публичный ключ):
puttygen id_dsa.ppk -O public-openssh -o id_rsa.pub
Переместите эти ключи в ~/.ssh и убедитесь, что правильно установлены разрешения на приватный ключ:
mkdir -p ~/.ssh mv -i ~/id_dsa* ~/.ssh chmod 600 ~/.ssh/id_rsa chmod 666 ~/.ssh/id_rsa.pub
Извлечение приватного ключа с помощью PuTTYgen в графическом пользовательском интерфейсе
Откройте PuTTYgen, нажмите кнопку «Load» и выберите файл .ppk с ключами.
Вы сразу увидите публичный ключ SSH, который вы можете скопировать и вставить в файл.
Теперь в меню перейдите в «Conversions» → «Export OpenSSH key» и сохраните приватный ключ.
Скопируйте ваш приватный ключ в файл ~/.ssh/id_dsa (или id_rsa).
Вы могли скопировать публичный ключ, как это показано на скриншоте выше — он размещён в области, отмеченной цифрой 2. Но вы также можете конвертировать его используя утилиту ssh-keygen.
Опция -y прочитает файл OpenSSH формата с приватным ключом и напечатает в стандартный вывод публичный ключ OpenSSH.
Также с помощью опции -f нужно указать путь до приватного ключа, из которого будет извлечён соответствующий ему публичный ключ:
ssh-keygen -y -f ПРИВАТНЫЙ-КЛЮЧ
Например, приватный ключ помещён в файл id_rsa, тогда команда извлечения из него публичного ключа следующая:
Вы можете столкнуться с ошибкой:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for 'id_rsa' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "id_rsa": bad permissions
Она означает, что приватный ключ доступен для чтения кому угодно и программа ssh-keygen отказывается работать с ним по этой причине. Чтобы исправить эту ошибку, просто установите на файл с приватным ключом права доступа 600:
How to export my SSH’s public key?
I need to set up ssh sessions between two servers and do not want to make the script fill in username and password everytime. However I cannot seem to find out where the SSH server is using its config from.
bash-2.05# ssh -V Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f
I have certificate files file in both /etc/ssh/ and ~/.ssh/. I can only find one config file for SSH and it is in /etc/ssh/ssh_config, but it contains no data (everything is commented out). Does anyone know how I can find out where the certificate is stored, or how I can export it so I can transfer it to the other server? I was hoping the config files would give me the answer, but they provide little to no help.
3 Answers 3
Assuming you mean public-key-authentication on a user-level by ‘certificate’ and you created them by using ssh-keygen with the default location, they should be at place where your ssh-client will find them. The key consists of a private part, usually stored in ~/.ssh/id_rsa and a public part in ~/.ssh/id_rsa.pub . The last one will have to be transferred to the remote server, usually to ~/.ssh/authorized_keys .
The easiest way to transfer the key to another server is using ssh-copy-id with the target machine. If you used the default location on creation, this key will automatically be used.
Note, that /etc/ssh/ssh_config is for the client. On the server you will have to look at /etc/ssh/sshd_config . In your setup both servers will serve as both ssh-client and ssh-server, so you would have to look at both files at both ends.
Got it working. Thank you. Only thing I had to do extra was on my client I had to specify the -i (identity) param pointing to the private key.
You need to find the ssh public key for the user that will be the login user for the script.
For example, If I have serverA and serverB, I’d do the following.
sudo adduser scriptrunner . sudo su - scriptrunner ssh-keygen . cat .ssh/id_rsa.pub ssh-rsa AAAAB3Nza. scriptrunner@serverA
then do something similar on ServerB
Then on serverA, squirt the public key of serverB’s scriptrunner user into /home/scriptrunner/.ssh/authorized_keys
and do the opposite on serverB (using serverA’s scriptrunner user on into authorized_keys in /home/scriptrunner/.ssh/authorized_keys on serverB)
Then you should be able to do ssh scriptrunner@serverA from serverB using the key, and vice versa.
You can also use ssh-copy-id to do the authorized_keys bit.
In order to establish an ssh connection with public key authentication, the user who initiates the connection needs to have a public/private key pair. On many linux distributions these keys are not generated by default and have to be generated by the user himself (or by the administrator on their behalf).
If you are logged in as the relevant user, go to your home directory and run
Accept all the defaults, and a new key pair will be created in ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub. Now copy the public key and paste it into the ~/.ssh/authorized_keys file of the target user account on the target machine. Then enable public key authentication on the target machine (in /etc/ssh/sshd_config) and you should be good to go.
NOTE: there are many possible pitfalls in this process when you do it for the first time. All the permissions have to be correct, and the files have to be in the right places. It’s probably best if you follow a HowTo like this one.