И так, мы сгенерировали ssh ключи и настало время подключиться к серверу. Первое, что нужно сделать - это пробросить публичный ключи на сервер.
ssh-copy-id -i ~/.ssh/id_rsa.pub user@serverВместо user вы подставляете логин вашего пользователя, а вместо server указываете хост или ip адрес удаленного сервера, к которому вы хотите подключиться. Если у вас ssh работает не по стандартном порту, то нужно дополнительно указать порт.
ssh-copy-id -i ~/.ssh/id_rsa.pub '-p port user@server'Где port - это порт, который слушает ваш ssh сервер
Второе, что нужно сделать перед подключением - это проверить, что ssh агент знает про ваши ключи. Для этого можно воспользоваться следующей командой:
ssh-add -l 2048 SHA256:FrcsHSW/ATlQzIhOGdU8oT/CqNJGeWZWgWYY0XA0yag igor-sverdlov@mail.ru (RSA)Если нужного приватного ssh ключа нет или вы переносили ключи на другой сервер, то можно добавить ключ в агент выполнив данную команду:
ssh-add ~/.ssh/id_rsa Identity added: ~/.ssh/id_rsa (~/.ssh/id_rsa)При этом Вас попросят ввести пароль от ключа. Так же часто при отладке нужно понять какой fingerprint у данного ssh ключа. Для этого можно воспользоваться следующей командой:
ssh-keygen -lf ~/.ssh/id_rsa.pub 2048 SHA256:FrcsHSW/ATlQzIhOGdU8oT/CqNJGeWZWgWYY0XA0yag igor-sverdlov@mail.ru (RSA)
В большинстве случаев бывает удобно прокидывать ssh ключи автоматически на сервер. Для этого нужно создать конфигурационный файл на клиенте.
touch ~/.ssh/config printf "Compression yes\nForwardAgent yes">> ~/.ssh/configЧтобы посмотреть все доступные опции конфига можно выполнить команду:
man ssh_config
Наконец, мы готовы выполнить команду ssh коннекта. Она выглядит так:
ssh user@serverЕсли порт ssh коннекта отличается от стандартного, то его можно задать с помощью опции -p.
ssh -p port user@serverДля проброса графического интерфейса можно использовать опцию -X.
ssh -X user@serverЧасто бывает удобно настроить через конфиг алиасы. Содержимое конфига ~/.ssh/config выглядит примерно так:
Host dev Hostname server User user ForwardX11 yes Compression yes ForwardAgent yesТеперь подключиться к серверу server под пользователем user можно с помощью такой команды
ssh devВыполнить команду на удаленном сервере можно так:
ssh user@server command Thu 06 Jan 2022 03:11:12 PM UTCВ данном примере использовалась команда date
ssh -f -N -L local_port:endpoint_ip:endpoint_port user@server -p ssh_port # example ssh -f -N -L 3031:127.0.0.1:8080 217.14.247.114 -p 522Где: