Termux에서 바이오메트릭으로 SSH 로그인하기

Termux에서 SSH 서버로 로그인하기 위해서는 ssh-add를 써서 SSH 키를 추가해 줘야 된다. 그런데 키를 추가할 때 비밀문구를 입력해야 하고 시간이 지나면 프로세스가 죽으면서 다음에 로그인할 때 또 다시 입력해야 하는 불편함이 있다. Tergent는 안드로이드의 키 저장소를 사용해서 바이오메트릭으로 SSH 키 추가를 가능하게 해 준다.

우선 패키지를 설치한다.

pkg install tergent

키를 생성한다. KEY_NAME은 원하는 키이름으로 바꾼다. Validity는 10초로 설정했는데 키를 추가한지 10초가 지나면 다시 추가해야 된다. 0으로 설정하면 키가 영구적으로 추가된다.

/data/data/com.termux/files/usr/libexec/termux-api Keystore \
  -e command generate \
  -e alias KEY_NAME \
  -e algorithm EC \
  --ei purposes 12 \
  --esa digests NONE,SHA-1,SHA-256,SHA-384,SHA-512 \
  -e curve secp521r1 \
  --ei validity 10

키가 생성되었는지 확인한다.

termux-keystore list

이제 퍼블릭 키 파일을 생성한다.

ssh-keygen -D $PREFIX/lib/libtergent.so > ~/.ssh/id_ecdsa-KEY_NAME.pub 

이렇게 생성된 퍼블릭 키를 SSH 서버로 복사한 후 ~/.ssh/authorized_keys에 추가하면 된다. 이제 SSH 인증이 필요할 때마다 자동으로 바이오메트릭 화면이 뜬다. 그런데 Termux:API Error “Error in ResultReturner”가 먼저 뜨기 때문에 이를 방지하기 위해서 바이오메트릭을 직접 실행할 수 있다. 이렇게 하면 바이오메트릭은 매번 실행되고 10초 후에 키는 비활성화된다.

이제 jq를 설치한다.

pkg install jq

다음과 같은 명령을 스크립트 맨앞에 추가하면 된다.

termux-fingerprint | jq -e '.auth_result | contains("AUTH_RESULT_SUCCESS")' || exit

참고문헌

이 칸을 비워 두세요.