libssh란 무엇인가 하면, 말 그대로이다. ssh의 여러가지 구현을 라이브러리화 하여 어플리케이션에서 사용할 수 있게 만들어 놓은 것이다. libssh의 홈페이지에 나온 설명을 인용한다.
The ssh library was designed to be used by programmers needing a working SSH implementation by the mean of a library. The complete control of the client is made by the programmer. With libssh, you can remotely execute programs, transfer files, use a secure and transparent tunnel for your remote programs. With its Secure FTP implementation, you can play with remote files easily, without third-party programs others than libcrypto (from openssl).
그러니까, ssh 인증키가 설치된 원격 서버로 별도의 인증 과정 없이 (ssh-agent도 필요없다!) 파일 업로드를 수행하는 예제이다. (물론 소스를 그대로 긁어붙인다고 실행되는 것은 아니다.)
자 위의 예제에서, 2가지에 주목했었다. 결국 보면 같은 문제인데, private key와 public key를 file에서 읽어들인다는 것이다. 별도의 file로 간다면 일단 눈에 보이게 되는 것은 물론이고, 파일을 항상 옮겨야 된다는 불편함이 딱 느껴지지 않는가.
사실 저 key 파일의 내용이란 그저 text로 되어 있는 상황이라 파일을 지정하는 것이 아니라 string으로 입력받을 수 있을 것이라고 생각했지만 libssh상에서는 그런 기능을 지원해주지 않는다. 그래서, 아래와 같이 두가지 함수를 만들었고, key를 string으로 입력이 가능하게 되서 별도의 암호화된 string으로 가공해서 저장하는 것도 가능해졌다.
아참. libssh는 2006년 12월 30일에 버젼 0.2로 마지막 릴리즈가 되었다. libssh2 프로젝트가 있는데, 동일한 사람이 제작한 것 같고, 현재 0.15 버젼으로 2007년 6월 25일날 마지막으로 릴리즈 되었다. 한번 테스트 해 보고 싶다면 libssh2를 추천한다.