GNURLOPT_SSH_PUBLIC_KEYFILE(3)

πŸ“¦ version 7.72.0, in nixos 26.05, nixpkgs unstable

hey bestie πŸ’– welcome to the GNURLOPT_SSH_PUBLIC_KEYFILE(3) page β€” it's part of the curl_easy_setopt options squad, and we're about to make public key files for SSH auth make sense, no cap.

πŸŽ€ NAME πŸŽ€

CURLOPT_SSH_PUBLIC_KEYFILE β€” set public key file for SSH auth πŸ’…

✨ SYNOPSIS ✨

okay so first you include this header, then you call it like this:

#include <gnurl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PUBLIC_KEYFILE,
                          char *filename);

πŸ¦‹ DESCRIPTION πŸ¦‹

You pass a char * pointing to a filename for your public key. That's the whole main character move πŸ”₯

If you don't use this option, libcurl defaults to $HOME/.ssh/id_dsa.pub if the HOME environment variable is set, and just "id_dsa.pub" in the current directory if HOME is not set. iykyk 🫢

If NULL (or an empty string) is passed, libcurl will pass no public key to libssh2, which then tries to compute it from the private key. This is known to work with libssh2 1.4.0+ linked against OpenSSL πŸ‘‘

The application does not have to keep the string around after setting this option. So cute, so convenient, periodt πŸ’…

🌸 DEFAULT 🌸

The default is lowkey just NULL 🫢

🌈 PROTOCOLS 🌈

Protocols in the house: SFTP and SCP πŸ¦‹

πŸ“ EXAMPLE πŸ“

okay so here's the example, and it's giving iconic:

CURL *curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file");
  curl_easy_setopt(curl, CURLOPT_SSH_PUBLIC_KEYFILE,
                   "/home/clarkkent/.ssh/id_rsa.pub");
  ret = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}

⭐ AVAILABILITY ⭐

The "" trick was added in 7.26.0 β€” yes, literally the empty-string trick ✨

πŸ’œ RETURN VALUE πŸ’œ

Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. That's the whole vibe check 🫢

🧚 SEE ALSO 🧚


mwah πŸ’‹ β€” this page comes from libcurl 7.37.0, dated 19 Jun 2014, and it's the GNURLOPT_SSH_PUBLIC_KEYFILE(3) manual. bye bestie! 🫢

πŸ“¦ where this page comes from