IT/System Digging

[ssh][sshpass] sshpass 로 ssh 접속 사용시 주의사항

심량 2022. 6. 8. 17:45

기록용으로 남깁니다..

sshpass 를 사용하지 않았던 경우에는 문제가 되지 않았던 부분이 sshpass 를 사용하면서 아무 오류 없이 ssh 접속이 안되는 문제가 발생하여 원인 조사 중에 삽질을 통해 허탈한 원인을 발견하게 되어 작성합니다.

ssh 를 처음 접속하게 되면 known_hosts 에 추가할 것인지 물어봅니다. 보통 yes 를 선택해서 추가하게 되고 이후로는 sshpass 로 비밀번호를 미리 입력해도 이상이 없습니다.
하지만, 이 과정이 없는 경우 sshpass 로 비밀번호를 미리 넘기게 되면 known_hosts 에 등록 여부를 묻는 화면이 나오지 않게 되어 접속이 되는 듯 하다가 안되는 상황을 겪게 됩니다.

물론 이런 문제를 겪지 않으려면 ssh 실행 옵션에 StrictHostKeyChecking=no 를 추가해주면 해결되는데 직접 입력하다보면 길어서 까먹게 되는 경우도 있습니다. 물론, 한번이라도 등록한 이후에는 이 옵션도 필요 없습니다.

-o StrictHostKeyChecking=no

장비를 신규로 추가하거나 기존 장비 교체시 발생할 수 있는 문제이더군요..

다른 분들은 삽질 줄이시길...

아무 의미없는 sshpass 사용 상태에서의 ssh -vvv 디버그 로그...
known_hosts 에 등록하려면 어떤 과정을 거쳐야하는지 기억만 했어도 도움이 되었을...

접속 안 되는 경우
debug3: put_host_port: [127.0.0.1]:12345
debug3: put_host_port: [localhost]:12345
debug3: hostkeys_foreach: reading file "/home/user/.ssh/known_hosts"
debug1: checking without port identifier
debug3: hostkeys_foreach: reading file "/home/user/.ssh/known_hosts"


접속되는 경우
debug3: put_host_port: [127.0.0.1]:22222
debug3: put_host_port: [localhost]:22222
debug3: hostkeys_foreach: reading file "/home/user/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/user/.ssh/known_hosts:184
debug3: load_hostkeys: loaded 1 keys from [localhost]:22222
debug1: Host '[localhost]:22222' is known and matches the ECDSA host key.
debug1: Found key in /home/user/.ssh/known_hosts:184

그 외 참고한 페이지...(거의 무관)